Mobilenet v1/2和Shufflenet v1/v2
Posted 爆米花好美啊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mobilenet v1/2和Shufflenet v1/v2相关的知识,希望对你有一定的参考价值。
好久没写深度学习方面的文章了,偷闲再写一篇
衡量指标
- FLOPS:floating point operations per second,每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标。
- FLOPs:floating point operations,浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。
- MACC: Multiply–accumulate operation,乘加操作次数,可以视为 1 MACC = 2 FLOPs (2*MACC=FLOPs)
Mobilenet v1
Mobilenet v1的核心就是讲标准的卷积分成depthwise conv和pointwise conv(1x1 conv),也即是文中说的Depthwise Separable Convolution。Depthwise Convolution是每个通道自己卷积,pointwise conv即是1x1卷积
参数变化:In * k * k * Out -------------------> k * k * In + 1 * 1 * In * out
计算量变化:In * k * k * H * W * Out -------------------> k * k * H * W * in+ 1 * 1 * H * W * In * out
N是输出channel,Dk是kernel size
Shufflenet v1
Mobilenet v1减少了3x3的卷积计算量,这时1x1成了瓶颈。
这时Shuffle net将1x1卷积变成group conv,depthwise conv可以看出group为1的group conv,但是利用group conv后group与group之间没有任何信息沟通对精度损失严重,因此需要shuffle一下输出的channel
注意DW后无relu,因为RELU对信息的损失是比较严重的
Mobilenet v2
贡献就是提出了逆向的残差结构(Inverted residuals)
(1)ResNet的残差结构是0.25倍降维,MobileNet V2残差结构是6倍升维。MobileNet v2由于有depthwise conv,通道数相对较少,所以残差中使用 了6倍的升维。
(2)ResNet的残差结构中33卷积为普通卷积,MobileNet V2中33卷积为depthwise conv
(relu6是6之后截断都输出6)
(1)v2版本在进入3*3卷积之前,先进行了1*1pointwise conv升维,并且经过RELU。
(2)1*1卷积出去后,没有进行RELU操作
Shufflenet v2
论文指出单纯的乘加运算FLOPs并不能完全表示模型的运算速度,访存开销memory access cost(MAC)也应该考虑进去。
利用MAC( memory access cost)指导设计
- 输入输出通道相同-最小化内存访问量
- 过量使用组卷积会增加MAC
- 网络碎片化会降低并行度(例如Inception)
- 不能忽略Element操作,虽然具有比较小的FlOPs数,但是却有比较大的访存MAC
最终结论:
- 使用平衡的卷积,(相同的输入,输出通道数)
- 组卷积的group数要谨慎设计
- 减少网络的并行度,减少碎片化
- 减少Element-wise 操作
前2个模块为ShuffleNet V1中的模块,(a)为传统模块,(b)为下采样模块
后2个模块为ShuffleNet V2中的模块,(c)为传统模块,(d)为下采样模块
V2和V1模块设计的区别:
- v2中的传统模块增加了channel split,假设原始输入通道数为c,将通道分成了c-c’和c’两个通道,实验中,c’=c/2 这种设计是为了尽量控制分支数,为了满足G3。
- 传统模块中将add操作转化为concat操作,有助于增加信息量,减少运算量
- 将Group conv换成了普通的conv,可以减少group数,减少MAC
- 将channle shuffle操作移到后面来做, 在堆叠ShuffleNet v2的时候,通道拼接,通道洗牌和通道分割可以合并成1个element-wise操作,也是为了满足G4。
- RELU的有无有些区别
- 从Inception v1,v2,v3,v4,RexNeXt到Xception再到MobileNets,ShuffleNet,MobileNetV2,ShuffleNetV2 很多图引用此博文
- ShuffNet v1 和 ShuffleNet v2
以上是关于Mobilenet v1/2和Shufflenet v1/v2的主要内容,如果未能解决你的问题,请参考以下文章
深度学习方法(十四):轻量级CNN网络设计——MobileNet,ShuffleNet,文末有思考
轻量级网络汇总:Inception,Xception,SqueezeNet,MobileNet v123Next,ShuffleNet v12,SENet,MNASNet,GhostNet,FBNet