ShuffleNet

Paper : ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile
Devices

Code : unofficial

摘要

本文继续从group conv操作出发思考如何能进一步减少模型的参数,最终结合pointwise conv 和 shuffle channel的方式使模型尺寸大大减少,使移动端计算力支持网络推导。

网络结构

自从AlexNet将组卷积引入进来后,Xception, ResNeXt和MobileNet相继使用组卷积的方式减少模型参数,并取得了不错的进展。Xception(blog)提出了depthwise separate conv操作,该操作由spatial conv和pointwise conv两部分组成,而ShuffleNet就是在此基础上进行进一步的分析。

作者发现,在ResNeXt(cardinality=32)中,93.4%的加法和乘法是用在pointwise conv上,pointwise conv是为了解决group conv中组与组之间相互独立的问题而引入的,本质上是一个1*1的普通卷积操作,因此pointwise是通道稠密的,参数量较多。解决的方法是使其变成通道稀疏的卷积操作,也就是变成组卷积的形式。这样却无法解决组与组之间的参数相互独立的问题,为此引入通道打乱操作,如图所示

image.png

图(a)表示如果在spatial conv和pointwise conv都使用组卷积的话,那么组与组之间不存在权重连接,上一层的feature只与下一层同组的节点相连,我们希望是在稀疏的基础上能够做到如图(b)的连接方式,为此需要将通道打乱成图©所示,这样再使用组卷积形式的pointwise conv才再次达到了组与组之间参数相关的目的。

利用通道重排的优点,提出了ShuffleNet单元。从图2(a)所示的bottleneck出发,我们将第一个1×1层替换为分组逐点卷积,然后进行通道重排操作,形成一个ShuffleNet单元,如图2(b)所示。第二个分组逐点卷积的目的是恢复通道维数以匹配shortcut路径。为了简单起见,我们不在第二个逐点卷积层之后应用额外的通道重排操作,因为它已产生可比较的成绩。批归一化(BN)和非线性的使用与ResNet相似,只是我们没有按照Xception建议的在深度卷积后使用ReLU。对于将stride应用于ShuffleNet的情况,我们只做了两个修改(图2©):

  1. 在shortcut路径上添加一个3×3的平均池化;
  2. 用通道级联替换元素相加,这样可以很容易地扩大通道尺寸,而几乎无需额外的计算成本。

image.png

整个shuffleNet结构如下

image.png

核心观点

  1. 进一步扩展了group conv的使用方法,将pointwise conv发展为pointwise group conv
  2. 对通道shuffle方法的引入
  3. 结合channel shuffle, depthwise group conv和ResNeXt提出了shuffle unit
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值