ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices的理解

前沿

随着近几年AI算法爆发式的发展,越来越多的运用场景出现了。为了让更多的算法落地,如何做移动端的模型加速和模型压缩成了近期的一个热点。比如前一段做参数量化的BinaryNet、Google出的GoogleNet,到现在Face++出的ShuffleNet。这个趋势应该还会继续。模型压缩,一方面需要保证模型的精度、另外一方面需要减少模型的存储量。这次我就主要解释一下ShuffleNet,它的网络结构以及它的实验结果。

ShuffleNet主要是在计算方法上做了创新,提出了pointwise group convolution和channel shuffle两个操作来减少计算量,使得计算量在10~150 MFLOPS次操作。该文作者训练了ImageNet和MS COCO这两个训练集,说明该方法还不错,可以在大数据集上进行训练,有较高的可用性。相比于MobileNet在ImageNet top1上高了6.7%。然后在ARM平台上,计算性能上是AlexNet(5层卷机,3层全连接)的13倍,需要40 MFLOPS的计算量。看来该论文主要是做模型加速而不是走压缩的路线,毕竟BianryNet出来了,都是1bit了。再做压缩要么改网络要么做去除网络一部分,这些改进竞争也是极大的。之前不少人针对现成的网络已经做了很多优化,做模型参数的压缩、参数浮点量化、pruning(去掉一些不重要的activation,值为0。比如activation小于某个阈值就认为对整个网络没有印象。后来很多论文开始把bias去掉了)那我感觉这篇论文是在计算结构和内存设计上进行的优化,在这方面的设计,其实有很多人做了不少工作。后面找个时间我总结这方面的东西。这篇论文相比于ResNext和Xception的优势在于,ShuffleNet更适合在很小的卷积核的网络比如1x1这样的网络。总体上这篇论文还是有不少可圈可点的工作。

加速方法

Channel Shuffle for Group Convolutions

针对ResneXt和Xception的不足,ShuffleNet在pointwise convolution(也就是1x1的kernel的卷积)进行了优化。ResneXt和Xception是在3x3的kernel上做了group convolution,但是没有在1x1的网络做,结果大部分的乘法就出现在了1x1(占93.4%)同时大量的运算导致计算受局限,进而精度会损失。

为了提高pointwise convol

  • 9
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值