CNN 이미지 분류 기본 패턴
이미지 분류를 CNN 패턴으로 풀어내는 최소 가이드와 적용 조건 정리
Posted
By okorion
CNN 이미지 분류 기본 패턴
이 프로젝트는 CNN을 특정 모델 구조가 아니라
이미지 문제를 푸는 방식으로 정리하기 위한 기준점이다.
CIFAR-10은 목적이 아니라 패턴을 드러내는 최소 단위의 예제다.
CNN이 필요한 문제의 조건
언제 CNN을 써야 하는가
- 입력 데이터가 공간적 구조(위치·이웃 관계)를 가진다
- 픽셀 하나하나보다 국소 패턴의 조합이 의미를 만든다
- 특징을 사람이 정의하기 어렵다
대표 신호:
- 이미지
- 영상 프레임
- 공간 격자 데이터
언제는 과한가
- 입력이 이미 잘 정리된 수치 벡터일 때
- 데이터 양이 극히 적을 때
- 위치 정보가 의미 없을 때
👉 “이 데이터에 위치 개념이 중요한가?”
이 질문에 예면 CNN이다.
Conv / Pooling / FC의 역할 요약
각 레이어의 존재 이유
| 레이어 | 역할 | 존재 이유 |
|---|---|---|
| Convolution | 국소 패턴 추출 | 공간 구조 보존 |
| Pooling | 정보 압축 | 위치 변화에 둔감 |
| Fully Connected | 결정 | 패턴 종합 |
직관적 비유
- Conv: 작은 창으로 이미지를 훑으며 특징 메모
- Pooling: 중요한 메모만 남기고 요약
- FC: 요약된 메모를 보고 최종 판단
👉 CNN은 “보면서 → 요약하고 → 결정하는 파이프라인”이다.
CIFAR-10 데이터 특성
해상도
- 32 × 32 픽셀
- 디테일 부족, 전체 윤곽 위주
클래스 특성
- 10개 클래스
- 서로 시각적으로 겹치는 범주 다수 (truck vs automobile 등)
모델 설계에 미치는 영향
- 너무 깊은 모델은 이득 없음
- 초기 Conv에서 정보 손실에 특히 민감
- 단순하지만 반복 가능한 구조가 적합
👉 CIFAR-10은 “CNN 기본기를 시험하는 데이터”다.
데이터 증강을 쓰는 이유
데이터 관점 설명
- 실제 세계에서는 물체의 위치·각도·방향이 고정되지 않는다
- 원본 데이터만 쓰면 모델은 “정자세 이미지”만 기억한다
증강의 역할
- 데이터 수 증가가 목적이 아니다
- 같은 대상의 다양한 관측 사례를 강제로 보여주는 것
👉 증강은 성능 트릭이 아니라
“이 데이터는 이렇게도 보일 수 있다”는 세계관 주입이다.
학습 결과 해석 시 확인할 지점
accuracy 외에 볼 것
| 관점 | 확인 이유 |
|---|---|
| 학습 vs 검증 곡선 | 과적합 신호 |
| 클래스별 성능 편차 | 데이터 불균형 |
| 오분류 패턴 | 모델이 헷갈리는 지점 |
핵심 질문
- 어떤 클래스를 지속적으로 틀리는가?
- 그 오차가 데이터 한계인지 모델 한계인지?
👉 CNN 결과 해석은
“얼마나 맞췄나”보다 “왜 틀렸나”다.
CNN 기본 구조 의사코드
1
2
3
4
5
6
7
8
input_image
→ conv_block
→ pooling
→ conv_block
→ pooling
→ flatten
→ fully_connected
→ class_prediction
하이퍼파라미터는 중요하지 않다.
이 흐름 자체가 CNN 이미지 분류의 최소 패턴이다.
