ShuffleNet系列之ShuffleNet_v2

导言:

    目前一些网络模型如MobileNet_v1, v2,ShuffleNet_v1, Xception采用了分组卷积,深度可分离卷积等操作,这些操作在一定程度上大大减少了FLOPs,但FLOPs并不是一个直接衡量模型速度或者大小的指标,它只是通过理论上的计算量来衡量模型,然而在实际设备上,由于各种各样的优化计算操作,导致计算量并不能准确地衡量模型的速度,换言之,相同的FLOPs会有不同的推理速度。

    这是一篇类似于《Rethinking the Inception Architecture for Computer Vision》(即Inception_v2)的论文,在Inception_v2论文中提出了四条设计卷积网络模型的原则,Inception_v2就是基于这些原则上设计而来。同样,shuffleNet_v2(即《Pratical Guidelines for Efficient CNN Architecture Design》,一看这名字就知道很值得一读)指出了四个影响模型实际推理速度的操作,并在尽量避免这些操作的基础上提出了ShuffleNet_v2结构。

    ShuffleNet v2实现了在同样的FLOPs下,速度明显快于其他类似网络。例如,在500MFLOPs,ShuffleNet v2比MobileNet v2快58%,比ShuffleNet v1快63%,比Xception快25%。

Direct metrics

    前面提到FLOPs是通过理论上的计算量来衡量模型速度,这是一个indirect metrics,与direct metrics(如速度)之间是存在一些差异。主要原因一个是FLOPs忽略了一些重要的因素,一个是MAC (memory access cost),即内存访问的时间成本。例如分组卷积,其使得底层使用的一些优化实现算法由于分组后实现性能更低,从而导致,分组数越大,时间成本越高。另一个是并行度,同样FLOPs下,高并行度的模型速度快于低并行度的模型。

    第二个是不同平台下,同样的FLOPs的模型运行时间不同。例如在最新的CUDNN library中,优化实现的3x3卷积所花费的时间并没有1x1卷积的9倍。

    如图所示,这是一个模型在GPU上各项操作所花费的时间,FLOPs仅表示了Conv部分的计算量,而实际上Elemwise、Data相关部分也耗费相当大的时间。因此,仅仅使用FLOPs这个indirect metrics来衡量模型速度是不够的。

    ShuffleNet v2使用实际运行时间来衡量模型。

高效设计CNN模型的实际指南

    ShuffleNet v2进行了四项实验,得出了一些比较耗时的操作,经过原理分析,提出了四条设计原则。

1. 卷积层输入输出通道数相同时,MAC最小

2. 分组卷积的分组数越大,MAC越大

3. 网络支路会降低模型的并行度

4. Element-wise操作不可忽视

01 卷积层输入输出通道数相同时,MAC最小

    为简化计算表达式,这里使用1x1卷积来进行理论上的推导。

    对于空间大小为 h,w的特征图,输入和输出通道数分别为c1和c2,使用1x1卷积, 则FLOPs为B = h x w x c1 x c2。而MAC = hw(c1 + c2 ) + c1 x c2。这里hwc1为输入特征图内存访问成本,hwc2为输出特征图内存访问时间成本,c1xc2x1x1为卷积核内存访问时间成本。将B表达式代入MAC表达式中,并根据不等式定理,可有如下不等式:

    由此式可知,MAC存在下限,当c1 = c2时,MAC取最小值。因此,第一组实验即为在相同的FLOPs下,取不同的输入输出通道数的比值c1/c2,查看不同c1/c2下模型运行时间。

    如图所示,理论相当正确。在1:1时模型速度最快。

02 分组卷积的分组数越大,MAC越大

    分组卷积在一方面,使得在相同FLOPs下,分组数越大,在通道上的密集卷积就会越稀疏,模型精度也会增加,在另一方面,更多的分组数导致MAC增加。

    使用分组卷积的FLOPs表达式

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值