machine_learning CNN

C.N.N

  • Convolutional Neural Network
  • 이미지 공간의 정보를 유지한 상태로 학습이 가능한 모델

CNN의 주요 용어 정리

  • Convolution(합성곱)
    • 원본 이미지와 필터의 곱
  • 채널(Channel)
    • 이미지 픽셀 1개 = 하나의 실수(scalar)
    • 컬러사진: 3차원 * 높이 150 * 길이 250 = shape(150 * 250 * 3)
    • 흑백사진: 1차원 * 높이 150 * 길이 250 = shape(150 * 250 * 1)
  • 필터(Filter, kernel)
    • 1개의 filter = 1개의 feature map
    • convolution layer에 n개의 filter필터가 적용된다면 출력데이터는 n개의 채널을 갖습니다.
  • 커널(Kernel)
  • 스트라이드(Strid)
    • 필터가 순회하는 지정된 간격
  • 패딩(Padding)
    • Padding을 통해서 Convolution 레이어의 출력 데이터의 사이즈를 조절하는 기능이 외에, 외각을 “0”값으로 둘러싸는 특징으로 부터 인공 신경망이 이미지의 외각을 인식하는 학습 효과도 있습니다.
  • 피처 맵(Feature Map)
  • 액티베이션 맵(Activation Map)
  • 풀링(Pooling) 레이어
    • 일반적으로 Pooing 크기와 Stride를 같은 크기로 설정하여 모든 원소가 한 번씩 처리 되도록 설정합니다.
    • CNN에서는 주로 Max Pooling을 사용합니다.

2.1 Convolution 레이어 출력 데이터 크기 산정

  • 입력 데이터 높이: H
  • 입력 데이터 폭: W
  • 필터 높이: FH
  • 필터 폭: FW
  • Strid 크기: S
  • 패딩 사이즈: P
    \begin{align}
    OutputHeight & = OH = \frac{(H + 2P - FH)}{S} + 1 \
    OutputWeight & = OW = \frac{(W + 2P - FW)}{S} + 1
    \end{align}
  • 만약 Pooling 사이즈가 (3, 3)이라면 위 식의 결과는 자연수이고 3의 배수여야 합니다. 이 조건을 만족하도록 Filter의 크기, Stride의 간격, Pooling 크기 및 패딩 크기를 조절해야 합니다.

2.2 Pooling 레이어 출력 데이터 크기 산정

  • 일반적인 Pooling 사이즈는 정사각형입니다.

  • Pooling 사이즈를 Stride 같은 크기로 만들어서, 모든 요소가 한번씩 Pooling되도록 만듭니다.

  • 입력 데이터의 행 크기와 열 크기는 Pooling 사이즈의 배수(나누어 떨어지는 수)여야 합니다.

  • 결과적으로 Pooling 레이어의 출력 데이터의 크기는 행과 열의 크기를 Pooling 사이즈로 나눈 몫입니다.

  • Pooling 크기가 (2, 2) 라면 출력 데이터 크기는 입력 데이터의 행과 열 크기를 2로 나눈 몫입니다. pooling 크기가 (3, 3)이라면 입력데이터의 행과 크기를 3으로 나눈 몫이 됩니다.

  • CNN을 구성하면서 Filter, Stride, Padding을 조절하여 특징 추출(Feature Extraction) 부분의 입력과 출력 크기를 계산하고 맞추는 작업이 중요합니다.

자료 출처

케라스 CNN model 중간 저장

자료 출처