【论文学习】ShuffleNet-v1:一种极高效的移动端卷积神经网络
论文链接:https://arxiv.org/abs/1707.01083
设计思想
卷积神经网络是现代视觉人工智能系统的核心组件。近年来关于卷积模型的研究层出不穷,产生了如 VGG、ResNet、Xception 和 ResNeXt 等性能优异的网络结构,在多个视觉任务上超过了人类水平。然而,这些成功的模型往往伴随着巨大的计算复杂度(数十亿次浮点操作,甚至更多)。这就限制了此类模型只能用于高性能的服务器集群,而对于很多移动端应用(通常最多容许数百万至数千万次浮点操作)则无能为力。
由于现代卷积神经网络的绝大多数计算量集中在卷积操作上,因此高效的卷积层设计是减少网络复杂度的关键。所以轻量级网络应运而生。旷视(Face++)研究院发表的ShuffleNet利用稀疏连接的设计理念,为其中的佼佼者。
作者通过分析已有的卷积模型,发现例如Xception 和 ResNeXt 模型中,逐点卷积的运算量相当可观,成为了新的瓶颈。因此,为了进一步提升模型的速度,就必须寻求更为高效的结构来取代逐点卷积。
创新点
(1) pointwise group convolutions (逐点群卷积):现有模型中,1x1卷积浪费很多的资源,成为运算的瓶颈,group卷积用来解决这个问题。降低计算复杂度。
Group卷积的缺点:某个通道输出仅从一小部分输入通道中导出,降低了通道组之间的信息流通,降低了信息表示能力。并且,学习到的特征也比较局限。
(2) channel shuffle:通道混洗:消除group卷积带来的副作用
目的:帮助信息流通
示意图
(a) 直接进行分组卷积,分组数为g:信息不流通;
(b)(c) channel shuffle示意图;
网络结构
(a) 是ResNet中的bottleneck unit,不过将原来的3*3 Conv改成3*3 DWConv;
(b)首先用带group的1*1卷积代替原来的1*1卷积,同时跟一个channel shuffle操作,这个前面也介绍过了。然后是3*3 DWConv表示depthwise separable convolution;
(c)添加了一个Average pooling和设置了stride=2,另外采用concat的操作,也就是按channel合并。
实验结果
主要为分类应用中的实验结果