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