ABOUT ME

Today
Yesterday
Total
  • GAP
    공부 2021. 9. 9. 16:43

    * Pooling layer

    - Pooling layer는 주로 convolution layer를 input으로 받음

    - Convolution layer는 각 필터 당 하나의 feature map이 형성되고, 그 feature map을 스택처럼 쌓아둔 것

    - 복잡한 데이터셋으로 CNN을 구현하는 경우 매우 많은 수의 필터 필요

     

    - 필터가 많다는 것은 CNN의 차원이 매우 크다는 것을 의미함

    - 고차원을 구현하려면 그에 상응하는 더 많은 수의 파라미터 필요

    - 오버피팅을 초래할 수 있음

    - 차원을 감소하기 위한 방법 중 하나가 pooling layer

     

    * Global Average Pooling Layer (GAP)

    - 각 feature map 상의 노드 값들의 평균을 계산하여 급격하게 CNN의 차원을 줄임

    - Window size나 stride 지정할 필요 없음

     

    - Global average pooling layer의 최종 output은 single value로 크기가 감소된 feature map

    - 즉, (height, width, channel) 형태의 3D array를 input으로 받아 (channel,) 형태의 벡터를 리턴

     

    * Why?

    - CNN + FC Layer에서 classifier인 FC layer를 없애기 위한 방법으로 도입

    - 이전 feature map들이 갖고 있는 spatial information을 유지하면서 category로 직접 연관시키는 역할을 하기 때문에 얻어낸 feature map 중 어느 부분이 해당 class로 분류되는데 주요한 역할을 했는지를 알 수 있는 confidence map (=feature map)을 얻어낼 수 있음

     

    * FC layer

    - Fully-connected Layer

    - FC layer는 마지막 feature와 matrix 곱을 하여 feature 전체를 연산의 대상으로 삼아 결과를 출력

    - 즉, feature가 이미지 전체를 함축하고 있다고 가정하면 이미지 전체를 보고 출력을 만들어 냄

    - 그러나 FC layer를 classifier로 사용하는 경우 파라미터의 수가 많이 증가하는 단점

    - feature 전체를 matrix 연산하기 때문에 위치정보 사라짐

    - FC layer 사용 시 반드시 지정해 주어야 하는 FC layer의 사이즈로 인해 입력 이미지 사이즈 고정됨

     

    * FCN

    - Fully convolutional network

    - Object detection과 같이 classification과 localization 둘다 수행해야 할 경우 위치정보를 손실하는 FC layer 사용 불가

    - 1 x 1 convolution layer을 사용하여 위치정보가 손실되는 것을 막아줌

    - 이미지 크기 자체는 그대로 보존하기 때문에 filter의 수에 따라 output의 차원이 달라짐

    - (H, W, C)의 feature map에 1x1 conv filter K개 사용하면 (H, W, K) output 나옴

    - Feature map의 크기를 유지하면서 차원 줄이고 싶을 때 1x1 conv 사용

    - Classification 작업을 최정적으로 수행하는 FC layer의 기능을 대신하지는 못함

     

    * GAP

    - Global average pooling

    - GAP의 경우 어떤 크기의 feature라도 같은 채널의 값들을 하나의 평균 값으로 대체하기 때문에 입력 사이즈에 유동적

    - 단순한 평균 연산이므로 파라미터가 추가되지 않아 학습 속도 및 오버피팅 측면에서 유리

    - 연산 결과가 1차원 벡터이므로 최종 출력에 FC layer 대신 사용할 수 있음

    - Feature map과 category data를 직접 연관지음으로써 모델이 훨씬 더 interpretable 해짐

    - FC layer에서는 오버피팅을 막기 위해 dropout을 사용했지만, 파라미터가 없는 GAP는 자체적으로 오버피팅을 막게 되어 regularization 효과 있음

    - Spatial information을 요약하여 반영하기 때문에 FC layer에서 공간 정보가 없어지는 것을 막을 수 있고 훨씬 더 공간적 정보를 잘 담을 수 있음 (?)

     

    - 경우에 따라 FC layer와 같이 사용되기도 함

    - GAP를 이용하여 차원을 줄여서 벡터로 만든 다음에 FC layer로 전달하면 쉽게 사이즈를 맞출 수 있음

    - 경우에 따라 평균 내지 않고 모두 더하기만 하는 경우도 있음

     


    참조

    - https://gaussian37.github.io/dl-concept-global_average_pooling/

    - https://strutive07.github.io/2019/04/21/Global-average-pooling.html

    - https://vision4me.tistory.com/5

    - https://adventuresinmachinelearning.com/global-average-pooling-convolutional-neural-networks/

    - https://poddeeplearning.readthedocs.io/ko/latest/CNN/CAM%20-%20Class%20Activation%20Map/


    개인적인 리뷰 :

    - GAP는 한 feature map에서 공간정보 무시하고 전부 다 합해서 평균을 내버리는데 왜 공간정보를 유지한다는 거지???

    '공부' 카테고리의 다른 글

    Transformer  (0) 2021.08.09
Designed by Tistory.