简介
ShuffleNet V2是对ShuffleNet V1的改进,是关于模型压缩和加速的文章。目前大部分关于模型加速和压缩的文章对比加速时的效果都是FLOPs,这个指标主要衡量的就是卷积层的乘法操作。但是具有相似网络特征的FLOPs有不同的速度,因此,仅仅使用FLOPs来作为计算复杂度的唯一指标是不够的。下图©(d)中相同的MFLOPs的网络实际速度差别却很大,说明以FLOPs作为指标是有问题的。
间接(FLOPs)和直接(speed)指标差异主要有两个原因。(1)内存访问消耗时间(MAC),比如组卷积开销占了运行时的很大一部分,可能会成为计算能力强的设备(如GPU)的瓶颈。另一个是并行度,相同FLOPs情况下,一个并行度高的模型可能比并行度低的模型快的多。(2)根据平台的不同,使用相同的FLOPs操作可能会有不同的运行时间。
有效的网络架构设计应该考虑两个原则:(1)使用直接度量(如速度),而不是间接度量(如FLOPs)。(2)应该在目标平台上评估这些度量。
为什么FLOPs相同的模型速度差别会这么大?接下来的四个实验一次介绍所要证明的内容。
G1
第一个实验是关于卷积层的输入输出特征通道数对MAC的影响。结论是卷积层的输入和输出特征通道数相等时MAC最小,此时的模型速度最快
假设一个1 * 1卷积层的输入特征通道数是C1,输出特征通道数是C2,输出特征尺寸是h和w,这样一个1 * 1的卷积层的FLOPs就是下式,这里省略了1 * 1.
接下来看存储空间,因为是1 * 1卷积,所以输入特征和输出特征的尺寸是相同的,这里用h和w表示,其中hwc1表示输入特征所需存储空间,hwc2表示输出特征所需存储空间,c1c2表示卷积核所需存储空间。