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 중간 저장

자료 출처

You need to set install_url to use ShareThis. Please set it in _config.yml.

Comments