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을 함께 확인하는 것이 더 적절하다.