본문 바로가기
Learning-driven Methodology/DL (Deep Learning)

[Deep Learning] Global Average Pooling (GAP)

by goatlab 2022. 8. 14.
728x90
반응형
SMALL

Global Average Pooling (GAP)

 

GAP (global average pooling)은 Max (Average) Pooling 보다 더 급격하게 feature의 수를 줄인다. 하지만, GAP을 사용하는 이유는 Pooling과 조금 다르다. GAP의 목적은 feature를 1차원 벡터로 만들기 위함이다.

 

이 방식은 Location 정보를 FC Layer보다 적게 잃고 85%의 가중치를 없앤다. 이것으로 계산량과 모델의 무게와 파라미터가 줄어든다. 따라서, 오버피팅 방지 효과도 따라온다. 그리나 이것은 정보량 손실이 있다. 이미지의 모든 값을 평균을 내는 것인데, 정보를 잃지만 성능은 좋은 것으로 알려져 있다.

 

https://alexisbcook.github.io/2017/global-average-pooling-layers-for-object-localization/

 

분류할 클래스 수만큼 feature map을 마지막에 생성하여 i번째 feature map의 평균값을 구해서 i번째 출력 노드에 입력한다.

 

# tensorflow
from tensorflow.keras.layers import GlobalAveragePooling2D

model.add(GlobalAveragePooling2D())

# pytorch
import torch.nn.functional as F

F.adaptive_avg_pool2d()
728x90
반응형
LIST