Adventure Time - Finn 3
본문 바로가기
AI/ML

CNN : Convolutional Neural Network

by hyun9_9 2026. 3. 29.

지금까지 배운 Fully Connected Network는 이미지를 1차원으로 펼쳐서(Flatten) 학습했습니다.
CNN은 이미지의 공간적 구조를 유지하면서 특징을 추출하는 방법입니다.

CNN의 전체 구조는 다음과 같습니다.

입력 이미지 → Convolution → ReLU → Pooling → ... → Flatten → Fully Connected → 출력

1. Convolution (컨볼루션)

개념

필터(커널)를 입력 이미지 위에 슬라이딩하며 내적(Dot Product) 연산을 수행하여 특징 맵(Feature Map)을 생성합니다.

입력 이미지          필터(3×3)         특징 맵
┌─────────────┐     ┌───────┐         ┌─────────┐
│ 1  2  3  4  │     │ 1  0  │         │         │
│ 5  6  7  8  │  *  │ 0  1  │   →     │  특징   │
│ 9  10 11 12 │     │ -1  0 │         │  맵     │
│ 13 14 15 16 │     └───────┘         └─────────┘
└─────────────┘

필터가 이미지 위를 슬라이딩하면서 각 위치에서 Dot Product를 수행합니다.
이 과정에서 이미지의 엣지, 곡선, 텍스처 같은 특징들이 추출됩니다.

채널 수 규칙

입력 채널 수 = 필터 채널 수
출력 채널 수 = 사용하는 필터 개수

예를 들어 RGB 이미지(채널 3)에 필터 32개를 사용하면:

입력 : [N, 28, 28, 3]
필터 : [3, 3, 3, 32]   ← [높이, 너비, 입력채널, 필터개수]
출력 : [N, 28, 28, 32]

Stride (스트라이드)

필터를 얼마나 건너뛰며 이동할지 설정합니다.

Stride = 1          Stride = 2
□□□□□□             □□□□□□
□■■■□□    →   1칸  □■■■□□    →   2칸
□□□□□□             □□□□□□
  • Stride가 클수록 출력 특징 맵의 크기가 작아집니다

Padding (패딩)

입력 이미지 가장자리에 0을 채워 출력 크기가 줄어드는 것을 방지합니다.

SAME 패딩 (0 추가)     VALID 패딩 (없음)
┌─────────────┐       ┌─────────┐
│ 0  0  0  0  │       │         │
│ 0 [이미지]0 │       │  이미지 │  → 크기 줄어듦
│ 0  0  0  0  │       │         │
└─────────────┘       └─────────┘
출력 크기 유지         출력 크기 감소

주로 SAME 패딩을 사용해 입력과 출력의 크기를 동일하게 유지합니다.


2. Pooling (풀링)

개념

이미지의 가로, 세로 크기를 줄여 중요한 특징만 남기는 서브 샘플링(Sub-sampling) 역할을 합니다.

Max Pooling (맥스 풀링)

필터 내에서 가장 큰 값을 선택합니다.
특징이 가장 강하게 나타나는 부분을 추출합니다.

입력 (4×4)           Max Pooling (2×2)   출력 (2×2)
┌────────────┐                           ┌────────┐
│  1   3  2  4│       최댓값 선택   →    │  6  8  │
│  5   6  1  2│                          │ 12 16  │
│  4   2  9  7│                          └────────┘
│  8  12  3 16│
└────────────┘

Average Pooling (에버리지 풀링)

필터 내의 모든 값을 평균 냅니다.
값들이 희석되는 단점이 있어 주로 Max Pooling을 사용합니다.


3. 전체 구조

입력 이미지 [N, 28, 28, 1]
    ↓
Convolution → ReLU    특징 추출
    ↓
Pooling               크기 축소
    ↓
Convolution → ReLU    더 깊은 특징 추출
    ↓
Pooling               크기 축소
    ↓
Flatten               [N, H, W, C] → [N, H*W*C]
    ↓
Fully Connected       분류
    ↓
출력 (클래스 수)

앞부분(Convolution + Pooling)에서 이미지의 특징을 추출하고,
뒷부분(Fully Connected)에서 추출된 특징을 바탕으로 분류합니다.


Fully Connected와 CNN 비교

Fully Connected CNN

입력 처리 이미지를 1차원으로 펼침 이미지의 공간 구조 유지
특징 추출 모든 픽셀을 동등하게 처리 필터로 지역적 특징 추출
파라미터 수 많음 적음 (필터 공유)
이미지 분류 비교적 낮은 성능 높은 성능

정리

개념 설명

Convolution 필터를 슬라이딩하며 특징 맵 생성
Stride 필터 이동 간격
Padding 가장자리에 0을 채워 출력 크기 유지
Feature Map Convolution 연산의 결과물
Max Pooling 필터 내 최댓값 추출, 크기 축소
Fully Connected 추출된 특징으로 최종 분류

CNN은 이미지 분류, 객체 감지, 얼굴 인식 등 다양한 컴퓨터 비전 분야에서 핵심적으로 사용됩니다. 🚀