[23組] ShuffleNet:An Extremely Efficient Convolutional Neural Network for Mobile Devices

ShuffleNet:An Extremely Efficient Convolutional Neural Network for Mobile Devices一種非常有效的移動(dòng)設(shè)備卷積神經(jīng)網(wǎng)絡(luò)

小組成員:吳坤帥,薄雨蒙,黃麟舒,田磊

1. 簡介

近年來關(guān)于卷積模型的研究層出不窮,產(chǎn)生了如VGG、ResNet、Xception和ResNeXt等性能優(yōu)異的網(wǎng)絡(luò)結(jié)構(gòu),在多個(gè)視覺任務(wù)上超過了人類水平。現(xiàn)在的CNNs模型已經(jīng)具有很高的精度了,最精確的CNN往往需要幾百層和幾千個(gè)信道,因此需要billion級(jí)的FLOPS計(jì)算量,顯然這就限制了此類模型只能用于高性能的服務(wù)器集群,需要一個(gè)更大體積的計(jì)算設(shè)備來完成,而對(duì)于很多移動(dòng)端應(yīng)用無能為力。。當(dāng)我們需要在諸如手機(jī)、無人機(jī)或機(jī)器人等移動(dòng)設(shè)備上進(jìn)行神經(jīng)卷積操作時(shí),無法應(yīng)用這類型的模型。因此我們需要一個(gè)在能滿足足夠的精確計(jì)算得同時(shí)具有較小體積的模型。

解決這一難題的方法之一是設(shè)計(jì)更為輕量級(jí)的模型結(jié)構(gòu)。ShuffleNet 效率極高的CNN架構(gòu),專門應(yīng)用于計(jì)算能力受限的移動(dòng)設(shè)備上。這個(gè)新的架構(gòu)利用兩個(gè)新的操作:逐點(diǎn)的群卷積和信道混洗。這兩個(gè)操作可以有效地降低計(jì)算消耗,同時(shí)又能保證一定的精確度。群卷積操作可以減少由于1x1卷積引入的計(jì)算復(fù)雜度,信道混洗可以促進(jìn)信息在信道的流動(dòng)來減少群卷積引入的副作用。這樣我們就可以通過使用更少的信道,獲得盡量多的編碼信息。

在Imagenet分類和MSCOCO上做的實(shí)驗(yàn)證明了ShuffleNet 具有良好的效果,在基于ARM結(jié)構(gòu)的移動(dòng)設(shè)備上,ShuffleNet在保證計(jì)算精確度的同時(shí)能達(dá)到比AlexNet具有更高的速度。著可以證明,ShuffleNet在小型設(shè)備上的可用性。

2.理論基礎(chǔ)

2.1群卷積操作

現(xiàn)代的神經(jīng)卷積網(wǎng)絡(luò)通常包括了許多重復(fù)的模塊。比如最先進(jìn)的Xception和ResNeXt引入了有效的逐深度卷積的方式或是群卷積方式,在表達(dá)能力和計(jì)算復(fù)雜度中找到折中。但這兩種方法都存在一個(gè)缺點(diǎn),他們沒有充分優(yōu)化計(jì)算中的1x1逐點(diǎn)卷積(逐點(diǎn)卷積需要很大的復(fù)雜度)。例如,對(duì)于RexNeXt中的每個(gè)殘余單元,逐點(diǎn)卷積占用了93.4%的乘法和加法(multilplication-adds)(基數(shù)為32)。在小型網(wǎng)絡(luò)中,逐點(diǎn)卷積占據(jù)了許多信道,結(jié)果我們在使用信道去做其他計(jì)算時(shí)捉襟見肘,降低計(jì)算的精確度。

解決這個(gè)問題,最直接的方式是應(yīng)用信道稀疏連接(channel sparse connections),比如也對(duì)1x1的層也做群卷積。通過確定每個(gè)卷積操作僅發(fā)生在相應(yīng)的輸入信道組上,群卷積有效地減少了計(jì)算量。然而這樣會(huì)帶來一個(gè)新的問題,如果多個(gè)群卷積堆疊到一起,產(chǎn)生了副作用:信道的輸出僅由較少的輸入信息決定,如圖1(a)中所示,兩個(gè)棧道進(jìn)行群卷積,可以看到,一個(gè)信道的輸出只與該組輸入有關(guān)。這回阻斷信道之間的信息流動(dòng),降低信息的表達(dá)能力。


圖1. 群卷積中的信道混洗操作 (a)未進(jìn)行混洗,信道輸出僅與相應(yīng)的輸入通道有關(guān)。(b)第二次卷積時(shí),各組輸入信息取自第一次卷積后的不同輸出組。(c)使用信道混洗實(shí)現(xiàn)與(b)相同的功能。

要解決這個(gè)問題,就要讓信息在不同棧道之間流動(dòng)起來。我們允許群卷積從不同的組中得到輸入信息,輸入和輸出的各信道將會(huì)緊密相關(guān)。如圖(b)所示。我們將進(jìn)行過一次卷積后得到的特征劃分成一些小的子組,然后在下一個(gè)層的各組中填充這些不同的子組。如同我們在圖中看到的,棧道的輸出信號(hào)將于各個(gè)輸入棧道相關(guān)。這個(gè)操作對(duì)于兩個(gè)卷積層有不同數(shù)量的組的情況也有效。另外,通道卷積也是可導(dǎo)的,這意味著它可以被嵌入到端到端訓(xùn)練(end to end training)的網(wǎng)絡(luò)結(jié)構(gòu)中。

我們可以使用信道混洗來實(shí)現(xiàn)與(b)一致的功能,如圖(c)所示。我們要做的是將第一次輸出的信息,分成幾個(gè)小組,并分別分配到下一層的輸入。這樣第二層的輸入就同時(shí)包含來自上一層的不同組的信息。

具體的混洗操作如下圖所示。假設(shè)一個(gè)卷積層有g(shù)個(gè)組,每組分成n信道。我們將輸入的棧道reshape成(g,n)維的矩陣,然后轉(zhuǎn)置,再重新分配作為輸出。


圖2. 混洗的具體操作

2.2.ShuffleNet單元

針對(duì)信道混洗,我們專門建立了小型的ShuffleNet單元。如圖(3)所示。

1).a中的是一個(gè)殘差模塊。對(duì)于其中的3x3卷積,我們使用逐深度卷積。剩下的兩個(gè)1x1卷積中,我們把第一個(gè)卷積替換成逐點(diǎn)群卷積,并對(duì)輸出信號(hào)進(jìn)行信道混洗。

2).b中是我們建立的ShuffleNet單元。我們把第二次1x1點(diǎn)卷積也替換群卷積,目的是匹配灰度通道的維度。我們不需要在第二個(gè)逐點(diǎn)卷積層后使用額外的信道混洗操作。

3).c中,我們在支線上添加了步長為2的3x3均值池化,并且用信道串聯(lián)替代了元素相加操作,這樣可以在只付出一點(diǎn)額外計(jì)算量的代價(jià)下擴(kuò)大信道的維度。

由于使用通道洗牌和逐點(diǎn)群卷積,ShuffleNet中的所有部件可以被有效地計(jì)算出來。在相同設(shè)置下,這個(gè)模型比ResNet和ResNeXt的復(fù)雜度低。比如,給定輸入尺寸c x h x w,瓶頸通道m(xù),卷積組數(shù)目為g,各模型需要的計(jì)算量分別為:

也就是說,對(duì)于給定的計(jì)算量限制,ShuffleNet可以使用更廣的特征譜。另外,在ShuffleNet中逐深度卷積只使用在瓶頸特征譜上。雖然逐深度卷積通常有很低的理論復(fù)雜度,它在低功耗的移動(dòng)設(shè)備上很難實(shí)現(xiàn),可能會(huì)導(dǎo)致與其它密集操作相比很差的計(jì)算復(fù)雜度。在ShuffleNet單元中,我們只在瓶頸單元處使用逐深度卷積


圖3. ShuffleNet單元 (a)瓶頸單元,(b)使用群卷積和混洗的ShuffleNet單元,(c)ShuffleNet單元(步長=2)

3.實(shí)驗(yàn)

實(shí)驗(yàn)的設(shè)置大多與ResNet相關(guān)實(shí)驗(yàn)相同,區(qū)別在于(1).權(quán)重衰減降低到了4e-5;(2).數(shù)據(jù)增強(qiáng)只使用了微量的aggressive scale augmentation。之所以做出這樣的改變是因?yàn)樵谛⌒途W(wǎng)絡(luò)中欠擬合問題比較突出。


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

4.1 群卷積的影響

作者對(duì)于計(jì)算復(fù)雜度為140MFLOPs 、 40MFLOPs、13MFLOPs的ShuffleNet模型,在控制模型復(fù)雜度的同時(shí)對(duì)比了分組化逐點(diǎn)卷積的組數(shù)在1~8時(shí)分別對(duì)于性能的影響。復(fù)雜度一致的情況下,改變組數(shù)來改變輸出的信道數(shù)量。結(jié)果如表1。從表1中看出,帶有分組(g>1)的網(wǎng)絡(luò)比不帶分組(g=1)的網(wǎng)絡(luò)錯(cuò)誤率低。錯(cuò)誤率首先隨著組數(shù)的提高下降這顯示了群卷積將獲得更多的信息。對(duì)于較小的網(wǎng)絡(luò),較大的分組會(huì)得到更好的結(jié)果,組數(shù)增加時(shí),每個(gè)卷積濾波器的輸入通道越來越窄,模型將會(huì)丟失一部分信息,較寬的通道對(duì)于小網(wǎng)絡(luò)尤為重要。所以移除了網(wǎng)絡(luò)第三階段的兩個(gè)結(jié)構(gòu)單元,將節(jié)省下來的運(yùn)算量用來增加網(wǎng)絡(luò)寬度后,網(wǎng)絡(luò)性能進(jìn)一步提高。


表1. 復(fù)雜度相同情況下不同組數(shù)對(duì)錯(cuò)誤率的影響

4.2 混洗的影響

有沒有進(jìn)行混洗顯然會(huì)對(duì)錯(cuò)誤率造成影響。表2顯示了模型在有/無混洗的情況下的錯(cuò)誤率區(qū)別。可以看到第一次群卷積后進(jìn)行信道混洗可以有效的減少錯(cuò)誤率。


表2 有無混洗時(shí)對(duì)錯(cuò)誤率的影響

4.3 與其他模型的比較

對(duì)比其他的模型,包括VGG,ResNet,GoogleNet,ResNeXt和Xception,發(fā)現(xiàn)ShuffleNet在兼顧計(jì)算準(zhǔn)確度和復(fù)雜度方面有著最好的表現(xiàn)。


5. 總結(jié)

ShuffleNet的整體網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)延續(xù)了ResNeXt的設(shè)計(jì)思路,主要的差異之處在于,ShuffleNet將瓶頸中的1*1點(diǎn)卷積換成了群卷積。因?yàn)閷?shí)際1x1點(diǎn)卷積也占據(jù)了很大一部分計(jì)算量,原本的3x3群卷積用最極端的深度卷積代替。為了解決逐點(diǎn)群卷積造成的上一層群卷積中特定的一些信息只作用于下一層一部分。群卷積帶來的弱表達(dá)問題,把上一層不同群卷積得到的特征做了一個(gè)信道混洗,來保證信息在不同信道之間的流動(dòng)。

ShuffleNet的實(shí)驗(yàn)結(jié)果優(yōu)于MobileNet,相比MobileNet提高了準(zhǔn)確率,突顯了分組卷積在運(yùn)算效率上的優(yōu)勢,特別是用在小模型上。

總體來說,ShuffleNet通過引進(jìn)了信道混洗解決了分組卷積的信道相關(guān)問題,并且也驗(yàn)證了其有效性。ShuffleNet具有著理論創(chuàng)新性和實(shí)用性。在理論上,ShuffleNet用了一種輕量級(jí)的方法結(jié)局了傳統(tǒng)意義上AlexNet原有的分組并行信息交互問題,而且ShuffleNet的網(wǎng)絡(luò)效率很高,適合體積小的嵌入式產(chǎn)品。但是現(xiàn)有的CPU對(duì)信道混洗也很難支持上,畢竟破壞了數(shù)據(jù)存儲(chǔ)的連續(xù)性后,SIMD的發(fā)揮差強(qiáng)人意,需要在實(shí)現(xiàn)上再下一點(diǎn)功夫。


參考文獻(xiàn):

[1].Zhang X, Zhou X, Lin M, et al. ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices[J]. 2017.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,119評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,382評(píng)論 3 415
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,038評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,853評(píng)論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,616評(píng)論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,112評(píng)論 1 323
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,192評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,355評(píng)論 0 288
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,869評(píng)論 1 334
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,727評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,928評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,467評(píng)論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,165評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,570評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,813評(píng)論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,585評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,892評(píng)論 2 372

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