본문 바로가기
인공지능

CNN

by 3in9u 2025. 3. 21.

📌 CNN에서 이미지 데이터 형태는?

이미지 데이터는 보통 다음과 같은 3차원 형태를 가짐:

(높이, 너비, 채널)=(H,W,C)\text{(높이, 너비, 채널)} = (H, W, C)

구성 요소의미예시
높이 (Height) 이미지 세로 크기 28, 64, 224 등
너비 (Width) 이미지 가로 크기 28, 64, 224 등
채널 (Channel) 색상 정보 흑백: 1, RGB: 3

🎯 예시 시작: 28x28 RGB 이미지 입력

입력 이미지 크기: (28, 28, 3) → RGB 이미지 (예: 컬러 손글씨 이미지)


🧱 [1단계] 합성곱 층 (Conv Layer)

💡 역할:

  • **필터(kernel)**를 통해 특징 추출 (윤곽선, 패턴 등)
  • 필터는 슬라이딩하면서 이미지의 작은 부분만 본다

📌 적용 예시:

  • 입력: (28, 28, 3)
  • 필터 수: 32개, 필터 크기: 3x3, stride=1, padding='same'

채널이 3 → 32로 증가 (특징 맵 32개 생성됨)
공간 크기는 동일 (padding='same'일 경우)

🧱 [2단계] 풀링 층 (Pooling Layer)

💡 역할:

  • 특징 맵의 공간 크기를 줄임(Downsampling)
  • 연산량 줄이고, 위치에 덜 민감하게 함

📌 Max Pooling 예시:

  • 입력: (28, 28, 32)
  • 풀링 크기: 2x2, stride=2

채널 수는 그대로 (32)
가로/세로 크기 절반으로 감소 (연산량 감소)

🧱 [3단계] 다시 Conv + Pooling 반복 (선택)

추가 Conv → (14, 14, 64)

Pooling → (7, 7, 64)

→ 보통 이 과정을 여러 번 반복해서 깊은 특징 추출


🧱 [4단계] Flatten + Fully Connected (FC)

Flatten

  • 입력: (7, 7, 64)
  • Flatten → (7 × 7 × 64) = (3136,)

CNN 출력을 1차원 벡터로 변환


FC + Softmax 출력

  • 예: 분류 대상이 10개일 경우 (ex: 숫자 0~9)
  • 출력층 shape: (10,)
    → 각각의 값은 클래스별 확률

📊 전체 구조 흐름 + Shape 변화 예시

단계설명출력 크기 예시
입력 이미지 RGB 이미지 (28, 28, 3)
Conv1 (필터 32개) 특징 추출 (28, 28, 32)
MaxPooling1 다운샘플링 (14, 14, 32)
Conv2 (필터 64개) 더 깊은 특징 추출 (14, 14, 64)
MaxPooling2 다운샘플링 (7, 7, 64)
Flatten FC 입력용으로 변환 (3136,)
FC Layer 은닉층 (128,)
Output Layer 분류 결과 (10,)

'인공지능' 카테고리의 다른 글

RNN (Recurrent Neural Network)  (0) 2025.03.27
AlexNet  (0) 2025.03.21
다중 분류 (Multi-class Classification)  (0) 2025.03.21
이진 분류(Binary Classification) 모델 정리  (0) 2025.03.21
선형 회귀 (Linear Regression)  (0) 2025.03.21