轻量化网络ShuffleNet
ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices
作者:Xiangyu Zhang Xinyu Zhou Mengxiao Lin Jian Sun 单位:Megvii Inc (Face++)
发表会议及时间:CVPR 2018
一 论文研究背景、成果及意义
- 建立更深、更大的卷积神经网络是解决视觉识别任务的主要趋势,但通常具有数百个层和数千个通道,因此需要极大算力消耗(Billions of FLOPs)
- 无人机、机器人和智能手机等常见的移动平台需要在非常有限的算力支撑下尽可能提高准确率
现有方法(在此模型发表之前)
- 模型压缩:
在已经训练好的模型上进行压缩,使得网络携带更少的网络参数 - 直接训练一个小型网络
从改变网络结构出发,设计出更高效的网络计算方式,从而使网络参数减少的同时,不损失网络的性能
本文方法
- 针对计算能力非常有限的移动设备,设计引入计算率极高的CNN框架 ShuffleNet
- 通过以下两点创新,在保持精度的同时大大降低了计算成本
- 分组点卷积
- 通道重排(channel shuffle)
本文成果
- 在ImageNet数据集上,将shuffleNet与一些主流模型进行了比较,结果表明,在相近的精度下,ShuffleNet效率高出很多。
- 与AlexNet相比,shuffleNet在相近的分类精度下仍可实现约13倍的实际加速
- 相比同为轻量级网络的MobileNets,shuffleNet在分类和检测任务上性能更好
二 ShuffleNet意义
- 旷视科技原创的移动端深度学习卷积神经网络,shuffleNet脱颖而出,成功入围世界互联网领先科技成果
- 当前,该技术已成功赋能全球约5亿台包含摄像头、移动终端在内的物联网设备,为人工智能技术驱动下的智能终端的大范围应用推广提供了重要技术支持
- ShuffleNet作为旷视科技自研的深度学习基础模型,在诸如目标检测、物体识别、图片风格化编辑、美颜等方面做为特征提取器,不仅实现云、端跨平台落地应用,深耕金融、安防、手机、零售、物流等多个领域,还可以保证产品使用的稳定性和快速性,为进一步落地应用场景提供良好的基础
三 论文内容理解
3.1 摘要核心
- 针对计算能力非常有限的移动设备,构建了一种计算效率极高的CNN架构-ShuffleNet
- 新架构引入了分组点卷积和通道重排两个新操作,在保持精度的情况下, 极大减少算力消耗
- 在ImageNet,COCO等数据集上实验验证了ShuffleNet的高效性
3.2 分组卷积
标准卷积参数量:3X3X12X6 = 648
分组卷积参数量:3X3X(12/3)X(6/3)X3 = 216
3.3 点卷积
- Group Convolution一种通道稀疏连接方式。在Xception、MobileNet等网络都有广泛应用
- 深度可分离卷积中分组数恰好等于通道数,意味着每个分组只有一个特征图
- 采用了密集的未分组1X1点卷积
- 大量密集的1X1卷积造成了极大的算力负担?
给点卷积也分组?
特征之间需要进行信息融合,否则会降低网络的特征提取能力
3.4 通道重排
- 分组点卷积某个通道的输出仅来自一小部分输入通道,阻止了信息流动,特征表示
- 如果我们允许组卷积从不同组中获取输入数据,则输入和输出通道将完全相关
- 对于从上一个组层生成的特征图,可以先将每个组中的通道划分为几个子组,然后在下一层中的每个组中使用不同的子组作为输入
- 这种不同组之间通道的混乱排列,称为channel shuffle
假定:某卷积层分为g组,输出特征通道为gXn - reshape:将gn个通道数变为维度为(g,n)
- transpose:将上述转置维度(n,g)
- flatten:展开作为下一组卷积输入
通道重排操作使构建具有多个组卷积层的更强大网络结构称为可能
四 ShuffleNet基本结构单元
4.1 卷积块特点
- ResNet中的Bottleneck,将3X3标准卷积替换为3x3深度卷积
- ShuffleNet中,将密集的点卷积替换为分组点卷积
- 在此基础上,针对降采样情况,还可以将元素add变为通道叠加
4.2 FLOPs
输入特征:hXwXc
Bottleneck通道数:m
分组数:g
分组点卷积 + 通道重排 FLOPs大幅下降,减少算力消耗
4.3 ShuffleNet网络构成
- 标准卷积核最大呲花
- 三个基于shuffleNet基本单元的阶段,内部是shuffleNet unit的堆叠,其中第一个阶段步长为2,每经过一个阶段,通道数为输入通道数的1/4
- 分组数g控制点卷积的连续稀疏性
五 ShuffleNet V2创新与改进
四个新发现
- 当输入输出通道数相同时,运算速度最快
- 过度使用组卷积会额外增加算力消耗
- 网络的多通路结构让网络碎片化,拖慢速度
- Element-wise operation会消耗较多的时间
创新与改进
- channel split:将输入特征通道划分为两部分,一部分进入bottleneck,另一部分不操作(输入输出通道数相同)
- 替换分组点卷积为标准点卷积(防止点卷积过度)
- channel shuffle放到维度叠加之后(防止碎片化)
- 将element-wise add替换为concat(减少时间消耗)
网络结构:
在全链接层前加一层标准卷积Conv5
类似MobileNet的思想,通过超参数缩减通道