摘要
深度卷积神经网络在视觉识别领域已经到达非常客观的性能,但这些都是在高计算复杂度的代价下实现的。这篇文章提出了一种高效卷积层的设计方案。一个3D卷积操作可以被看作等价于在每个通道执行空间卷积和同时进行跨通道的线性投影。借助这个分离操作的思想和有顺序的空间卷积,所提出的层由一个单个内部通道卷积组成,它的计算力可以忽略不计的,结构还有个跨通道的线性映射。又引入了“bottleneck” structure,充分利用了输入像素之间的相关性,复杂度也进一步降低。文章指出,作者提出的模型在性能和复杂度方面优于传统标准卷积。和VGG, ResNet-50, ResNet-101相比,计算量方面缩减了很多倍(在相似的准确率的情况下)。
1、简介
目前深度卷积结构所达到的效果已经超越了人类眼睛的识别能力,但最新最先进的模型复杂度过高无论是在训练方面还是推断方面。大部分的计算时间都消耗在构建CNN结构上,比如用一定数量的3D卷积核去卷积一个3D的输入。为了提升模型性能,通道的数量需要几百,所以复杂度更高。
而基于稀疏分解的方法需要预训练模型、然后执行分解和微调(稀疏分解或者说稀疏编码暂时不了解)。这种方法本质上不是从CNN结构上去进行设计的。文章提出了三个方案(SIC layer、邻域连接结构、Bottleneck)。!
2、Method
这部分介绍了传统卷积方式和提出的新结构的对比,还引入了残差网络的思想。
2.1、标准卷积
这部分主要是介绍了传统标准卷积模式的复杂度,一个卷积层的复杂度通过总的乘法次数来衡量,在输入I —size(h*w*n)、输出O—size(k*k*n*n),数量为:
2.2、SIC Layer
每一个输入通道都用一个或者一些2D空间卷积核来卷积,得到和输入尺寸相同的输出,然后再对这些输出投影到输出通道。
输入的一个通道对应多个滤波器的情况,中间过程特征的通道为输入通道数量的b倍:
进一步减少复杂度,一对一的情况:
作者也讨论了,中间过程的每一层都是由一个输入通道卷积得到的,这样会不会丢失掉很多输入的信息?但是残差网络可以帮助克服这个问题,这样总的输出就相当于原始输入的信息加上之前层学习到的信息的和。作者比喻为低通滤波器和提取主要成分,这个比喻我不是太明白,我就自己意淫一下吧,不一定对,卷积层学到的特征信号不一定是完备的(不强的),加上原始输入后可以使特征信号更加明显,就比如冗余信息和特征信号比例使5:5,那么输入加上学习到的特征信号可能就是5:9了更易于后面层学习,不要受我误导,自己臆想的,还有很多其他解释比如有偏文章专门解释残差网络可以去看看,文章解释说残差网络是多路径融合、决策的结果,换种角度我觉得增加了路径也就输送了更多的信息。
2.3、优化网络:拓扑链接
另一种优化思路是:减少输出通道和输入通道的连接数量。总而言之就是,输出的每个通道仅仅连接输入的局部邻域通道而不是所有。
作者还设计一个SIC和拓扑连接结合的model,复杂度大大降低。
2.4、Spatial “Bottleneck” Structure
这部分首先说明了输入的空间分辨率和通道数的确具有更多的信息,比如,有些文章和学位论文种介绍动态图像帧、彩色和尺寸会带来准确率的提高。但这两点也会带来更高的复杂度。
作者由提到从另一方面讲,合理的利用这些丰富的大分辨率和通道信息也是有利的,所有提出在不改变分辨率和通道数的情况下,有效的利用信息,其实就是下采样降维再上采样升维进行还原。刚开到还以为是自编码网络呢,也有反卷积的文章,但这些都是特征提取、模型初始化和本文还是有点不一样的。感觉这个过程有点类似那篇网中网的论文的意思,在组合成高阶特征之前进一步提取特征是有益的。
另外前面SIC层中文章指出大部分计算消耗在线性映射阶段(也就是中间特征到输出这段),而Bottleneck结构前后对称得部分计算复杂度是等价的。所以该种结构比SIC加线性映射复杂度更低。
3、实验对比
这里直接给出最后的对比吧,具体对比在原文。