三种减少卷积神经网络复杂度同时不降低性能的新方法

2017 年 5 月 26 日 统计学习与视觉计算组 尚子钰整理

原论文:《Design of Efficient Convolutional Layers using Single Intra-channel Convolution, Topological Subdivisioning and Spatial "Bottleneck" Structure》

作者:Min Wang, Baoyuan Liu, Hassan Foroosh

点击文章末尾原文链接即可获取




摘要及相关背景

        众所周知,深度卷积神经网络在视觉识领域别取得了非常显著的成就,但是这是以极高的计算复杂度为代价的。那么,我们可不可以发明一种全新的卷积方式,既能获得当前卷积网络的高性能,又能减少计算复杂度呢?本文作者,提出了三种改造卷积神经网络的方法,分别叫做:单通道内卷积,拓扑细分和空间瓶颈结构。这三种方法使得作者提出的模型既能达到时下最优的神经网络的性能,同时,在计算量上,VGG、ResNet-50、ResNet-101网络的计算量分别是本文提出的神经网络的计算量的42倍,4.5倍,6.5倍。


具体方法


参数说明:

本文神经网络的输入输出通道个数都是相同的,用n表示。

输入出片的尺寸为h·w

卷积核尺寸用k表示,即卷积核大小为k·k

为了使得卷积操作前后图片大小相同,仍为hw,卷积之前图片用0做padding


   方法一:单通道内卷积(SIC,single intra-channel convolution)

标准卷积神经网络的操作,计算复杂度为n^2·k^2·hw

        当前存在的卷积方法基本都是3-D结构的,计算复杂度分别与卷积尺寸和通道数的平方成正比,但是3-D卷积可以被看作是首先在单通道内一个2-D平面进行卷积,与此同时再进行一次映射变换。我们可以把这两个步骤拆分开来,分成2个步骤进行,这就是本文提出的方法SIC。以下是具体方法:

SIC,计算复杂度为b(nk^2+n^2)hw,由于k^2一般远小于通道数n,所以计算复杂度约为b`n^2·hw

        算法2是本文提出的标准SIC,具体方法已经写得很清楚了。该算法利用了残差思想,将一个标准的卷积操作分解为顺序操作的b次通道内卷积,最后通过线性映射P组合起来。在这样操作下,计算量是原来的b/k^2。当设置b<k^2时,就能起到降低复杂度的目的。

        需要指出的是,这个操作也可以不采用顺序操作而采用并行操作。作者最后也做了相应实验验证其有效性。


方法二:拓扑细分(Topological Subdivisioning)
        基本思路:输出的通道的值,只和与它相邻的通道有关系。如何定义相邻呢? 对于一个输出,假设标准卷积需要30维通道来表示,在拓扑细分方法里,我们可以用一个2-D张量空间或者3-D张量空间来重新排列这30维通道。举例来说,假如排列方法为2-D:30=6*5。那么如果要输出一般意义上第13维通道上的值,那对应在2-D张量空间,即是(3,3)位置的值。此时,考虑位置(3,3)及其周围的值即可。我们用(d1,d2,...,ds),来表示张量空间,显然,他们的乘积与通道数n的关系为:d1*d2*...*ds=n。我们考虑的位置(3,3)的邻域,用(c1,c2,...,cs)表示。若c1*c2*...*cs=c的话,经过拓扑细分,能将计算复杂度降低为原来c/n。具体算法为:

拓扑细分时的卷积操作,复杂度降为标准卷积的c/n


方法三:空间瓶颈结构(Spatial "Bottleneck" Structure)

        这个操作比较简单,就是对于k*k的卷积操作,卷积步长设置为k,这样图片长宽就变为原来的1/k,最后为了获得与输入相同大小的输出,进行一次反卷积就可以了。下图操作图示:

瓶颈结构


实验

        基本实验模型配置如下,一共A、B、C、D、E5个baseline。这5个模型即可说明SIC的有效性。

一,对SIC的验证:

二,对拓扑细分结构的验证

        验证实验中使用到了F,G,二者从模型A改造而来,模型F和模型G的参数:

实验结果,其中模型I是SIC+2-D拓扑的模型

实验三、对瓶颈结构的验证

        模型J、K由C改造而来。将SIC层替换成了瓶颈层。

实验四、与其他标准CNN模型的对比

        增加SIC的层数,使得最后精确度和时下最优算法相同。比较此时它们的计算复杂度。结果如下:

实验五、将得到的卷积核可视化


登录查看更多
3

相关内容

在数学(特别是功能分析)中,卷积是对两个函数(f和g)的数学运算,产生三个函数,表示第一个函数的形状如何被另一个函数修改。 卷积一词既指结果函数,又指计算结果的过程。 它定义为两个函数的乘积在一个函数反转和移位后的积分。 并针对所有shift值评估积分,从而生成卷积函数。
【KDD2020】自适应多通道图卷积神经网络
专知会员服务
119+阅读 · 2020年7月9日
【CVPR 2020-商汤】8比特数值也能训练卷积神经网络模型
专知会员服务
25+阅读 · 2020年5月7日
【Nature论文】深度网络中的梯度下降复杂度控制
专知会员服务
38+阅读 · 2020年3月9日
【ICLR-2020】网络反卷积,NETWORK DECONVOLUTION
专知会员服务
38+阅读 · 2020年2月21日
专知会员服务
41+阅读 · 2020年2月20日
网络宽度对深度学习模型性能有什么影响?
极市平台
15+阅读 · 2019年7月7日
CVPR 2019 | PointConv:在点云上高效实现卷积操作
机器之心
10+阅读 · 2019年4月21日
卷积神经网络四种卷积类型
炼数成金订阅号
18+阅读 · 2019年4月16日
CVPR 2019 | 用异构卷积训练深度CNN:提升效率而不损准确度
不用重新训练,直接将现有模型转换为 MobileNet
极市平台
6+阅读 · 2019年3月4日
误差反向传播——CNN
统计学习与视觉计算组
30+阅读 · 2018年7月12日
模型汇总23 - 卷积神经网络中不同类型的卷积方式介绍
深度学习与NLP
5+阅读 · 2017年10月12日
Learning Dynamic Routing for Semantic Segmentation
Arxiv
8+阅读 · 2020年3月23日
Deep Graph Infomax
Arxiv
17+阅读 · 2018年12月21日
Adaptive Neural Trees
Arxiv
4+阅读 · 2018年12月10日
Efficient and Effective $L_0$ Feature Selection
Arxiv
5+阅读 · 2018年8月7日
Arxiv
29+阅读 · 2018年4月6日
Arxiv
8+阅读 · 2018年1月25日
Arxiv
7+阅读 · 2018年1月10日
VIP会员
相关资讯
网络宽度对深度学习模型性能有什么影响?
极市平台
15+阅读 · 2019年7月7日
CVPR 2019 | PointConv:在点云上高效实现卷积操作
机器之心
10+阅读 · 2019年4月21日
卷积神经网络四种卷积类型
炼数成金订阅号
18+阅读 · 2019年4月16日
CVPR 2019 | 用异构卷积训练深度CNN:提升效率而不损准确度
不用重新训练,直接将现有模型转换为 MobileNet
极市平台
6+阅读 · 2019年3月4日
误差反向传播——CNN
统计学习与视觉计算组
30+阅读 · 2018年7月12日
模型汇总23 - 卷积神经网络中不同类型的卷积方式介绍
深度学习与NLP
5+阅读 · 2017年10月12日
相关论文
Learning Dynamic Routing for Semantic Segmentation
Arxiv
8+阅读 · 2020年3月23日
Deep Graph Infomax
Arxiv
17+阅读 · 2018年12月21日
Adaptive Neural Trees
Arxiv
4+阅读 · 2018年12月10日
Efficient and Effective $L_0$ Feature Selection
Arxiv
5+阅读 · 2018年8月7日
Arxiv
29+阅读 · 2018年4月6日
Arxiv
8+阅读 · 2018年1月25日
Arxiv
7+阅读 · 2018年1月10日
Top
微信扫码咨询专知VIP会员