CNN(Convolutional Neural Network)은 이미지·영상 처리에 특화된 딥러닝 아키텍처다. 합성곱(Convolution) 연산으로 공간적 특징을 자동 추출하며, 이미지 분류·객체 탐지·세분화의 표준 모델이다.
핵심 구성 요소
| 레이어 | 역할 |
|---|
| Convolutional | 필터로 특징 맵 추출 (엣지, 텍스처 등) |
| Activation (ReLU) | 비선형성 추가 |
| Pooling | 특징 맵 크기 축소, 이동 불변성 |
| Fully Connected | 최종 분류 |
합성곱 연산
입력 (5×5): 필터 (3×3): 출력 특징 맵 (3×3):
1 1 1 0 0 1 0 1 4 3 4
0 1 1 1 0 × 0 1 0 = 2 4 3
0 0 1 1 1 1 0 1 2 3 4
0 0 1 1 0
0 1 1 0 0
각 위치에서 필터와 입력의 원소별 곱합(dot product)
python
import torch.nn as nn
class SimpleCNN(nn.Module):
def __init__(self):
super().__init__()
self.conv1 = nn.Conv2d(1, 32, kernel_size=3) # 1채널→32채널
self.conv2 = nn.Conv2d(32, 64, kernel_size=3)
self.pool = nn.MaxPool2d(2, 2)
self.fc1 = nn.Linear(64 * 5 * 5, 128)
self.fc2 = nn.Linear(128, 10)
def forward(self, x):
x = self.pool(nn.functional.relu(self.conv1(x)))
x = self.pool(nn.functional.relu(self.conv2(x)))
x = x.view(-1, 64 * 5 * 5)
x = nn.functional.relu(self.fc1(x))
return self.fc2(x)
관련 개념
- •딥러닝 — CNN의 상위 개념
- •컴퓨터 비전 — CNN의 주요 응용 분야
- •전이 학습 — 사전 학습된 CNN 재사용
참고문헌
- •LeCun et al. (1998). Gradient-Based Learning Applied to Document Recognition
- •He et al. (2015). Deep Residual Learning (ResNet 논문)