Table of Contents

728x90

Global Average Pooling (GAP)과 Adaptive Average Pooling은 둘 다 평균 풀링을 수행하는 레이어로, 주로 이미지 분류 모델에서 사용되지만, 둘 사이에는 중요한 차이가 있습니다.

1. Global Average Pooling (GAP)

  • 동작 방식: Global Average Pooling은 입력 피처 맵의 공간 차원(높이와 너비)을 무시하고, 각 채널의 전체 값을 평균하여 하나의 값으로 압축합니다. 즉, 각 채널별로 단일 스칼라 값을 출력합니다.
  • 출력 크기: 입력이 (batch_size, channels, height, width)일 경우, GAP의 출력은 (batch_size, channels)가 됩니다.
  • 특징: GAP은 입력 피처 맵의 크기와 상관없이 항상 각 채널에 대해 하나의 값만 반환합니다. 따라서 출력의 크기는 항상 (batch_size, channels)로 일정합니다.

예시

입력이 (batch_size, 512, 7, 7)인 경우, GAP은 (batch_size, 512)로 변환합니다.

2. Adaptive Average Pooling

  • 동작 방식: Adaptive Average Pooling은 출력의 공간 크기를 사용자가 지정할 수 있습니다. 주어진 출력 크기에 맞게 입력 피처 맵의 공간 크기를 자동으로 조정하여 평균 풀링을 수행합니다.
  • 출력 크기: 사용자가 지정한 출력 크기에 따라 다릅니다. 예를 들어, 출력 크기를 (1, 1)로 설정하면 GAP과 동일한 동작을 수행합니다. 하지만 다른 크기를 지정하면, 해당 크기로 입력을 조정하여 풀링을 수행합니다.
  • 특징: Adaptive Average Pooling은 다양한 크기의 입력 피처 맵을 동일한 크기의 출력 피처 맵으로 변환하는 데 유용합니다. 주로 네트워크의 아키텍처를 보다 유연하게 만들기 위해 사용됩니다.

예시

입력이 (batch_size, 512, 7, 7)인 경우, 출력 크기를 (1, 1)로 설정하면 출력은 (batch_size, 512, 1, 1)이 됩니다. 출력 크기를 (3, 3)으로 설정하면 출력은 (batch_size, 512, 3, 3)이 됩니다.

차이점 요약

  • Global Average Pooling은 항상 출력 크기가 (batch_size, channels)로 일정하며, 공간 차원을 완전히 제거합니다.
  • Adaptive Average Pooling은 출력 크기를 자유롭게 지정할 수 있어, 출력이 (batch_size, channels, H_out, W_out) 형태로 원하는 공간 크기를 유지할 수 있습니다.

따라서, GAP은 매우 단순한 경우에 사용되며, 주로 마지막 레이어에서 사용되어 분류기(fully connected layer)에 연결되기 전에 사용됩니다. 반면, Adaptive Average Pooling은 다양한 아키텍처에서 유연하게 사용할 수 있으며, 여러 레이어 사이에서 입력 크기에 관계없이 고정된 크기의 출력을 보장해야 할 때 유용합니다.

'DeepLearning' 카테고리의 다른 글

MLE 최대가능추정법과 Generative Model 생성모델  (0) 2024.08.13
GPU 메모리memory확인 및 process kill  (0) 2024.08.10
TTA (Test-Time Augmentation, TTA)  (0) 2024.08.08
Normalize  (0) 2024.08.07
이미지 크기  (0) 2024.08.07