CNN — 이미지 인식
이미지에서 특성을 자동으로 추출하는 신경망 — 합성곱 연산이 핵심
1. 왜 CNN인가
일반 MLP로 이미지를 처리하면 파라미터가 폭발함. 224×224 컬러 이미지 = 150,528개 입력. 은닉층 1,000개면 가중치가 1.5억 개.
CNN은 **합성곱(Convolution)**으로 이 문제를 해결:
- 파라미터 공유: 같은 필터를 이미지 전체에 적용
- 지역적 연결: 전체가 아닌 작은 영역(수용 영역)만 관찰
- 공간 정보 보존: 2D 구조를 유지
2. 핵심 구성 요소
2.1 합성곱 레이어 (Convolution)
| 항목 | 설명 |
|---|---|
| 필터(커널) | 보통 3×3 또는 5×5 크기. 이미지 위를 슬라이딩하며 특성 추출 |
| 특성 맵 | 필터 적용 결과. 필터 수 = 출력 채널 수 |
| 스트라이드 | 필터 이동 간격. 1이면 1칸씩, 2면 크기 절반 |
| 패딩 | 입력 가장자리에 0을 채워 크기 유지 |
얕은 레이어: 엣지, 색상 같은 저수준 특성 감지 깊은 레이어: 얼굴, 바퀴 같은 고수준 특성 감지
2.2 풀링 레이어 (Pooling)
공간 크기를 줄여 계산량 감소 + 위치 불변성 확보.
| 풀링 | 동작 | 사용 |
|---|---|---|
| Max Pooling | 영역의 최댓값 | ✅ 가장 많이 사용 |
| Average Pooling | 영역의 평균값 | |
| Global Average Pooling | 전체 채널을 하나의 값으로 | ✅ 최근 아키텍처에서 FC 대체 |
2.3 전체 구조
3. 주요 아키텍처 진화
| 아키텍처 | 핵심 기여 | 깊이 |
|---|---|---|
| LeNet-5 | CNN의 시작 (필기 인식) | 5 |
| AlexNet | GPU 학습, ReLU, Dropout. ImageNet 혁명 | 8 |
| VGG | 3×3 필터만 사용. 깊이의 중요성 증명 | 16/19 |
| GoogLeNet | Inception 모듈 (다양한 크기 필터 병렬) | 22 |
| ResNet | Residual Connection(잔차 연결). 수백 레이어 가능 | 50/101/152 |
| EfficientNet | 깊이/너비/해상도를 동시 스케일링 | 가변 |
ResNet의 핵심 — Residual Connection
기존: x → F(x) (깊어지면 기울기 소실)
ResNet: x → F(x) + x (입력을 출력에 직접 더함)
"학습할 것이 없으면 F(x)=0이 되어 x가 그대로 통과" → 깊은 네트워크도 안정적 학습 가능. Transformer의 Residual Connection도 이 아이디어.
4. Transfer Learning
사전학습된 CNN(ImageNet 1,400만 이미지)을 가져와 새로운 태스크에 적용하는 기법.
| 전략 | 방법 | 데이터 양 |
|---|---|---|
| Feature Extraction | 사전학습 모델 고정, 마지막 레이어만 교체 | 적음 |
| Fine-tuning | 일부 또는 전체 레이어를 재학습 | 중간~많음 |
💡 소량의 데이터로도 높은 성능을 얻을 수 있어 실전에서 가장 많이 사용되는 패턴. ImageNet으로 학습된 ResNet/EfficientNet을 기반으로 의료 영상, 불량품 탐지 등에 적용.
5. Object Detection 개요
분류(이것이 무엇?)를 넘어 **위치(어디에 있는가?)**까지 탐지.
| 모델 | 방식 | 특징 |
|---|---|---|
| Faster R-CNN | 2-stage (영역 제안 → 분류) | 정확, 느림 |
| YOLO | 1-stage (한 번에 탐지) | ✅ 빠름, 실시간 |
| SSD | 1-stage | 중간 |