본 내용은 인하대학교 정보통신공학과 홍성은 교수님의 인공지능응용 강의내용을 기반으로 작성한 내용입니다.
Introduction to CNN

- 이미지 분류에 사용되는 기법
- 이미지의 공간정보가 포함된 Feature Map을 추출하고, 이를 통해 이미지를 분류한다.
History
- CNN의 조상 AlexNet을 시작으로 Deep Learning의 부흥이 시작되었다.
- 이후 CNN은 Detection, Segmentation, Reinforcement Learning 등 다양한 분야에서 사용되고 있다.
Fully-Connected Layer(FC Layer)

- Input Image를 1차원으로 flatten 하고, Weight와의 행렬곱을 통해 계산한다.
Convolutional Layer

- filter가 이미지를 훑으면서(slide) 해당 식을 통해 Activation Map을 생성한다.


- 두 번째는 green filter를 통해 slide 한다.

- 이런 식으로 여러개의 activation map을 생성하여 새로운 image를 만들어 낸다.

- CNN 과정에서는 생성된 activation map을 합하여 하나의 Activation Function이 된다.
Filter Size

- 위와 같이 5x5 filter를 사용할 때, 일반적으로는 이미지의 크기가 조금씩 줄어든다.(32 → 28 → 24 → ...)

- 공간적 차원에 집중하여 확인해보자.
- filter 한 번 당 하나의 값이 나오고, filter가 한 칸씩 옆으로 slide한다고 할 때, 위 그림을 기준으로 5x5 output이 나올 것이다.
Stride
- filter가 slide 하는 칸 수
- stride를 조정하여 output의 크기를 바꿀 수 있다.

- stride를 3으로 하면 어떻게 될까?

- Shape 측면에서 오류가 발생한다.

- Shape 오류를 방지하기 위해 위와 같은 공식이 필요하다.
- Output size가 정수가 아니라면 Shape 오류가 발생한다.
- 이를 해결하기 위해 Padding이 필요하다.
Padding
- Shape 오류를 방지하기 위해 Image 바깥쪽에 값을 채워 넣는 것.

- Padding을 조절하면 output size까지 변경되므로 이 또한, 조절할 수 있다. Padding을 포함하면 Output Size에 대한 식이 변경된다.
예제

- Output volume size : (32 + 2x2 - 5) / 1 + 1 = 32
- Number of parameters in this layer : filter element = 5x5x3 + 1 = 76 params x 10 = 760
Pooling
- 이미지 크기를 줄이기(Down-sampling) 위한 작업

- 종류, Size, Stride를 지정해야함.
- 채널 사이즈에는 변화가 없고, 이미지 크기만을 변화시킨다.
Max Pooling

- Size 내의 최댓값으로 대체, Stride만큼 Slide하여 같은 작업 반
Process

