深度学习之基础模型-ShuffleNet

The new architecture utilizes two proposed operations, point wise group convolution and channel shuffle, to greatly reduce computation cost while maintaining accuracy.

该论文利用了point wise group convolution和channel shuffle两种技术进行了网络模型的搭建,在保证精度的前提下,大大的降低了计算量。

  • pointwise group convolution:为了减少1x1卷积的操作带来的操作量。原先的卷积在所有通道上进行,作者把所有通道进行分组卷积,类似mobileNet中采用的depthwise separable convolution。(1x1卷积在很多基础模型上,都大量使用,作用也是用来减少计算量的,本文对1x1卷积更进一步,分组卷积,从而进一步降低计算量)
  • shuffle channel操作:就是在分组卷积的基础上,打乱不同通道的排序,使得下一层的操作的输入能吸收来上一层不同组的内容,使得学习更佳均衡。(该思想早在AlexNet时,就采用过,当时分组的目的是由于当时的GPU显存不够,不得已而为之)

目的

保证精度的前提下,尽量减小模型的大小和计算量,从而可以在移动终端(手机)或者嵌入式设备上进行部署。
类似的工作有:

  • GoogLeNet increases the depth of networks with much lower complexity compared to simply stacking convolution layers【将卷积在宽度和深度两个方向进行了拓展】
  • SqeezeNet reduces parameters and computation significantly while maintaining accuracy.【利用fire module将1x1,3x3卷积拼接到一起】
  • ResNet utilizes the efficient bottleneck structure to achieve impressive performance.【利用skip connection,学习残差比学习其他函数要快很多】
  • Depthwise separable convolution proposed in Xception generalizes the ideas of separable convolutions in Inception series.【如何将Inception模块的思想过渡到分层卷积,运用分层卷积+残差思想】
  • MobileNet utilizes the depth wise separable convolutions and gains state-of-art results among lightweight models.【利用分层卷积,达到AlexNet级别效果,但参数量少很多】

网络结构

(1)Channel Shuffle


这里写图片描述

  • 最左侧的卷积不同组之间完全分离,每一层卷积只一类自己的上一层。学习特征完全独立,不利于网络的收敛性。
  • 中间和右侧的效果是,每一组结构都能得到不同层传过来的信息,从而使整个网络更佳健壮,稳定性和容错性更好,也是一种正则化的表现【感觉有点类似于dropout的感觉,使得不同路径都能学习到对最终结果有帮助的信息】。
(2)Shuffle Units


这里写图片描述

  • 最左侧的为残差的基本模块
  • 中间在卷积开始的时候,利用了channel shuffle操作,前面的1x1卷积主要起到分组的效果
  • 在中间形式的基础上,做了两点修改:
    • 整个结构是一个pooling的过程,图像尺寸减小了一倍
    • 左侧不是直接连接过来,应为特征的尺寸发生了变化,从而采用的是一个average pooling操作
    • 最终的连接不是add操作,而是concat操作,目的是在讲少特征大小的时候,增加特征的深度,保持网络的表达能力
(3)整体结构


这里写图片描述

  • 每一个stage开始的时候,都是采用Channel Units中的c结构,对特征进行降维(stride=2),特征深度加倍
  • 令bottleneck的特征图深度是每一个shuffle unit输出特征图的1/4
  • 参数 g 表示分组个数,g越大,表示point convolutions的连接越稀疏。

实验结果与分析

实验一:
        对比不同分组对模型的影响


这里写图片描述

  • 结果最好的模型为shuffleNet 1x 且 g=3
  • 随着模型参数的减少,每个系列最好的模型,会往 g 增大的方向便宜。这个间接的说明了,当网络参数较少的时候,shuffleNet中的分组数量能发挥更大的作用
  • group convolution操作能够使得模型在相同计算复杂度的情况下,获得更多的feature map channels,而这也实验三中,对比不同基础结构中获得了证明
  • 论文中,将shuffleNet中的stage3去掉,然后增加其他层的feature map,在相同的计算复杂度的情况下,模型的效果也是在g=8,分层越多的情况下获取,而且比对应的shuffleNet 0.5x, shuffleNet 0.25x效果要好,也再次证明了,作者提出的feature map channel 越多,最终的效果越好
实验二:
        探讨shuffle channel操作的作用


这里写图片描述

  • 通过对比使用shuffle操作和不适用shuffle操作带来的效果,可以看出,shuffle在模型上,起到了非常大的作用。
实验三:
        在相同计算复杂度前提下,对比不同基础结构的效果


这里写图片描述

  • 和其他基础结构(VGG, ResNet, Xception-like, ResNeXt)相比,shuffleNet在相同计算复杂度的前提下具有非常明显的优势。【作者分析,这个主要是由shuffleNet相比其他基础结构拥有更多的channel,论文也提到,随着channel的增加,哥哥基础结构的效果也成上升趋势】
实验四
        对比MobileNet网络结构


这里写图片描述

  • 和mobile相比,在相同计算复杂度的情况下,shuffleNet表现更好
  • 在Complexity(~40 MFloaps)情况下,shuffleNet超过了MobileNet 6.7%
  • 即使将ShuffleNet的网络结构减半(ShuffleNet 0.5x shallow, g=3),模型的效果也比MobileNet要好


这里写图片描述

  • 和其他模型相比,在相同精度的前提下,模型的参数要少很多
实验五
        讨论ShuffleNet的检测方向的推广能力


这里写图片描述

  • 模型在检测领域的推广能力也得到了证实
实验五
        讨论ShuffleNet的运算速度


这里写图片描述

  • 相比AlexNet的运算速度,ShuffleNet有了明显提升

参考文献

https://arxiv.org/abs/1707.01083
http://m.blog.csdn.net/u014380165/article/details/75137111
http://blog.csdn.net/shuzfan/article/details/77141425
http://baijiahao.baidu.com/s?id=1572512027246277&wfr=spider&for=pc
http://blog.csdn.net/c602273091/article/details/75137878

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值