精简CNN模型系列之六:ShuffleNet v2

介绍

才不久才刚刚写了MobileNet v2的博客,它来自Google。而今天看过了ShuffleNet v2,很是感慨。这篇来自Face++ Sun, Jian团队的paper与Google团行们的作品相比真正是有着鸿泥之别啊。Google的paper大多立足于理论挖掘,提出些似是而非的东东,然后再用实验结果立图去证其非伪,确实难懂,一般情况你不反复读个两、三遍是不会吃透的。。Face++的则立足于实际(可能是因为中国人写的英文比较合乎国人的思维习惯吧),一点点,娓娓道来,一切看上去顺理成章,翻过一遍就能让人恍然大悟,对其妙处更是击节赞赏半天不已。

以往的移动端的CNN设计在考虑计算节省时都直接致力于优化整体网络计算所需的Flops。但实际上一个网络模型的训练或推理过程Flops等计算只是其时间的一部分,其它像内存读写/外部数据IO操作等都会占不小比例的时间。为实际生产考虑,我们不应只限于去片面追求理论Flops的减少,更应该去看所设计的网络实际部署在不同类型芯片上时却具有的实际时间消耗。

在ShuffleNet v2这篇paper中,作者们重点分析了影响在GPU/ARM两种平台上CNN网络计算性能的几个主要指标,并提出了一些移动端CNN网络设计的指导准则(呵呵,这一点做法像是来自于Inception系列或者MobileNet系列文章啊),最终将这些指导准则应用于ShuffleNet v1网络的改良就行成了本篇所讲的ShuffleNet v2。在分类与目标检测等通用任务时与其它流利移动端网络相比,它都取得了不俗的性能。

ShuffleNet_v2与其它移动端网络在准确率_FPS及FLOPs上的比较

高效CNN网络设计的几个指导准则

这篇Paper让做网络优化的工程师读起来会感觉特别亲切,因为它足够地贴地气,像极了平时对应用程序的优化过程。即先对应用程序进行hotspots分析,看时间主要耗在了哪里。然后就分析各个hotspot的原因,再针对性地提出优化办法以减少整体所需的时间从而达到最终的性能指标。

CNN网络时间消耗分析

下图中分析了ShuffleNet v1与MobileNet v2这两个移动端流行网络在GPU/ARM两种平台下的时间消耗分布。

ShuffleNet_V1与MobileNet_V2上的时间消耗分析

从上图中可看出Conv等计算密集型操作占了其时间的绝大多数,但其它像Elemwise/Data IO等内存读写密集型操作也占了相当比例的时间,因此像以往那样一味以FLOPs来作为指导准则来设计CNN网络是不完备的,虽然它可以反映出占大比例时间的Conv操作。

高效CNN网络设计的四个准则

  • 当输入、输出channels数目相同时,conv计算所需的MAC(memory access cost)最为节省。

作者们在paper中从理论与实验上证明了此一准则的有效。以下关系表示了MAC与FLOPs(B)及输入、输出channels数目之间的关系。

输入-输出channels数目与MAC之间的关系

下表为其实验佐证。

Input_output_channels_数目与MAC之间的关系
  • 过多的Group convolution会加大MAC开销。

下面公式表明了在Group convolution操作中MAC与g之间的正比例关系。

MAC与group_convolution中g的正比例关系

下表结果则为其实验佐证。

group_convolution中groups_数目与MAC之间的关系
  • 网络结构整体的碎片化会减少其可并行优化的程序。

下表为作者在GPU/ARM两种平台上设计的分析并行/串行两种网络碎片方式对整体FPS所可能具有的影响。

网络碎片化程度对FPS的影响结果
  • Element-wise操作会消耗较多的时间,不可小视。

Element-wise操作是一种典型的memory access密集操作。所以它对整个网络计算所需的时间影响也挺大,不可轻视。下表为使用Element-wise操作前后网络所具有的FPS结果。

Element-wise_OP对网络计算时间的显著影响

ShuffleNet v2

ShuffleNet v1分析

在ShuffleNet v1的操作中充满了对上述章节介绍过的四个设计准则的违反。首先它使用了bottleneck 1x1 group conv与module最后的1x1 group conv pointwise模块,使得input channels数目与output channels数目差别较大,违反了上述规则一与规则二;其次由于它整体网络结构中过多的group conv操作的使用从而违反了上述规则三;最后类似于Residual模块中的大量Element-wise sum的使用则进而违反了上述规则四。

ShuffleNet v2的设计

ShuffleNet v2中弃用了1x1的group convolution操作,而直接使用了input/output channels数目相同的1x1普通conv。它更是提出了一种ChannelSplit新的类型操作,将module的输入channels分为两部分,一部分直接向下传递,另外一部分则进行真正的向后计算。到了module的末尾,直接将两分支上的output channels数目级连起来,从而规避了原来ShuffleNet v1中Element-wise sum的操作。然后我们再对最终输出的output feature maps进行RandomShuffle操作,从而使得各channels之间的信息相互交通。。精彩至极,看至此处已然拍案叫绝。

跟ShuffleNet v1一样,它也提供了一种需要downsampling的模块变形。为了保证在下采样的时候增加整体输出channels数目,它取消了模块最开始时的RandomSplit操作,从而将信处向下分别处理后再拼结,使得最终outptu channels数目实现翻倍。

说了一大通,更是直接看下图吧。下图中的a/b为原ShuffleNet v1中具有的两种模块结构。图c/d则为ShuffleNet v2中的模块设计。

ShuffleNet_V2的模块设计与ShuffleNet_V1的对比

下表为ShuffleNet v2的整体网络结构。它亦具有MobileNet系列模型中所使用过的缩减系数来控制accuracy与efficiency之间的平衡。

ShuffleNet_v2的整体网络结构

实验结果

下表中涵盖了Paper中进行的广泛实验。从中可看出ShuffleNet v2相对其它移动端网络所具有的分类精度及计算效率上的性能优势。

ShuffleNet_v2与其它网络在分类精度及时间复杂性与模型大小上的比较

参考文献

  • ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design, Ningning-Ma, 2018
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容