AI/사이드프로젝트

Aerial Cactus Identification (CNN 초기 모델)

ksc036 2026. 5. 17. 00:28

https://www.kaggle.com/competitions/aerial-cactus-identification

 

Aerial Cactus Identification

Determine whether an image contains a columnar cactus

www.kaggle.com

kaggle에 선인장 구분 문제 ( Aerial Cactus Identification) 를 Lenet 기반 모델로 구현하면 풀어보았다. 

 

이미지 데이터 기본 정보

Train: 17,500장
Test: 4,000장
이미지 크기: 32 x 32
채널: RGB / 흑백 여부
라벨 컬럼: has_cactus
클래스: 0 = 선인장 없음, 1 = 선인장 있음

선인장 있음
선인장 없음

클래스 분포

has_cactus = 1: 13,136개, 약 75%
has_cactus = 0: 4,364개, 약 25%

 

응답은 선인장이 있는지 없는지 이진분류 유형이였고 

선인장이 있는비율이 약 25%였다. 

 

사용한 모델 구조

 

Input: 32x32x3
Conv2D
Activation
Pooling
Conv2D
Activation
Pooling
Flatten
Dense
Output: 1 node + Sigmoid

학습 설정값

Train/Validation split 비율  9:1
Batch size 32
Epoch 수10
Optimizer : Adam
Learning rate : 0.001
Loss function : CrossEntropyLoss


평가지표
이미지 정규화 여부 : x
Data augmentation : x

 

결과값

Validation Accuracy: 0.9811
Validation Loss: 0.0605
Validation ROC-AUC: 0.997

 

 

LeNet은 비교적 단순한 CNN 구조이지만, 입력 이미지가 32x32로 작고 분류 대상이 선인장 유무로 명확하기 때문에 기본적인 특징 추출만으로도 어느 정도 성능을 낼 수 있었다.

다만 데이터가 선인장 있음 쪽으로 약 75% 치우쳐 있기 때문에 Accuracy만으로 모델을 평가하면 부족하다. 따라서 ROC-AUC, Precision, Recall을 함께 확인하는 것이 더 적절하다.