Global average pooling (GAP)
date
Jun 28, 2021
Last edited time
Mar 27, 2023 09:04 AM
status
Published
slug
Global_average_pooling(GAP)
tags
DL
CV
summary
Global average pooling 与 everage pooling 的区别
type
Post
Field
Plat
Fully Connected layer
很长一段时间以来,全连接网络一直是 CNN 分类网络的标配结构。一般在全连接后会有激活函数来做分类,假设这个激活函数是一个多分类 softmax,那么全连接网络的作用就是将最后一层卷积得到的 feature map stretch 成向量,对这个向量做乘法,最终降低其维度,然后输入到 softmax 层中得到对应的每个类别的得分。
然而,全连接层过多的参数容易造成过拟合。
Global Average Pooling
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F3183ade5-65d7-484d-a4df-cccba12a0a15%2F5699b890-4376-41ca-a736-cf914522a38d.jpeg?table=block&id=dd6e810f-7f07-4a52-9c26-5b2a32058740&cache=v2)
每个讲到全局池化的都会说 GAP 就是把 avg pooling 的窗口大小设置成 feature map 的大小,这虽然是正确的,但这并不是 GAP 内涵的全部。GAP 的意义是对整个网络从结构上做正则化防止过拟合。
GAP 直接从 feature map 的通道上下手,如果我们最终有 1000 类,那么最后一层卷积输出的 feature map 就只有 1000 个 channel,然后对这个 feature map 应用全局池化,输出长度为 1000 的向量,这就相当于剔除了全连接层黑箱子操作的特征,直接赋予了每个 channel 实际的类别意义。
Jesse comment:还是可以在 GAP 之后加一个全连接层,然后 feature map channel 数不一定就要跟类别数一样了。见下:
实验证明,这种方法非常有效。
这样做还有另外一个好处:不用在乎网络输入的图像尺寸。同时需要注意的是,使用 gap 也有可能造成收敛变慢。