“global pooling”就是pooling的 滑窗size 和整张feature map的size一样大。这样,每个 W×H×C 的feature map输入就会被转化为 1×1×C输出。因此,其实也等同于每个位置权重都为 1/(W×H)的FC层操作。也等同于输入一个tensor,输出一个vector。
“global pooling”在滑窗内的具体pooling方法可以是任意的,所以就会被细分为“global avg pooling”、“global max pooling”等。
由于传统的pooling太过粗暴,操作复杂,目前业界已经逐渐放弃了对pooling的使用。替代方案 如下:
1> 采用 Global Pooling 以简化计算;
2> 增大conv的 stride 以免去附加的pooling操作。
1、全局平均池化
全局平均池化(Global average Pooling)由 M. Lin, Q. Chen, and S. Yan. Network in network. Interna-tional Conference on Learning Representations, 2014.提出来。
所谓的全局就是针对常用的平均池化而言,平均池化会有它的filter size,比如 2 * 2,全局平均池化就没有size,它针对的是整张feature map。
备注:右图中全连接层的乘法次数为4*4=16。
因此,一个feature map 全局平均池化后得到一个值,再进行全连接(softmax)就会少很多参数。
解释一下上图:
最后的一层的数据是4个4*4的特征图,global average pooling是将每一张特征图计算所有像素点的均值,输出一个数据值,这样4 个特征图就会输出4个数据点,将这些数据点组成一个1*4的向量的话,就成为一个特征向量,就可以送入到softmax的分类中计算了。
这个过程中仅在计算平均数时涉及乘法,全连接层中的乘法运算就相对未使用全局平均池化减少了很多。
2、全局最大池化
与全局平均池化类似,把均值运算改为取最大值的运算即可。