关于池化和反池化的理解
文章目录
一、池化
1.1 什么是池化?
pooling的结果是使得数据特征减少,参数减少,加快计算速度。但pooling的目的并不仅在于此。pooling目的是为了保持某种不变性(旋转、平移、伸缩等)
1.2 池化的分类
(1)mean-pooling(对领域内特征点只求平均值)
(2)max-pooling(对领域内特征点取最大值)
1.3 池化的特点
mean-pooling能更多的保留图像的背景信息,更加关注背景,一般使用在网络结尾。
max-pooling能更多的保留图像的纹理信息,更加关注前景,一般使用在网络层中。
1.3 池化的意义
(1)池化就是把某一区域当作一个水池,然后,挑出这个水池中的代表性特征,平均值或者是最大值,即mean-pooling 和max-pooling。
(2)对输入的特征图进行压缩,方便使特征图变小, 简化网络计算复杂度;一方面进行特征压缩,提取主要特征。
(3)图像具有一种“静态性”的属性,这也就意味着在一个图像区域有用的特征极有可能在另一个区域同样适用。因此,为了描述大的图像,对不同位置的特征进行聚合统计,例如,人们可以计算图像一个区域上的某个特定特征的平均值(或最大值)来代表这个区域的特征。
1.4 其它池化方式
(1)中值池化
与中值滤波特别相似,但是用的非常少,中值池化也具有学习边缘和纹理结构的特性,抗噪声能力比较强。
(2)重叠池化
相对于传统的no-overlapping pooling,采用Overlapping Pooling不仅可以提升预测精度,同时重叠池化使特征丢失的更严重。一定程度上可以减缓过拟合。
(3)全局池化
Global Pooling就是池化窗口的大小=整张特征图的大小。这样,每个WXHXC的特征图输入就会被转化为1X1XC的输出,也等同于每个位置权重都为1/(WXH)的全连接层操作。
(4)组合池化
组合池化则是同时利用最大值池化与均值池化两种的优势而引申的一种池化策略。常见组合策略有两种:Cat与Add。常常被当做分类任务的一个trick,其作用就是丰富特征层,max pool更关注重要的局部特征,而average pooling更关注全局特征。
(5)空间金字塔池化
将不同深度的特征图拼到一起再进行输出。这样全局特征和局部特征就都拿到了。输入大小任意,输出大小固定。
(6)随机池化
Stochastic pooling是一种 简单有效的正则化CNN的方法,能够降低max pooling的过拟合现象,提高泛化能力。对于pooling层的输入,根据输入的多项式分布随机选择一个值作为输出。训练阶段和测试阶段的操作略有不同。
训练阶段:
- 前向传播:先将池化窗口中的元素全部除以它们的和,得到概率矩阵;再按照概率随机选中的方格的值,作为该区域池化后的值。
- 反向传播:求导时,只需保留前向传播中已经被选中节点的位置的值,其它值都为0,类似max-pooling的反向传播。
测试阶段:
在测试时也使用Stochastic Pooling会对预测值引入噪音,降低性能。取而代之的是使用概率矩阵加权平均。比使用Average Pooling表现要好一些。在平均意义上,与Average Pooling近似,在局部意义上,服从Max Pooling准则。
1.5 池化和卷积的比较
(1)池化层是没有超参,如果都用卷积的话,参数量会比较大的,建议使用池化层,池化层不增加参数量。
(2)卷积更多的是去做一些线性变换,而池化层,就单纯的相当于resize了输出的feature map。
(3)卷积之后数据结构会发生变化,但是池化不会。
1.6 卷积和池化的组合使用
连续卷积或池化的本质就是对图像的特征继续提取特征。从特征提取特征,会获得图像更高维度的特征,得到的信息更加抽象。
卷积或池化在采样图尺寸不够的情况下会停止滑动滤波器:
二: 反池化
2.1 反平均池化
平均池化的反池化是把池化后的平均数字结果分布到池化前图像上的每个像素格子上。
2.2 反最大池化
最大池化的反池化是把池化后的最大数字结果填充到池化前图像上对应的像素格子上,而其他格子则填充o。