ShuffleNet V2

 

论文:Practical Guidelines for Efficient CNN Architecture Design

链接:https://arxiv.org/abs/1807.11164

第三方代码:


ECCV2018关于模型加速和压缩的文章

 


论文详解:

作者在摘要和介绍里提到目前网络结构是根据computation complexity(FLOPs)来设计的,但是FLOPs并不能完全衡量模型,比如在Fig1(c)(d)中,FLOPs相同的情况下,有着不同的speed,因此FLOPs作为computation complexity唯一的指标是不合理的,会带来次优设计。

 

作者指出两个主要的原因:

第一点简单的说就是MAC 和degree of parallelism难以在FLOPs指标中体现。

 

Practical Guidelines for Ef'ficient Network Design:

研究的开始阶段,作者先分析了ShuffleNetV1 和MobileNet V2

接下来介绍4个实验:

均值不等式:,可得:

当输入通道数和输出通道数相等时,在特定的FLOPs下,MAC达到最小值。

实验结果如下:

 

 

 

 

为了量化network fragmentation 对效率的影响,作者测试了一系列不同程度的fragmentation。

在ARM中,速度减少相对较小,因为fragmented structures 对强大并行计算能力的设备(GPU)不友好。

 

ShuffeNet V2: an Efficient Architecture:

作者先是回顾了ShuffleNetV1,分析如下:

接下来,作者谈到了ShuffleNetV2的结构,在每个单元的开头增加了channel split的操作,将输入通道分成c-c’和c’,c’在文章中采用c/2.文章中,原话是这么说的Following G3, one branch remains as identity. The other branch consists of three convolutions with the same input and output channels to satisfy G1.接着1*1 cconv不再是group-wise,这跟第二点对应,同时前面的channel split已经算是变相的group操作了。其次,channel shuffle的操作移到了concat后面,和前面第3点发现对应,最后将add换成了concat,和第四点对应。多个(c)结构连接在一起的话,channel split、concat和channel shuffle是可以合并在一起的,同样和第四点对应。For spatial down sampling, the unit is slightly modied and illustrated in Figure 3(d). The channel split operator is removed. Thus, the number of output channels is doubled.

网络结构图如下所示:

最后分析了网络高效的原因:

简单来说就是能用更多的feature channels以及复用特征。

 

意思是随着两个块之间距离的增加,特性复用呈指数衰减

 

结果:

作者提到MobileNetV1速度块,原因是简单的网络结构;IGCV2和IGCV3速度慢,原因是group过于多;自动搜素构建的网络速度慢,因为有太多的分支。

 

作者提到Xcpetion检测效果好,原因是有着更大感受野,所以ShuffleNet v2*每个block的第一个pointwise卷积层前增加一个3*3的depthwise卷积层

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值