摘要:和分別引進(jìn)了深度分離卷積和分組卷積來權(quán)衡模型表示能力與計(jì)算量。在通道數(shù)量上使用縮放因子來調(diào)節(jié)網(wǎng)絡(luò)復(fù)雜度,文中以表示。的基礎(chǔ)是逐點(diǎn)分組卷積和通道重排,分別考察這兩者的作用。
ShuffleNet
ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices
Xiangyu Zhang, Xinyu Zhou, Mengxiao Lin, Jian Sun
本文提出一種計(jì)算效率極高的CNN架構(gòu)——ShuffleNet,主要應(yīng)用于計(jì)算能力有限(例如10-150 MFLOPs)的移動設(shè)備中。ShuffleNet架構(gòu)中利用了兩個(gè)新的操作,逐點(diǎn)分組卷積(pointwise group convolution)和通道重排(channel shuffle),在保持準(zhǔn)確率的前提下極大地減少計(jì)算量。在ImageNet分類和MS COCO檢測任務(wù)上的實(shí)驗(yàn)表明,ShuffleNet的性能比其他結(jié)構(gòu)(例如MobileNet)更優(yōu)越。ShuffleNet在基于ARM的移動設(shè)備中的實(shí)際運(yùn)行速度要比AlexNet快約13倍,且準(zhǔn)確率基本保持不變。
1. Introduction本文主要聚焦于設(shè)計(jì)一種計(jì)算開支很小但準(zhǔn)確率高的網(wǎng)絡(luò),主要應(yīng)用于移動平臺如無人機(jī)、機(jī)器人、手機(jī)等。之前的一些工作主要是對“基礎(chǔ)”網(wǎng)絡(luò)架構(gòu)進(jìn)行修剪(pruning)、壓縮(compressing)、低精度表示(low-bit representing)等處理來達(dá)到降低計(jì)算量的目的,而本文是要探索一種高效計(jì)算的基礎(chǔ)網(wǎng)絡(luò)。
當(dāng)前最先進(jìn)的基礎(chǔ)網(wǎng)絡(luò)架構(gòu)如Xception、ResNeXt在極小的網(wǎng)絡(luò)中計(jì)算效率變低,主要耗費(fèi)在密集的1x1卷積計(jì)算上。本文提出使用逐點(diǎn)分組卷積(pointwise group convolution)替代1x1卷積來減小計(jì)算復(fù)雜度,另為了消除其帶來的副作用,使用通道重排(channel shuffle)來改進(jìn)特征通道中的信息流動,基于這兩個(gè)操作構(gòu)建了高效計(jì)算的ShuffleNet。在同樣的計(jì)算開支下,ShuffleNet比其他流行的機(jī)構(gòu)有更多的特征圖通道數(shù)量,可以編碼更多的信息,這對于很小的網(wǎng)絡(luò)的性能是尤為重要的。
Efficient Model Designs
在嵌入式設(shè)備上運(yùn)行高質(zhì)量深度神經(jīng)網(wǎng)絡(luò)的需求促進(jìn)了對高效模型設(shè)計(jì)的研究。GoogLeNet在增加網(wǎng)絡(luò)深度時(shí)隨之增加的復(fù)雜度比簡單堆疊卷積層的方式要低得多。SqueezeNet可以在保持準(zhǔn)確率的前提下大幅降低參數(shù)量和計(jì)算量。ResNet中使用bottleneck結(jié)構(gòu)來提高計(jì)算效率。AlexNet中提出分組卷積是為了將模型分配到兩個(gè)GPU中,在ResNeXt中被發(fā)現(xiàn)可以用于提高網(wǎng)絡(luò)性能。Xception中提出的深度分離卷積(depthwise separable convolution,逐通道卷積+全通道1x1卷積)是對Inception系列中分離卷積思想的推廣。MobileNet使用深度分離卷積構(gòu)建輕量級模型獲得當(dāng)前最先進(jìn)的結(jié)果。本文將分組卷積和深度分離卷積推廣到一種新的形式。
Model Acceleration
這個(gè)方向主要是在保持預(yù)訓(xùn)練模型準(zhǔn)確率的前提下對預(yù)測過程進(jìn)行加速。有的方法是通過修剪網(wǎng)絡(luò)連接或通道來減少預(yù)訓(xùn)練模型中的冗余連接。量化(quantization)和因式分解(factorization)也可以減少冗余。還有一些方法并不是改變參數(shù),而是用FFT或其他方法來優(yōu)化卷積算法的實(shí)現(xiàn)以達(dá)到加速的目的。蒸餾(distilling)將大模型中的知識遷移到小模型中,使小模型更易于訓(xùn)練。與上述方法相比,本文主要聚焦于設(shè)計(jì)更好的模型來提高性能,而不是加速或遷移已有的模型。
Xception和ResNeXt分別引進(jìn)了深度分離卷積(depthwise separable convolution)和分組卷積(group convolution)來權(quán)衡模型表示能力與計(jì)算量。但是這些設(shè)計(jì)都沒有考慮其中的1x1卷積(也被稱為逐點(diǎn)卷積(pointwise convolutions)),這部分也是需要很大的計(jì)算量的。舉例來說,ResNeXt中只有3x3卷積采用分組卷積,那么每個(gè)殘差block中93.4%的乘加計(jì)算來自于逐點(diǎn)卷積,在極小的網(wǎng)絡(luò)中逐點(diǎn)卷積會限制通道的數(shù)量,進(jìn)而影響到模型性能。
為了解決這個(gè)問題,一個(gè)簡單的解決方法就是在通道維度上應(yīng)用稀疏連接,比如在1x1卷積上也采用分組卷積的方式。但是這樣做會帶來副作用:輸出中的每個(gè)通道數(shù)據(jù)只是由輸入中同組的通道數(shù)據(jù)推導(dǎo)得到的(如圖1(a)所示),這會阻礙信息在不同分組的通道間的流動,減弱網(wǎng)絡(luò)的表示能力。
如果讓每個(gè)組的卷積可以獲得其他組的輸入數(shù)據(jù)(如圖1(b)所示),那么輸入/輸出的各通道就是完全相關(guān)的。為了達(dá)到這個(gè)目的,可以將每組卷積的輸出再細(xì)分,然后將細(xì)分的子組分別傳輸?shù)较乱粚拥牟煌M中。這個(gè)操作可以由通道重排(channel shuffle)來實(shí)現(xiàn):假設(shè)分為g個(gè)組進(jìn)行卷積,每組輸出n個(gè)通道,那么輸出的總通道數(shù)就是gxn,先將輸出的維度變成(g,n),然后轉(zhuǎn)置,最后還原為nxg的數(shù)據(jù)即可,結(jié)果如圖1(c)所示。將通道重排后的數(shù)據(jù)作為下一層分組卷積的輸入即可,這樣的操作不要求兩個(gè)分組卷積層有相同的分組數(shù)量。
channel shuffle流程見下圖:
之前的網(wǎng)絡(luò)(ResNeXt、Xception)只對3x3卷積進(jìn)行分組/逐通道卷積,現(xiàn)在在1x1卷積(也稱為pointwise convolution)上也應(yīng)用分組卷積,稱為逐點(diǎn)分組卷積(1x1卷積+分組卷積),然后再加上通道重排操作,就可以在ResNet的基礎(chǔ)上構(gòu)建ShuffleNet,其單元結(jié)構(gòu)見圖2。
在ResNet的基礎(chǔ)上,首先將殘差block中的3x3卷積層替換為逐通道卷積(depthwise convolution)(如圖2(a)所示)。然后將第一個(gè)1x1卷積層替換為逐點(diǎn)分組卷積加上通道重排的操作,這樣就構(gòu)成了ShuffleNet單元(如圖(b)所示)。第二個(gè)逐點(diǎn)分組卷積是為了恢復(fù)原來的通道維度,為了簡單起見并沒有在它后面添加通道重排的操作,這和添加時(shí)得到的結(jié)果基本相同。BN和非線性激活的使用和ResNet/ResNeXt中類似,另外在逐層卷積后不使用ReLU也遵循了Xception。當(dāng)空間維度減半時(shí),在快捷連接(shortcut path)上添加尺寸3x3步幅2的平均池化層,逐通道卷積步幅為2,最后將兩者相加的操作替換為拼接,這樣輸出通道數(shù)自然就加倍了,所做修改如圖2(c)所示。
相比同樣配置的ResNet和ResNeXt,ShuffleNet的計(jì)算量要低得多。假設(shè)輸入數(shù)據(jù)大小為c*h*w,bottleneck層(1x1+3x3+1x1)通道數(shù)為m,那么ResNet單元需要hw(2cm+9m*m) FLOPs,ResNeXt需要hw(2cm+9m*m/g) FLOPs,而ShuffleNet只需要hw(2cm/g+9m) FLOPs,其中g(shù)為分組數(shù)量。也就是說在給定計(jì)算開支的情況下ShuffleNet可以包含更多特征映射,這對于小網(wǎng)絡(luò)來說非常重要,因?yàn)楹苄〉木W(wǎng)絡(luò)一般沒有足夠的通道數(shù)量來進(jìn)行信息傳輸。
逐通道卷積理論上有很低的計(jì)算量,但在低功率移動設(shè)備上很難有效實(shí)現(xiàn),與密集運(yùn)算相比計(jì)算/內(nèi)存訪問率要差,Xception論文中也提到了這個(gè)問題。在ShuffleNet中故意只在bottleneck層(3x3卷積)上使用逐通道卷積以避免這種開支。
ShuffleNet網(wǎng)絡(luò)的配置見表1。
需要注意的幾點(diǎn):第一個(gè)逐點(diǎn)卷積(1x1卷積)不做分組處理,以為輸入通道數(shù)量相對較?。幻侩A段(stage)中的第一個(gè)block做空間維度減半;每個(gè)block中的bottleneck層(3x3卷積層)的通道數(shù)是block輸出通道數(shù)的1/4。
在ShuffleNet單元中分組數(shù)量g控制著1x1卷積連接的稀疏程度。從表1中可以看出,在保持計(jì)算量基本不變的前提下,分組越多就可以使用越多的通道,這有助于網(wǎng)絡(luò)編碼更多信息,雖然卷積核可能會因?yàn)橛邢薜妮斎胪ǖ罃?shù)發(fā)生退化現(xiàn)象。
在通道數(shù)量上使用縮放因子s來調(diào)節(jié)網(wǎng)絡(luò)復(fù)雜度,文中以sx表示。通道數(shù)乘s,模型的復(fù)雜度大約變?yōu)閟平方倍。
ShuffleNet的基礎(chǔ)是逐點(diǎn)分組卷積和通道重排,分別考察這兩者的作用。
4.1.1 On the Importance of Pointwise Group Convolutions不同分組數(shù)量的性能見表2。
從表2中可以看出,分組卷積可以提升網(wǎng)絡(luò)性能,并且網(wǎng)絡(luò)越小越可以從分組數(shù)量的增加中獲益,而規(guī)模較大的則會趨于飽和。arch2減少stage3中的block數(shù)量但增加每個(gè)block中的特征圖數(shù)量,整體的復(fù)雜度基本保持不變,性能比之前有一定提升,這說明更寬(wider)的特征圖對于較小的模型更為重要。
4.1.2 Channel Shuffle vs. No Shuffle通道重排的作用是使得信息可以在多個(gè)分組的卷積層中跨組傳播,表3展示了使用或不使用通道重排的性能比對。
從表3中可以看出,當(dāng)分組數(shù)量g很大時(shí),添加通道重排可以極大提升性能,這顯示了跨通道信息交換的重要性。
4.2 Comparison with Other Structure Units與最近幾年先進(jìn)網(wǎng)絡(luò)架構(gòu)的性能比對見表4。
表5展示了ShuffleNet和MobileNet在復(fù)雜度、準(zhǔn)確率等方面的比對。
表6比較了ShuffleNet與一些主流網(wǎng)絡(luò)的復(fù)雜度。
為了評估ShuffleNet的泛化能力,使用Faster-RCNN框架和ShuffleNet在MS COCO檢測數(shù)據(jù)集上進(jìn)行測試,具體性能見表7。
由于內(nèi)存訪問和其他開支的影響,理論上4倍的復(fù)雜度削減在實(shí)際實(shí)現(xiàn)中只能提速約2.6倍。具體比對見表8。
ShuffleNet 0.5x相比AlexNet理論上應(yīng)提速18倍,實(shí)際測試提速13倍,相比于其他一些與AlexNet性能基本相同的網(wǎng)絡(luò)或加速方法要快得多。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/19652.html
摘要:是第一個(gè)提出體積小,計(jì)算量少,適用于移動設(shè)備的卷積神經(jīng)網(wǎng)絡(luò)。圖卷積運(yùn)算匯總參考圖與神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索卷積神經(jīng)網(wǎng)絡(luò)已被廣泛用于圖像分類人臉識別目標(biāo)檢測和其他領(lǐng)域。 1、基本卷積運(yùn)算手工設(shè)計(jì)輕量化模型主要思想在于設(shè)計(jì)更高效的網(wǎng)絡(luò)計(jì)算方式(主要針對卷積方式),從而使網(wǎng)絡(luò)參數(shù)減少,并且不損失網(wǎng)絡(luò)性能。本節(jié)概述了CNN模型(如MobileNet及其變體)中使用的基本卷積運(yùn)算單元,并基于空間維度和通道維度...
摘要:目錄一引言二輕量化模型三網(wǎng)絡(luò)對比一引言自年以來,卷積神經(jīng)網(wǎng)絡(luò)簡稱在圖像分類圖像分割目標(biāo)檢測等領(lǐng)域獲得廣泛應(yīng)用。創(chuàng)新點(diǎn)利用和這兩個(gè)操作來設(shè)計(jì)卷積神經(jīng)網(wǎng)絡(luò)模型以減少模型使用的參數(shù)數(shù)量。 本文就近年提出的四個(gè)輕量化模型進(jìn)行學(xué)習(xí)和對比,四個(gè)模型分別是:SqueezeNet、MobileNet、ShuffleNet、Xception。目錄一、引言?二、輕量化模型?? ? 2.1 SqueezeNet?...
摘要:分組卷積的思想影響比較深遠(yuǎn),當(dāng)前一些輕量級的網(wǎng)絡(luò),都用到了分組卷積的操作,以節(jié)省計(jì)算量。得到新的通道之后,這時(shí)再對這批新的通道進(jìn)行標(biāo)準(zhǔn)的跨通道卷積操作。 CNN從2012年的AlexNet發(fā)展至今,科學(xué)家們發(fā)明出各種各樣的CNN模型,一個(gè)比一個(gè)深,一個(gè)比一個(gè)準(zhǔn)確,一個(gè)比一個(gè)輕量。作者對近幾年一些具有變革性的工作進(jìn)行簡單盤點(diǎn),從這些充滿革新性的工作中探討日后的CNN變革方向。本文只介紹其中具有...
摘要:大神何愷明受到了質(zhì)疑。今天,上一位用戶對何愷明的提出質(zhì)疑,他認(rèn)為何愷明年的原始?xì)埐罹W(wǎng)絡(luò)的結(jié)果沒有被復(fù)現(xiàn),甚至何愷明本人也沒有。我認(rèn)為,的可復(fù)現(xiàn)性經(jīng)受住了時(shí)間的考驗(yàn)。 大神何愷明受到了質(zhì)疑。今天,Reddit 上一位用戶對何愷明的ResNet提出質(zhì)疑,他認(rèn)為:何愷明 2015 年的原始?xì)埐罹W(wǎng)絡(luò)的結(jié)果沒有被復(fù)現(xiàn),甚至何愷明本人也沒有。網(wǎng)友稱,他沒有發(fā)現(xiàn)任何一篇論文復(fù)現(xiàn)了原始 ResNet 網(wǎng)絡(luò)的...
摘要:和是兩個(gè)非常重要的網(wǎng)絡(luò),它們顯示了深層卷積神經(jīng)網(wǎng)絡(luò)的能力,并且指出使用極小的卷積核可以提高神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)能力。也有工作考察與的關(guān)系,與其相似,本文考察了與的關(guān)系。與的網(wǎng)絡(luò)架構(gòu)配置以及復(fù)雜度見表。 DPN Dual Path NetworksYunpeng Chen, Jianan Li, Huaxin Xiao, Xiaojie Jin, Shuicheng Yan, Jiashi F...
閱讀 3430·2021-11-24 10:30
閱讀 3302·2021-11-22 15:29
閱讀 3737·2021-10-28 09:32
閱讀 1336·2021-09-07 10:22
閱讀 3378·2019-08-30 15:55
閱讀 3651·2019-08-30 15:54
閱讀 3535·2019-08-30 15:54
閱讀 2863·2019-08-30 15:44