全局池化(Global Pooling)
普通池化操作看这里:最大池化(Max Pooling)和平均池化(Average Pooling)
全局池化(Global Pooling) 是一种特殊的池化方法,主要包括:
- 全局平均池化(Global Average Pooling, GAP)
- 全局最大池化(Global Max Pooling, GMP)
在经过全局池化后,特征图形状会从
[b,c,h,w]
变为[b,c,1,1]
1. 全局平均池化(Global Average Pooling, GAP)
与普通的池化操作不同,GAP不再使用局部窗口,而是直接对整个特征图的空间维度进行池化,使每个通道输出一个值。 这种操作可以将特征图从三维(height x width x channels)
转化为一维向量(1 x 1 x channels)
,便于后续的全连接层进行分类或其他任务。
计算方式
如果特征图的某个通道为 3x3
,数值如下:
1 2 3
4 5 6
7 8 9
那么经过 GAP 操作后,这个通道的输出就是 (1+2+3+4+5+6+7+8+9) / 9 = 5
。
2. 全局最大池化(Global Max Pooling, GMP)
全局最大池化会在每个通道中取最大值,作为该通道的特征。
同样,对于形状 [batch_size, channels, height, width]
的特征图,经过 GMP 后的输出形状为 [batch_size, channels, 1, 1]
或 [batch_size, channels]
。
计算方式:
对于一个特征图通道的 3x3
窗口:
1 2 3
4 5 6
7 8 9
GMP 操作会输出 9,即这个窗口中的最大值。
3. 全局池化的作用和优势
-
减少参数:相比使用全连接层,全局池化能极大地减少参数数量,使模型更加轻量,减少过拟合风险。
-
位置不变性:全局池化关注整个通道的整体特征,而不局限于特定位置,有利于提取全局特征。
-
避免过拟合:由于没有全连接层带来的大量参数,全局池化特别适合处理小数据集,提高模型泛化能力。
-
减少计算量:特别适合在移动设备上进行轻量级模型的部署。
4. 全局池化在 CNN 中的应用
在 CNN 中,全局池化常被用于分类任务的最后一层。在提取完空间特征之后,利用全局池化生成每个通道的全局特征,再接一个全连接层或直接用于分类。