(五)ShuffleNet_v2学习笔记

发表:2018.7.30 ECCV
参考博客1
创新点:以往的论文实验以间接指标FLOPS为衡量标准,这个指标是衡量卷积层的乘加操作数的,有时因为平台会其它因素并不能直接代表速度或延迟。本文指出应该用直接指标——速度来衡量并做了一系列对照实验,提出了四个准则和基于此改进的ShuffleNet_v2网络。
在这里插入图片描述
根据主流的两个轻量级网络在两个不同平台的实验数据可知,FLOPs指标只考虑了Conv卷积部分,但是像数据I/O、数据混洗及元素级操作(AddTensor, ReLU)也占用了一部分时间,所以只用FLOPs指标衡量是不准确的。

一、四个准则

G1)等通道宽度最小化内存访问成本(MAC)

理论:
对于1×1的点卷积的FLOPs数为B=hwc1c2 (此处省略1×1)
内存访问操作的数量MAC=hw(c1+c2)+c1c2
根据均值不等式可得(1),将MAC和B代入该式可知当输入通道c1和输出通道c2相同时MAC最小
在这里插入图片描述
实验:
这些实验的网络是由10个block组成,每个block包含2个1*1卷积层,第一个卷积层的输入输出通道分别是c1和c2,第二个卷积层相反。4行结果分别表示不同的c1:c2比例,但是每种比例的FLOPs都是相同的,可以看出在c1和c2比例越接近时,速度越快,尤其是在c1:c2比例为1:1时速度最快。
在这里插入图片描述
G2)过多的群卷积增加MAC
理论:

这里的g是指分组数,单个卷积核大小变为原来的c1/g。
在这里插入图片描述

由第二个式子得出当给定固定的输入形状c1×h×w,计算代价B,MAC随着g的增大而增大。
在这里插入图片描述
实验:
下表是固定FLOPs数改变分组数在两个平台下的对比实验,可以看出使用较大的组数是不明智的,虽然这样可以增加通道数提高精度但同时也会增加MAC。
在这里插入图片描述
G3)网络碎片化降低并行度
实验:
碎片化结构如在一个构建块中单个卷积或池化对精度有益但是对并行化计算能力强的GPU不友好,他会带来额外的卷积核启用和同步。该实验的构建块由1~4个1×1的串行或并行排列的卷积组成,这样的模块重复堆叠十次来进行对比实验,可以看到碎片化在GPU上显著减慢了速度。
在这里插入图片描述
G4)元素级操作不可忽略
实验:
由前面的饼状图可以看到元素级操作也占用了一部分时间,特别是在GPU上。元素级操作包括 ReLU, AddTensor, AddBias等,另外也将depthwise convolution当做元素级操作,因为他们虽然FLOPs数低但是MAC很高。
该实验对ResNet网络的“瓶颈”单元进行了实验(1×1 conv接3×3 conv接1×1 conv, ReLU和shortcut)。分别删除ReLU和shortcut进行对照实验可以看到在GPU和ARM平台上删除ReLU和shortcut都有20%的提速

ReLU和shortcut的使用是为了解决某些问题而使用的,使用后的准确率会提高,不能单单将其删掉得出来的速度提升作为唯一衡量标准,此处只提到对速度的提升却没有对整体效果进行分析,此处有点不解。

在这里插入图片描述基于上面四个实验本文得出一个高效的网络需要:

  1. 用等通道卷积
  2. 合理使用组卷积
  3. 减小碎片化程度
  4. 减少元素级操作

ShuffleNet v1 用的组卷积(G2)和瓶颈结构(G1)
MobileNet v2 用的倒置瓶颈(G1)、深度可分离卷积和ReLUs(G4)、自动生成结构(G3)

二、 ShuffleNet V2结构

单元结构

轻量级网络的主要挑战是,在给定的计算预算下,只有有限数量的特征信道是负担得起的(FLOPs),于是有两个被采取在固定的FLOPs下拓展通道的方法是:组卷积和瓶颈结构。后来用通道混洗来保证各组通道之间信息的流通来提高精度。基于上面的准则,可以看到代表ShuffleNet V1的a图与b图中增加MAC的组卷积和瓶颈结构(G1和G2),分组太多提高网络碎片化程度(G3),shortcut中的add操作(G4)
在这里插入图片描述从上图可以看到ShuffleNet V2在每个单元的开始引入channel split,将输入的特征图的c个通道分成c’和c-c’两个分支,右边分支的三个卷积有相同的输入输出通道(G1),两个1×1的卷积也不再是组卷积(G2),之前的channel split已经产生了两组。卷积过后两个分支concat后通道数不变(G1),然后通道混洗。
可以看到 “Concat”, “Channel Shuffle” and “Channel 被合并为单个元素级的操作(G4)

具体网络架构
这里的每个stage都是由前面的单元组成
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值