Chapter 8. 왜 CNN이 이미지 데이터에 많이 쓰일까?

CNN은 어떻게 인간의 사고방식을 흉내냈나

  • 신경 다발(connections)을 잘 끊어냄
    • 이미지를 인식할 때 뇌의 일부분만 활성화 되더라는 실험 결과
    • 과연 첫 layer에서 모든 필셀의 값을 다 보려는게 좋은 걸까? 아니라는 것!
  • 위치별 특징을 추출함
  • 이미지를 FC Layer에 넣으면 한 픽셀 한 픽셀 너무 세세하게 본다.

FC Layer에서는 왼쪽 그림이나 오른쪽 그림이나 학습 방식에서 차이가 없음

  • CNN에서는 사전 정보(위치, 배치 등)을 가이드로 주고 학습하는 것과 비슷하다.
  • 즉, 위치별 특징을 찾는 연산이다.

CNN은 어떻게 특징을 추출할까

100x100 이미지에 100x100 크기의 커널을 10개 사용하면 10000 입력 10 출력하는  FC Layer와 동일하다.

3D 이미지에 대한 Convolution

다양한 CNN의 종류들

  • Grouped Convolution
  • Depth-wise Convolution
    • 채널마다 따로 필터를 두어, 채널 사이즈를 유지하고 채널별 특징을 파악한다
  • Depthwise separable Convolution
  • Point-wise Convolution
    • 채널별로 다른 1 x 1 convolution filter를 사용한다. input에 대한 spatial feature 추출이 아닌 dimensional reduction을 위해 사용한다. 필터의 갯수는 자유롭게 정할 수 있다.
    • 하나의 필터는 각 입력 채널별로 하나의 가중치만을 가지고 이 가중치는 해당 채널의 모든 영역에 동일하게 적용된다. 즉, 입력 채널들에 대한 Linear Combination과 같다.
  • 등등

연습문제(긁으면 정답)

  • 3x7x7 입력, 3x3 짜리 kernel의 채널 수? -> 3
  • 그리고 그런 필터 10 종류 사용하면 출력 크기는? -> 10
  • 그 다음 3x3 짜리를 또 conv한다고 했을 때 kernel의 채널 수? -> 10
  • 그리고 그런 필터 20 종류 사용하면 출력 크기는? -> 20
  • 위의 예시를 데이터 32개에 대해서 한다면? -> 상관 없음
  • kernel size 가 1 x 1 이면 그건 뭘 하게 되는 걸까요..? ->

Padding & Stride & Pooling

  • CNN이 반복되면 사이즈가 점점 줄어드는데, Padding을 쓰면 사이즈를 유지시킬 수 있다.

ㅇLinear Combination

Block이 깊어질 수록 Max pooling 이 되어가니까, 지엽적이고 중요한 특징들이 뽑히는 느낌이다..

노란색 일수록 높은 숫자. 성공한 경우 배경보다 중요한 부분에 더 높은 숫자가 맵핑되는 것을 알 수 있음. 반면 실패할 경우, 중요하지 않은 곳에 히트맵이 높게 표시 된 것을 알 수 있다.

VGG Net 모델 읽기

Beautiful Insights for CNN