본문 바로가기

Terminology

GAP(Global Average Pooling)

반응형

GAP는 최근에 제시된 CNN architecture에서 널리 쓰이고 있는 pooling 방식입니다.

CNN의 기존 FC layer가 지나치게 많은 연산량 / spatial information을 잃어버리는 문제를 가지고 있어 이에 대한 대안으로 제시되었는데요, 간단하게 그림을 통해 살펴보겠습니다.

출처가 명확하지 않은 관계로 우선은 표기하지 않았습니다. 혹시 문제가 되는 부분 알려주시면 바로 수정하겠습니다.

기존 FC layer는 이전 layer 단에서 추출된 모든 feature들을 concat해 이들로부터 각 class 별 score를 구해 classification 하는 형태로 사용되었습니다. 당연히 연산량도 매우 많고, classification에 영향을 끼친 feature가 어느 부분에서 추출되었는지도 알 수 었으며, input 의 크기 또한 제한된다는 문제점을 지니고 있었습니다.

GAP는 각각의 feature 에서 대표값(average)을 추출해 바로 classification 단으로 옮기면서 이런 문제를 해결합니다. 결과적으로 이전 feature map들이 가지고 있는 spatial information을 유지하면서 category로 직접 연관시키는 역할을 하기 때문에 얻어낸 feature map 중 어느 부분이 해당 class로 분류되는데 주요한 역할을 했는지를 알 수 있는 confidence map(= feature map)을 얻어낼 수 있습니다. 별도의 parameter optimization 을 필요로 하지 않기 때문에 연산량이 적을 뿐 아니라, over-fitting 문제도 차단할 수 있게 되죠. 

네트워크 흐름을 보면, input feature dimension이 HxWxC 일 때 GAP는 각 feature 이미지 하나 당 하나의 평균값만 추출해내기 때문에 output feature dimension은 1x1xC가 됩니다. 그리고 이 1x1xC의 벡터를 softmax로 넘겨 classification에 사용되도록 하는 방식입니다. 기존 CNN이 약 3개의 fc layer를 거쳐 classification 단에 도달하는 것에 비하면 획기적인 단축이라고 볼 수 있겠죠.

자료 출처: LIN, Min; CHEN, Qiang; YAN, Shuicheng. Network in network. arXiv preprint arXiv:1312.4400, 2013. 

* 전체 논문을 읽는 것보다 관련 포스트를 읽어보시는 게 나을 것 같아 개인적으로 도움이 된 포스트 링크를 남겨두겠습니다.

출처1

출처2

반응형

'Terminology' 카테고리의 다른 글

Manifold in Machine Learning  (0) 2019.11.26