池化作用:
1、减少输出的大小和降低过拟合
2、减少后续参数的数量
3、对特征图进行压缩,使得特征图变小,简化网络的复杂度
4、提取主要特征
1. 一般池化(General Pooling)
池化作用于图像中不重合的区域(这与卷积操作不同),过程如下图。
定义池化窗口的大小为sizeX,即下图中红色正方形的边长,定义两个相邻池化窗口的水平位移/竖直位移为stride。一般池化由于每一池化窗口都是不重复的,所以sizeX=stride。
最常见的池化操作为平均池化mean pooling、最大池化max pooling、均方根池化RMS pooling:
平均池化:计算图像区域的平均值作为该区域池化后的值。
最大池化:选图像区域的最大值作为该区域池化后的值。
均方根池化:选图像区域的均方根作为该区域池化后的值。
2. 重叠池化(OverlappingPooling)
重叠池化正如其名字所说的,相邻池化窗口之间会有重叠区域,此时sizeX>stride。
论文中《Imagenet classification with deep convolutional neural networks》中,作者使用了重叠池化,其他的设置都不变的情况下, top-1和top-5 的错误率分别减少了0.4% 和0.3%。
Imagenet classification with deep convolutional neural networks.pdf
3. 空间金字塔池化(Spatial Pyramid Pooling)
论文《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》中提出SPPnet,
空间金字塔池化可以把任何尺度的图像的卷积特征转化成相同维度,这不仅可以让CNN处理任意尺度的图像,还能避免cropping和warping操作,导致一些信息的丢失,具有非常重要的意义。
一般的CNN都需要输入图像的大小是固定的,这是因为全连接层的输入需要固定输入维度,但在卷积操作是没有对图像尺度有限制,所有作者提出了空间金字塔池化,先让图像进行卷积操作,然后转化成维度相同的特征输入到全连接层,这个可以把CNN扩展到任意大小的图像。
4. 全局池化(Global Pooling)
5. 双线性池化(Bilinear Pooling)
bilinear pooling在2015年于《Bilinear CNN Models for Fine-grained Visual Recognition》被提出来用于fine-grained分类后,又引发了一波关注。bilinear pooling主要用于特征融合,对于从同一个样本提取出来的特征 和特征 ,通过bilinear pooling得到两个特征融合后的向量,进而用来分类。