文章目錄
- 輕量級神經網路——shuffleNet
- shuffleNet1
- 逐點分組卷積(Pointwise group convolution)???
- 通道重排(channel shuffle)???
- shuffleNet Unit???
- shuffleNet1的網路結果和效果
輕量級神經網路——shuffleNet
shuffleNet1
??在之前,已經討論過一種輕量級神經網路——MobileNet,文中對MobileNet的三個版本都做了詳細的介紹,讀此篇之前,建議先了解MobileNet,特別是要對其中的深度可分離卷積有較清晰的認識,因為shuffleNet中的分組卷積和MobileNet的逐深度卷積(Depthwise Convolution)非常相似,故在此篇的描述程序中,我認為大家已經有了MobileNet的基礎🆗🆗🆗
??shuffleNet1的論文只有9頁,是不是還是很輕量的🎈🎈🎈我認為shuffleNet1中最主要的思想有兩點,一是逐點分組卷積(Pointwise Group Convolution),二是通道重排(channel shuffle), 下面就來具體的談談這兩點🧨🧨🧨
逐點分組卷積(Pointwise group convolution)???
??在說明逐點分組卷積之前先來了解一下什么是分組卷積和逐點卷積,所謂分組卷積,就是將原始的特征圖分成幾組后再分別對每一組進行卷積,用下圖來進行解釋,左圖表示普通卷積,右圖表示分組卷積,左圖普通卷積輸入特征圖個數為12,采用了6個卷積核對輸入影像進行卷積,得到了6個輸出的特征圖;右圖分組卷積輸入特征圖的個數也是12,但其將12個特征圖分成了3組(紅、綠、黃),每組有4個特征圖,這時同樣需要6個卷積核,但需要注意的是這6個卷積核也被分成3組,即兩兩一組,然后將每組的輸入特征圖和對應的兩個卷積核進行卷積,這時每組都會產生2個特征圖,一共也會有6個輸出特征圖,【注意:雖然普通卷積核分組卷積都需要6個卷積核,但他們卷積核的通道數是不一樣的,對本列來說,普通卷積的卷積核通道數為12,而分組卷積的卷積核通道數為4,】

??上面談到了普通卷積和分組卷積的區別,其實看過MobileNet的同學,應該感覺很熟悉,這和MobileNet里面的逐深度卷積(DW卷積)是非常像的,相當于DW卷積把組分得足夠多,每個通道的特征圖都為一組,因此不理解分組卷積的可以結合DW卷積思考思考🔮🔮🔮
??讀到這里,很多讀者可能要問了,為什么要采用分組卷積呢?分組卷積相對于普通卷積有什么優勢呢?其實分組卷積可以有效的減少網路的容量,使網路更加輕量,下面還是結合上圖來算算普通卷積核分組算計各自所消耗的引數量和計算量(不會計算引數量和計算量的請移步:神經網路引數量、計算量(FLOPS)、記憶體訪問量(AMC)計算詳解)【注意:這里假設卷積核大小為K*k,輸出特征圖大小為H*W】

??通過上圖,可以很明顯的看出,分組卷積的引數量和計算量都比普通卷積要小,定量觀察會發現,普通卷積的計算量和引數量都是分組卷積的3倍,剛好是所分的組數,這是一個一般性的結論,
??至此,分組卷積應該是敘述清楚了,這回再來談談逐點卷積,這個似乎真沒啥好談的了,再我的MobileNet博客中也提到過,逐點卷積其實就是卷積核為1*1的卷積,
??討論完分組卷積和逐點卷積,就可以來定義逐點分組卷積了,顧名思義,逐點分組卷積就是將分組卷積核逐點卷積相結合,即表示卷積核大小為1*1的分組卷積,
通道重排(channel shuffle)???
??上面介紹了逐點分組卷積,這里可以看一下逐點分組卷積后的效果,如下圖所示:

??可以看到,不同組之間是沒有任何聯系的,即得到的特征圖只和對應組別的輸入有關系,論文中也有這樣的描述,這種分組因不同組之間沒有任何聯系,學習到的特征會非常有限,也很容易導致資訊丟失,因此論文提出了channel shuffle,

??channel shuffle具體是怎么實作的呢?下圖示綠框部分即為channel shuffle的操作,即從得到的特征圖中提取出不同組別下的通道,并將他們組合在一起,最終channel shaffle完成后的結果如(c)中黃色虛線框所示,

??上圖中從綠框傳變成黃色虛線框的程序即為channel shaffle通道重排程序,現將其分解出來,看看channel shaffle通道重排具體程序,如下圖:

?
shuffleNet Unit???
??(a)是最原始的殘差結構,(b)、?都是shuffleNet的單元結構,先來看看(a)是如何變成(b)的,首先是用逐點分組卷積代替了逐點卷積,同時在其后跟了一個channel shuffle操作,然后中間的3x3DWConv沒有變化,最后的逐點卷積依舊換成了逐點分組卷積,?是用來降采樣的,和(b)主要區別在shortcut分支中采用了3x3d的步長為2的AVG Pool、主分支中DWConv中的步長變成了2以及最后使用的是Concat而不是add,這樣的結構會使輸入影像尺寸減半,通道數翻倍,

??還有一些細節需要在這里提一下,一是在第二個逐點分組卷積后并沒有使用channel shuffle,這是因為此時得到的結果已經相當不錯了,所以不需要進行通道重排了;二是在DWConv后并沒有進行Relu激活,這個原因我在MobileNetV2中有說到,不知道的可以去看一看,


shuffleNet1的網路結果和效果
??下圖網路結構的每一步變化也較好分析,不會的可以參考我之前的博客,需要注意的是黃框框住的g表示不同的分組數,如g=3表示將特征圖分成3組進行分組卷積,

?
??下面為shuffleNet和其他一些經典網路的性能比較,可以看出shuffleNet在FLOPs一定時優勢還是很明顯的🍭🍭🍭



如若文章對你有所幫助,那就🛴🛴🛴
咻咻咻咻~~duang~~點個贊唄
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/434552.html
標籤:AI
