论文地址:Network In Network
Global average pooling的概念来自于Network In Network这篇论文,这篇文章中提出了MIN,也就是用多层感知器来代替卷积的这种方法,如下图,左图是一个普通的卷积操作,右图为多层感知器的卷积
下图为提出的整个网络结构
因为这种网络基本没有人使用,所以就不详细的讲解
但是这篇文章的另一个思想也就是global average pooling被广泛应用,所以值得学习一下
在之前的卷积网络中,最后一层卷积层的输出为多个future map,然后直接使用全连接层对所有的future map节点进行连接,会造成非常大的节点数量,还容易导致over-fitting,所以有没有一种更加方便的方式对于这些future map进行处理,本文问就提出了global average pooling
假设最后一层有M个x*x大小future map,然后对每个future map中的所有值进行求和平均(sum average),也可以说是使用size为x*x的average pooling对这些future map进行处理,最后输出为M*1的特征向量,最后把这个M*1的特征向量直接放到softmax层进行分类,global(全局)的意思就是对整个future map进行处理得到一个1*1的输出
如上图所示,左图为传统的cnn,右图为使用global average pooling
这么做的好处在于,减少参数数量不会导致over fitting,并且可以保持空间信息(spatial information)
基于高阶统计建模的深层卷积网络(李培华,左旺孟,王旗龙):
Is Second-order Information Helpful for Large-scale Visual Recognition?
Multi-scale Location-aware Kernel Representation for Object Detection
Hierarchical Bilinear Pooling for Fine-Grained Visual Recognition
Kernel Pooling for Convolutional Neural Networks
Global Gated Mixture of Second-order Pooling for Improving Deep Convolutional Neural Networks
Matrix backpropagation for deep networks with structured layers
Bilinear CNN Models for Fine-grained Visual Recognition
global covariance pooling:
前两天有幸听了ccf举办的PRCV2018会议,会议的第一天有一个讲习班为基于高阶统计的深层卷积网络,他们就是对于global average pooling层进行改进,之前不是只是对一个future map进行一个average操作,也就是对这个future map所有节点进行求和求平均,相当于求一个future map的均值,他们就提出只提取均值(一阶统计特征)的话,会不会损失太多的信息,如果我们提取更高的统计特征呢,比如进行二阶统计特征(协方差)的提取,也就是求每个future map的协方差作为输出,称为
global distribution pooling:
然后呢,可不可以将概率分布嵌入到cnn中,也是对于global average pooling层的一个替代,比如将高斯分布嵌入到其中,可以结合一阶二阶统计特征
提出使用一阶二阶的统计特征会丢失位置信息,不适合于目标检测,那可以使用更高阶的方式来保留位置信息