【ShuffleNet-V2】深度学习模型压缩之ShuffleNetV2

久未见 提交于 2020-03-05 01:14:23
论文名称
深度学习模型压缩之ShuffleNetV2
作者
miclover
参考
书摘
V1版本存在的问题:
问题1:Shuffle channel在实现的时候需要大量的指针跳转和Memory set,这本身就是极其耗时的;同时又特别依赖实现细节,导致实际运行速度不会那么理想。
问题2:Shuffle channel规则是人工设计出来的,不是网络自己学出来的。这不符合网络通过负反馈自动学习特征的基本原则,又陷入人工设计特征的老路(如sift/HOG等)
之前版本问题:
1、在ShuffleNet V1中使用了大量的分组卷积,这违反了第二条;bottleneck-like的block,这违反了第一条
2、在MobileNet V2中使用了inverted bottleneck,这违反了第一条;在稠密的特征图上使用了depthwise卷积和ReLU,这违反了第四条
 
                                                                   思考
文中对于ShuffleNetV2主要工作创新点:
       文中作者讨论了常规的模型加速和压缩模型评估的指标(FLOPs:每浮点运算数,这个指标主要衡量的就是卷积层的乘法操作)的问题,并不能完全衡量模型速度,并通过实验主要讨论了MAC(内存访问操作所消耗的计算)指标。

       比如在Fig 1(c)(d)中,相同FLOPs的网络实际速度差别却很大,因此以FLOPs作为衡量模型速度的指标是有问题的。
1、使用相同的通道数来最小化MAC

对于1*1卷积核来说,输入c1维度,输出c2维度, 输出特征尺寸是h和w,那么, FLOPs可以表示为:

the memory access cost为:

通过均值不等式得出:

得出,当c1 = c2 的时候, 在给定FLOPs前提下,MAC达到取值最佳。
 
 
2、过多的分组卷积会增加MAC

对于1*1卷积核来说,输入c1维度,输出c2维度, 输出特征尺寸是h和w,并且使用g个组,那么, FLOPs可以表示为:

the memory access cost为:

可以看出在B不变时,g越大,MAC也越大。
 
 
3、网络分支会降低并行性,分支数量越少,模型速度越快

 
 
4、Element-wise操作不可忽视,尽可能减少element-wise操作
 

 
ShuffleNet v1和ShuffleNet v2的结构对比

 
 
 
 
网络结构:

 
 
 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!