11-2. ConvNet Max Pooling과 Full Network

2020. 7. 6. 23:00AI/모두를 위한 딥러닝

이 포스트는 모두를 위한 딥러닝 - Tensor Flow를 정리한 내용을 담았습니다.
누구나 이해할 수 있는 수준으로 설명하고자 하였으며 LAB의 코드는 TF2.0에 맞추어 재작성되었습니다.

이번 포스트에서는 저번 포스트에 이어 CNN(Covolutional Neural Network, 합성곱 신경망)의 Pooling Layer와 CNN의 구성에 대해 알아보겠습니다. 먼저 저번 포스트의 CNN 과정을 다시 보겠습니다

그림 1.1. CNN 과정

우리는 직전 포스트에서 Convolution layer에 대해 알아보았습니다. 그렇다면 이번 포스트에서는 Pooling layer에 대해 알아보겠습니다. Pooling layer는 Convolution layer를 통과해 나온 Activation map(Feature map)을 입력으로 받아 Activation map의 크기를 줄이거나(resize), 특정 데이터를 강조하고 싶을 때(max, min pooling) 사용됩니다. 주로 Max Pooling을 사용하며, 이 밖에도 Average Pooling과 Min pooling이 있습니다. 다음의 그림 2.1은 Max Pooling 과정을 설명하고 있습니다. 4X4 Activation map에서 2X2 사이즈의 filter를 2칸씩 이동하며, 각 filter에서 최댓값을 추려 2X2 사이즈의 이미지를 만들어내고 있습니다. 각 filter에서 최댓값을 추리는지, 혹은 최솟값(Min Pooling)이나 평균값(Average Pooling)을 내어 추리는지에 따라 Pooling의 종류가 나뉩니다. CNN에서는 Max Pooling을 주로 사용합니다.

그림 2.1. Max Pooling 과정

Pooling시 위의 경우처럼 filter사이즈와 stride를 맞춰 모든 원소가 한 번씩 처리되도록 설정하는 것이 일반적입니다. Pooling layer를 통과하면 이미지의 크기는 작아지지만 채널 수에는 변경이 없으며, 이미지 내의 원하는 데이터에 집중할 수 있다는 장점이 있습니다. 

이제 우리는 CNN의 기본적인 용어와 구성에 대해 모두 알아보았습니다. CNN으로 이미지 처리 및 분류하는 작업에 대한 코드에 대해서는 다음번 LAB 포스트에서 다룰 것이며, 우선은 링크의 CIFAR-10에서 제작한 ConvNet demo를 통해 CNN을 활용한 이미지 분류과정에 대해 시각적으로 구경해보는 것이 매우 도움이 될 것 같습니다.