TigerCow.Door

'convolution'에 해당되는 글 1건


안녕하세요. 문범우입니다.

지난 포스팅에서 CNN에 대해서 알아보았습니다.

이번 포스팅에서는 이어서, CNN에서의 pooling과 나머지 것들에 대해서 알아보도록 하겠습니다.


* 해당 포스트의 모든 내용은 김성훈 교수님의 '모두를 위한 딥러닝'을 바탕으로 제작되었습니다.

관련한 상세 내용은 아래 링크를 참고해주세요.

https://hunkim.github.io/ml/



1. Pooling



Convolution Neural Network의 전체적인 구조를 위의 그림과 같이 확인해보면, Convolution과 RELU가 붙어져 있으며 중간에 한번씩 POOL을 하게 됩니다.


이때 진행되는 POOL이라는 것이 무엇인가 알아보도록 하겠습니다.


pooling이라는 것을 먼저 간단히 생각해본다면, sampling이라고 생각하면 됩니다.

우리가 입력 이미지에 대해서 위의 그림과 같이 convolution layer를 만드는데, 여기서 하나의 layer만 뽑아내고 이를 resize하는 과정을 pooling이라고 합니다.

복잡한 것이 아니고, 하나의 예를 들어서 pooling을 진행해보도록 하겠습니다.


pooling에서도 많이 사용되는 max pooling은 아래 사진과 같이 진행됩니다.


pooling에서는 우리가 지난 포스팅에서 알아보았던 filter라는 개념이 다시 사용되는데, 위의 사진과 같이, 2x2 형태의 필터를 이용하며, 이때 stride는 2로 설정하였습니다.

그럼 필터에서 어떠한 값을 어떻게 추출할 것인지가 문제가 됩니다.

이때 위에서 말했듯, max pooling을 사용하면 그림의 오른쪽과 같이 나오게 됩니다.


이런식으로 처리하는 것이 pooling입니다.



2. Others



정리를 해보자면, 지난 포스팅에서 배운 Convolution 을 통해 나온 벡터 값을 RELU 함수에 입력하고, 그 과정 중간에 위에서 배운 pooling과정을 진행하여 resize하는 방법을 진행합니다. 물론 layer를 어떻게 설정하느냐는 모델을 만드는 여러분의 몫입니다.

그리고 마지막 과정에서 보통 pooling을 진행하는데, 예를 들어 pooling을 통해 3x3x10의 형태로 결과가 나왔다면 이것을 x 값으로 하여 일반적인 Neural network를 구성하면 됩니다.

블로그 이미지

Tigercow.Door

Back-end / Python / Database / AI / Algorithm / DeepLearning / etc

댓글을 달아 주세요