ShuffleNet v2论文笔记

旷视科技近日公开了一篇CNN结构设计优化的文章(已被ECCV2018收录),分享下自己的阅读笔记。

文章提出:FLOPs虽然可以反映计算复杂度,但不能体现计算的速度和延迟(latency),最直观的例子就是MobileNet v2和NASNET-A具有相当的FLOPs,但前者的计算速度更快。作者分析形成差异的原因有两点:

a.MAC(Meomry Access Cost)即内存访问代价的不同

b.相同的FLOPs规模在不同平台速度表现不同(作者举例cudnn7.0对3x3卷积的优化)

结论:1.评测不仅考虑FLOPs,也要考虑运算速度

           2.使用特定的平台

 

作者提出了设计网络时的四项基本原则:

G1:输入输出通道相同,减少MAC

     1x1的卷积核,特征图的尺寸为h*w,输入特征channel为c_{1},输出特征channel为c_{2},FLOPs为:

     B=hwc_{1}c_{2}

     MAC的值为:

     MAC=hw(c_{1}+c_{2})+c_{1}c_{2}

     其中第一项对应特征图的输入输出,第二项是取卷积核的权值的次数

     根据平均值不等式得:

     MAC\geq 2\sqrt{hwB}+\frac{B}{hw} 

     因此MAC有下限,且在c_{1}c_{2}相等时取得最小值,据此得出原则一:相同的特征通道数可以减少内存访问代价

G2:过多的group convolution影响MAC

     group convolution的好处在于可以减少计算复杂度,group convolution的MAC和FLOPs的计算式如下:

     FLOPs=hwc_1c_2/g

     MAC=hw(c_{1}+c_{2})+\frac{c_{1}c_{2}}{g} \newline\indent\indent\indent=hwc_1+\frac{Bg}{c_1}+\frac{B}{hw}

     据此得出原则二:group的数量与MAC成正比    

G3:网络的碎片化(fragmentation)降低了并行性

        所谓的fragmentation就是指Inception系列网络,ResNet中一个block中卷积的数量(一般是小卷积核),而过多的fragmentation会导致GPU的并行计算性能无法发挥(对GPU的计算原理理解不深,懂得同学可以补充),作者通过对比实验也证明了这一影响,如下表:

        ShuffleNet v2论文笔记_第1张图片

G4:卷积之外的操作不可忽略

 ShuffleNet v2论文笔记_第2张图片

    上图中卷积以外的部分也占据了不少计算时间,其中Elemwise操作是指Relu,AddTensor等低FLOPs的操作,但是因为也涉及内存操作,所以不可忽略。

你可能感兴趣的:(ShuffleNet v2论文笔记)