精簡(jiǎn)CNN模型系列之六:ShuffleNet v2

介紹

才不久才剛剛寫了MobileNet v2的博客干毅,它來(lái)自Google蓬网。而今天看過(guò)了ShuffleNet v2瘸味,很是感慨切端。這篇來(lái)自Face++ Sun, Jian團(tuán)隊(duì)的paper與Google團(tuán)行們的作品相比真正是有著鴻泥之別啊型将。Google的paper大多立足于理論挖掘寂祥,提出些似是而非的東東,然后再用實(shí)驗(yàn)結(jié)果立圖去證其非偽七兜,確實(shí)難懂丸凭,一般情況你不反復(fù)讀個(gè)兩、三遍是不會(huì)吃透的腕铸。惜犀。Face++的則立足于實(shí)際(可能是因?yàn)橹袊?guó)人寫的英文比較合乎國(guó)人的思維習(xí)慣吧),一點(diǎn)點(diǎn)狠裹,娓娓道來(lái)向拆,一切看上去順理成章,翻過(guò)一遍就能讓人恍然大悟酪耳,對(duì)其妙處更是擊節(jié)贊賞半天不已浓恳。

以往的移動(dòng)端的CNN設(shè)計(jì)在考慮計(jì)算節(jié)省時(shí)都直接致力于優(yōu)化整體網(wǎng)絡(luò)計(jì)算所需的Flops刹缝。但實(shí)際上一個(gè)網(wǎng)絡(luò)模型的訓(xùn)練或推理過(guò)程Flops等計(jì)算只是其時(shí)間的一部分,其它像內(nèi)存讀寫/外部數(shù)據(jù)IO操作等都會(huì)占不小比例的時(shí)間颈将。為實(shí)際生產(chǎn)考慮梢夯,我們不應(yīng)只限于去片面追求理論Flops的減少,更應(yīng)該去看所設(shè)計(jì)的網(wǎng)絡(luò)實(shí)際部署在不同類型芯片上時(shí)卻具有的實(shí)際時(shí)間消耗晴圾。

在ShuffleNet v2這篇paper中颂砸,作者們重點(diǎn)分析了影響在GPU/ARM兩種平臺(tái)上CNN網(wǎng)絡(luò)計(jì)算性能的幾個(gè)主要指標(biāo),并提出了一些移動(dòng)端CNN網(wǎng)絡(luò)設(shè)計(jì)的指導(dǎo)準(zhǔn)則(呵呵死姚,這一點(diǎn)做法像是來(lái)自于Inception系列或者M(jìn)obileNet系列文章叭伺摇),最終將這些指導(dǎo)準(zhǔn)則應(yīng)用于ShuffleNet v1網(wǎng)絡(luò)的改良就行成了本篇所講的ShuffleNet v2都毒。在分類與目標(biāo)檢測(cè)等通用任務(wù)時(shí)與其它流利移動(dòng)端網(wǎng)絡(luò)相比色罚,它都取得了不俗的性能。

ShuffleNet_v2與其它移動(dòng)端網(wǎng)絡(luò)在準(zhǔn)確率_FPS及FLOPs上的比較

高效CNN網(wǎng)絡(luò)設(shè)計(jì)的幾個(gè)指導(dǎo)準(zhǔn)則

這篇Paper讓做網(wǎng)絡(luò)優(yōu)化的工程師讀起來(lái)會(huì)感覺(jué)特別親切账劲,因?yàn)樗銐虻刭N地氣戳护,像極了平時(shí)對(duì)應(yīng)用程序的優(yōu)化過(guò)程。即先對(duì)應(yīng)用程序進(jìn)行hotspots分析瀑焦,看時(shí)間主要耗在了哪里腌且。然后就分析各個(gè)hotspot的原因,再針對(duì)性地提出優(yōu)化辦法以減少整體所需的時(shí)間從而達(dá)到最終的性能指標(biāo)榛瓮。

CNN網(wǎng)絡(luò)時(shí)間消耗分析

下圖中分析了ShuffleNet v1與MobileNet v2這兩個(gè)移動(dòng)端流行網(wǎng)絡(luò)在GPU/ARM兩種平臺(tái)下的時(shí)間消耗分布铺董。

ShuffleNet_V1與MobileNet_V2上的時(shí)間消耗分析

從上圖中可看出Conv等計(jì)算密集型操作占了其時(shí)間的絕大多數(shù),但其它像Elemwise/Data IO等內(nèi)存讀寫密集型操作也占了相當(dāng)比例的時(shí)間禀晓,因此像以往那樣一味以FLOPs來(lái)作為指導(dǎo)準(zhǔn)則來(lái)設(shè)計(jì)CNN網(wǎng)絡(luò)是不完備的柄粹,雖然它可以反映出占大比例時(shí)間的Conv操作。

高效CNN網(wǎng)絡(luò)設(shè)計(jì)的四個(gè)準(zhǔn)則

  • 當(dāng)輸入匆绣、輸出channels數(shù)目相同時(shí)驻右,conv計(jì)算所需的MAC(memory access cost)最為節(jié)省。

作者們?cè)趐aper中從理論與實(shí)驗(yàn)上證明了此一準(zhǔn)則的有效崎淳。以下關(guān)系表示了MAC與FLOPs(B)及輸入堪夭、輸出channels數(shù)目之間的關(guān)系。

輸入-輸出channels數(shù)目與MAC之間的關(guān)系

下表為其實(shí)驗(yàn)佐證拣凹。

Input_output_channels_數(shù)目與MAC之間的關(guān)系
  • 過(guò)多的Group convolution會(huì)加大MAC開(kāi)銷森爽。

下面公式表明了在Group convolution操作中MAC與g之間的正比例關(guān)系。

MAC與group_convolution中g(shù)的正比例關(guān)系

下表結(jié)果則為其實(shí)驗(yàn)佐證嚣镜。

group_convolution中g(shù)roups_數(shù)目與MAC之間的關(guān)系
  • 網(wǎng)絡(luò)結(jié)構(gòu)整體的碎片化會(huì)減少其可并行優(yōu)化的程序爬迟。

下表為作者在GPU/ARM兩種平臺(tái)上設(shè)計(jì)的分析并行/串行兩種網(wǎng)絡(luò)碎片方式對(duì)整體FPS所可能具有的影響。

網(wǎng)絡(luò)碎片化程度對(duì)FPS的影響結(jié)果
  • Element-wise操作會(huì)消耗較多的時(shí)間菊匿,不可小視付呕。

Element-wise操作是一種典型的memory access密集操作计福。所以它對(duì)整個(gè)網(wǎng)絡(luò)計(jì)算所需的時(shí)間影響也挺大,不可輕視徽职。下表為使用Element-wise操作前后網(wǎng)絡(luò)所具有的FPS結(jié)果象颖。

Element-wise_OP對(duì)網(wǎng)絡(luò)計(jì)算時(shí)間的顯著影響

ShuffleNet v2

ShuffleNet v1分析

在ShuffleNet v1的操作中充滿了對(duì)上述章節(jié)介紹過(guò)的四個(gè)設(shè)計(jì)準(zhǔn)則的違反。首先它使用了bottleneck 1x1 group conv與module最后的1x1 group conv pointwise模塊姆钉,使得input channels數(shù)目與output channels數(shù)目差別較大说订,違反了上述規(guī)則一與規(guī)則二;其次由于它整體網(wǎng)絡(luò)結(jié)構(gòu)中過(guò)多的group conv操作的使用從而違反了上述規(guī)則三潮瓶;最后類似于Residual模塊中的大量Element-wise sum的使用則進(jìn)而違反了上述規(guī)則四陶冷。

ShuffleNet v2的設(shè)計(jì)

ShuffleNet v2中棄用了1x1的group convolution操作,而直接使用了input/output channels數(shù)目相同的1x1普通conv毯辅。它更是提出了一種ChannelSplit新的類型操作埂伦,將module的輸入channels分為兩部分,一部分直接向下傳遞悉罕,另外一部分則進(jìn)行真正的向后計(jì)算赤屋。到了module的末尾立镶,直接將兩分支上的output channels數(shù)目級(jí)連起來(lái)壁袄,從而規(guī)避了原來(lái)ShuffleNet v1中Element-wise sum的操作。然后我們?cè)賹?duì)最終輸出的output feature maps進(jìn)行RandomShuffle操作媚媒,從而使得各channels之間的信息相互交通嗜逻。。精彩至極缭召,看至此處已然拍案叫絕栈顷。

跟ShuffleNet v1一樣,它也提供了一種需要downsampling的模塊變形嵌巷。為了保證在下采樣的時(shí)候增加整體輸出channels數(shù)目萄凤,它取消了模塊最開(kāi)始時(shí)的RandomSplit操作,從而將信處向下分別處理后再拼結(jié)搪哪,使得最終outptu channels數(shù)目實(shí)現(xiàn)翻倍靡努。

說(shuō)了一大通,更是直接看下圖吧晓折。下圖中的a/b為原ShuffleNet v1中具有的兩種模塊結(jié)構(gòu)惑朦。圖c/d則為ShuffleNet v2中的模塊設(shè)計(jì)。

ShuffleNet_V2的模塊設(shè)計(jì)與ShuffleNet_V1的對(duì)比

下表為ShuffleNet v2的整體網(wǎng)絡(luò)結(jié)構(gòu)漓概。它亦具有MobileNet系列模型中所使用過(guò)的縮減系數(shù)來(lái)控制accuracy與efficiency之間的平衡漾月。

ShuffleNet_v2的整體網(wǎng)絡(luò)結(jié)構(gòu)

實(shí)驗(yàn)結(jié)果

下表中涵蓋了Paper中進(jìn)行的廣泛實(shí)驗(yàn)。從中可看出ShuffleNet v2相對(duì)其它移動(dòng)端網(wǎng)絡(luò)所具有的分類精度及計(jì)算效率上的性能優(yōu)勢(shì)胃珍。

ShuffleNet_v2與其它網(wǎng)絡(luò)在分類精度及時(shí)間復(fù)雜性與模型大小上的比較

參考文獻(xiàn)

  • ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design, Ningning-Ma, 2018
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末梁肿,一起剝皮案震驚了整個(gè)濱河市蜓陌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌栈雳,老刑警劉巖护奈,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異哥纫,居然都是意外死亡霉旗,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門蛀骇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)厌秒,“玉大人,你說(shuō)我怎么就攤上這事擅憔⊥疑粒” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵暑诸,是天一觀的道長(zhǎng)蚌讼。 經(jīng)常有香客問(wèn)我,道長(zhǎng)个榕,這世上最難降的妖魔是什么篡石? 我笑而不...
    開(kāi)封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮西采,結(jié)果婚禮上凰萨,老公的妹妹穿的比我還像新娘。我一直安慰自己械馆,他們只是感情好胖眷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著霹崎,像睡著了一般珊搀。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上尾菇,一...
    開(kāi)封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天境析,我揣著相機(jī)與錄音,去河邊找鬼错沽。 笑死簿晓,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的千埃。 我是一名探鬼主播憔儿,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼放可!你這毒婦竟也來(lái)了谒臼?” 一聲冷哼從身側(cè)響起朝刊,我...
    開(kāi)封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蜈缤,沒(méi)想到半個(gè)月后拾氓,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡底哥,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年咙鞍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片趾徽。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡续滋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出孵奶,到底是詐尸還是另有隱情疲酌,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布了袁,位于F島的核電站朗恳,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏载绿。R本人自食惡果不足惜粥诫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望卢鹦。 院中可真熱鬧臀脏,春花似錦劝堪、人聲如沸冀自。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)熬粗。三九已至,卻和暖如春余境,著一層夾襖步出監(jiān)牢的瞬間驻呐,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工芳来, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留含末,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓即舌,卻偏偏與公主長(zhǎng)得像佣盒,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子顽聂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容