Shufflenet论文阅读笔记
ShuffleNet
文章介绍
- face++17年06月在arixv上放出来的文章,xiangyu Zhang, Xinyuzhou* Jian Sun。
- 提出来point wise group convolution和channel shuffle两个操作,减少计算量的情况下保持精度。
- 在Imagenet和 MS coco 数据集上进行了实验,验证比MobileNet的准确率高(imagenet分类top1 ecc 低6.7%)。
与相关工作的对比
- 模型设计: Xception[3], ->Inception series; ResNeXt, MobileNet系列
- 模型加速: 对模型进行剪枝(deep compression系列);量化(Xnornet, hwgq系列);卷积加速(fft系列)
contribution:
(1) 针对在小网络中,Xception[3], ResNeXt[37]中1*1操作多。用point wise group convolution进行改进。
(2)将group convolution和depthwise separable convolution统一成一个新的形式
核心思想
分组卷积(Group Convolution中的channel shuffle)
- 不进行channel shuffle之前分组卷积,不同颜色不互通,通道信息被阻断.
channel shuffle将每组的输出分成subgroup, 具体实现分为三步。
不同卷积的group个数不同是也可以进行channel shuffle操作,并且可导,我理解的是对应的梯度进行交换,能够进行end to end实验。
网络结构
-
子单元
不带stride的情况- 对bottleneck上的正常的3*3卷积改为3*3的depthwise convolution(图上没体现出来
- 将第一个1*1的point wise操作改成 gconv+ shufflenet两个操作
- 第二个1*1 gconv是为了恢复连接short cut的通道维度??
- 第二个3*3Gconv不加relu
带stride的情况
- 在shot path上加了3*3的AVG pooling
- 将 add改为了concat
-
计算复杂度分析
输入维度为c*h*w, bottleneck channels为m- Resnet计算量: hw(2cm + 9m^2) FLOPs
- ResneXt计算量: hw(2cm + 9m^2/g) FLOPs
- shufflenet 计算量:hw(2cm/g + 9m^2) FLOPs
- 总网络结构
- 只在botttleneck的特征图中会进行depthwise convolution
- 总的网络结构由3个stage的build block组成,block里面是ShuffleNet unit子单元,每一个stage第一个子单元stride均为2
- 保证总计算复杂度(~140M FLOPs)不变,group数目不同时,调整输出channel数目,实验衡量tradeoff (insight: group越大,计算量节省的越多,对应的输出 channel越大,但是每个group对应的input channel减少,可能不利于性能,trade off)
实验
-
实验设置
类似ResNeXt的设置,有2个区别
- weight decay减小,1e-4 -> 4e-5;
- 预处理的数据增广度没有那么大
-
实验结果
(1)验证point wise group convolution的作用- 1*,0.5*, 0.25分别代表将shufflenet的卷积核数目scale,网络变瘦,随之计算量缩减为scale^2,相对于不分group, error分别下降1%,2.4%, 3%
- 对于小网络,group增大更有利,推测对于小网络wider feature map更有利
- arch2对网络的修改:去掉stage3的两个units, 在保证计算复杂度增加feature map, 果真有提升。
(2)验证channel shuffle 的作用
(3)与其他网络结构的对比
- 比其他模型都好,感觉这个实验比较 tricky, 是基于tabel1的整体网络框架将其shufflenet unit换成其他网络结构单元比较的。并没有使用完整的参照网络结构。
- 好的原因是计算量一定的情况下,shufflenet的网络输出feature map的通道数最高,
-跟mobile net对比,shufflenet 50多层,mobilenet28层,重点验证好处不是由深度造成的。
(4)实验拓展 - 在ms coco上进行了物体检测实验
- - 在 arm上进行了inference测速实验,与alexnet相比,精度相当,加速了13倍。