1. 概述
导读:文章指出现有使用例如FLOPs作为网络计算复杂度度量的方式是不准确的,还应该考虑诸如内存访问开销(MAC)以及平台特性等因素。这篇文章在固定的平台下进行实验分析(度量为速度与延迟),并给出了一些具有使用价值的网络设计指导意见。同时还提出了ShuffleNet的改进版本ShuffleNet v2,在网络性能与精度之间权衡做到了当时的state-of-the-art。
下面是当时的网络在不同平台下的实验结果,从网络的精度、FLOPs、时间消耗上进行分析对比:

作者从中做出如下总结:
- 1)文章指出除了FLOPs之外额外的因素需要被考虑进来,比如Memory Access Cost(MAC),特别是在使用分组卷积的时候;此外模型的并行程度也是影响计算时间长短的因素;
- 2)拥有相同FPLOs的模型会由于平台的关系拥有不同运行时间。在最新的CUDNN库中专门针对3x3的卷积进行了优化,在CNN网络中广泛使用的卷积分解并不会带来对应比例的速度提升;
2. 高效网络实践指导
这里使用MobileNet v2与ShuffleNet v1做为实验分析对象,在GPU(1080Ti)与ARM(高通810)上进行实验,得到这两个模型在两个平台上的运行时间分布对比,见图2所示
文中通过对比实验分析,得出了如下的网络设计指导意见:
-
1)相同的channel宽度能最小化MAC。现有的轻量级网络大多采用了深度可分离卷积,其一般的卷积核大小为1x1,其占据了较大的计算量。对于输入为 c 1 c_1 c1输出为 c 2 c_2 c2,特征图宽高为 w , h w,h w,h的卷积,其计算量为 B = h w c 1 c 2 B=hwc_1c_2 B=hwc1c2,对应的内存访问花销为 M A C = h w ( c 1 + c 2 ) + c 1 c 2 MAC=hw(c_1+c_2)+c_1c_2 MAC=hw(c1+c2)+c1c2,它们之间的关系可以表示为:
M A C ≥ 2 h w B + B h w MAC \ge 2\sqrt{hwB}+\frac{B}{hw} MAC≥2hwB
+hwB
当且仅当在输入与输出channel数目相同的时候取到下限。当然这只是理论的分析,实际还需要考虑到平台上具体的实现形式。对此呢,文章在保持总的FLOPs不变的情况下变化输出与输出的channel比例得到其时间消耗的关系,见表1所示
《ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design》论文笔记1. 概述2. 高效网络实践指导3. 网络设计3. 实验结果 -
2)过多的分组卷积会增加MAC。对于分组卷积其卷积的计算量为 B = h w c 1 c 2 g B=\frac{hwc_1c_2}{g} B=ghwc1c2,其中g为分组的数量,则MAC与计算量之间的关系可以表示为:
M A C = h w ( c 1 + c 2 ) + c 1 c 2 g = h w c 1 + B g c 1 + B h w MAC=hw(c_1+c_2)+\frac{c_1c_2}{g}=hwc_1+\frac{Bg}{c_1}+\frac{B}{hw} MAC=hw(c1+c2)+gc1c2=hwc1+c1Bg+hwB
从上面的关系可以看出睡着分组的增加MAC也是在增加的,对此进行的实验结果见表2所示
因而谨慎合适地选取分组的数量能够有效减少时间消耗,提升网络速度,这自然要在速度与网络性能上进行权衡。《ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design》论文笔记1. 概述2. 高效网络实践指导3. 网络设计3. 实验结果 - 3)网络的破碎(分支结构)会减少并行化程度。在类似于GoogLeNet与一些自动生成的网络结构里面多分支的结构是被广泛使用的,这样的结构对网络精度的提升是有帮助的,但是它会降低网络的效率,这是由于其对并行程度较高的GPU并不是很友好的。文中对分支结构对网络带来的影响做了实验分析,见表3所示 4)不可忽视的Element-wise操作。这些操作诸如,ReLU、AddTensor、AddBias,虽然带来的计算量比较小,但是其占用的MAC是很大的。特别的,depthwise convolution卷积可以看做是MAC与FLOPs比值较高的例子。表4中对比了移除ReLU与shortcut对网络速度带来的影响,见表4
《ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design》论文笔记1. 概述2. 高效网络实践指导3. 网络设计3. 实验结果 《ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design》论文笔记1. 概述2. 高效网络实践指导3. 网络设计3. 实验结果
3. 网络设计
Shuffle Unit
ShuffleNet v2版本网络结构:
3. 实验结果
首先,将文章提出的网络结构与现有的一些分类网络性能对比:
大网络性能对比: