#10 of AI and Deep Learning - CNN 각 Layer 관련 상세 설명

주요 용어 기본 개념

Convolution (합성곱)

합성곱 처리 방식
  • 미리 지정한 필터 및 커널 사이즈에 맞게 원본 이미지의 RGB 수치를 집약하는 과정
  • 명칭 그대로 필터 크기에 대응하는 각 (행, 열) 의 값을 element-wise 곱하여 합산
  • 위 예시 이미지 기준
    • Convolved Feature 가 Convolution Layer 를 통과한 뒤 출력값
    • 1x1 + 0x0 + 0x1 + 1x0 + 1x1 + 0x0 + 1x1 + 1x0 + 1x1 = 4
  • 이미지의 특징을 추출하기 위한 필연적 과정

Channel (채널)

  • 이미지가 가지고 있는 픽셀 수치를 어떠한 방식으로 표현할 것인지 정의
    • RGB
      • 1개의 픽셀을 3개의 실수로 표현한 3차원 데이터 = 3개 채널
      • Red / Green / Blue 가 각각 1개 채널
    • 흑백
      • 1개의 픽셀을 2개의 실수로 표현한 2차원 데이터 = 1개 채널
    • shape 결정
      • 너비 = 50 / 높이 = 50 / 컬러 이미지의 경우
      • (50, 50, 3)

Filter (필터) w/ Stride

  • 커널과 동일한 개념
  • 주로 2차원 정사각 행렬로 표현
  • 역할순서
    • 이미지의 각 채널에 대해 합성곱 진행
    • 채널별 합성곱 결과를 합산하여 Feature Map 구성
    • 구성된 각 채널별 Feature Map 을 다시 합산
    • 최종 1개의 Feature Map 도출
  • Stride
    • 지정된 간격
    • 2 -> 2칸씩 오른쪽으로 이동 / 마지막 이동이면 다음 줄로 넘어가서 반복
  • 1개의 Convolution Layer 는 n개의 필터를 가질 수 있음
    • 즉, 필터가 n개라면 최종 도출되는 Feature Map 도 n개

Padding (패딩)

패딩 처리 예시

  • Convolution Layer 를 통과하면 기본적으로 출력 (Feature Map) 크기 < 입력 데이터
  • 크기가 감소하는 것을 방지하는 역할
    • 통상 줄어든 영역을 0으로 채워 넣음
    • 패딩된 영역을 CNN은 이미지의 외각 부분이라고 인식할 수 있게 됨
  • 종류
    • valid = 패딩 X
      • 사이즈가 맞지 않으면 가장 우측 열 및 가장 하단 행 drop
    • same = 입력 사이즈에 맞춰 패딩 O

Pooling (풀링)

Pooling 유형에 따른 처리 방식

  • Convolution Layer 를 거쳐 탄생한 출력 데이터를 다시 입력으로 받음
  • 목적
    • 크기 조절
    • 이미지의 주요 특징을 보다 강조하기 위함
  • 통상, stride 크기 = pooling 크기
  • 종류
    • Max Pooling -> CNN에서는 주로 Max Pooling 선호
      • 영역에 있는 값들 중 최대값만 선별
    • Average Pooling
      • 영역에 있는 값들의 평균값 활용
  • Pooling Layer 를 거치면 Convolution Layer 출력 데이터보다 크기가 작아짐

소스 예시

# 1
model.add(Conv2D(32, (3, 3), padding="same", input_shape=X_train.shape[1:], activation="relu"))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

# 2
model.add(Conv2D(64, (3, 3), padding="same", activation="relu"))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

References




댓글