輕量級網(wǎng)絡(luò)之ShuffleNet
原論文——ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices
介紹
目前深度學(xué)習(xí)網(wǎng)絡(luò)已經(jīng)取得很大的成功,但是模型參數(shù)巨大觅赊,計算量以GFLOPs計,導(dǎo)致難以應(yīng)用到手機等嵌入設(shè)備中暮蹂。因此有許多學(xué)者研究如何在適當(dāng)?shù)腗FLOPs下取得好的效果,大致有幾個方向:剪枝(pruning)牧抽,量化(quantization鞠评,低維表達),蒸餾(distill)和網(wǎng)絡(luò)結(jié)構(gòu)的優(yōu)化非驮,而shufflenet旨在優(yōu)化網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)胸懈。
論文提出了一種新的輕量級網(wǎng)絡(luò)架構(gòu)ShuffleNet担扑,包括了兩個新的操作operations: pointwise group convolution and channel shuffle,減少計算的同時保持好的準(zhǔn)確率趣钱。
方法
在講shufflenet前先回顧下深度可分離卷積和分組卷積:
Depthwise Separable Convolution (Preliminary)
深度可分離卷積由MobileNet提出涌献,主要用于降低傳統(tǒng)卷積的計算復(fù)雜度。如下圖首有,(a)為標(biāo)準(zhǔn)卷積操作燕垃,(a) (c) 為深度可分離卷積,它將標(biāo)準(zhǔn)卷積分為了兩步:
(1) Depthwise Convolution, 用跟輸入的channel一樣大小的M個卷積核井联,分別于輸入的map對應(yīng)的channel進行卷積操作卜壕;
(2) Pointwise Convolution,標(biāo)準(zhǔn)的1×1卷積烙常,做通道融合變換轴捎。
Group Convolution (Preliminary)
論文中提到的分組卷積有ResNeXt和Xception,這里就不列出來了蚕脏,本質(zhì)就是將channel通道分組侦副,分別做卷積,以減少計算復(fù)雜度(后面會涉及)驼鞭。
Channel Shuffle for Group Convolution
如下圖秦驯,(a)是分組卷積,分為三組终议,然后分別卷積汇竭。這里就會出現(xiàn)一個問題葱蝗,每個組之間是獨立的穴张,沒有信息交流,傳遞的两曼,因此皂甘,基于此問題論文提出了channel shuffle的操作,將組之間的特征進行交換(shuffle)悼凑,使得每個組包含了其他組的特征偿枕,如圖(b)和(c)所示。
實現(xiàn):假設(shè)一個g個group的卷積層輸出為g x n個channels, 首先reshape為大小(g, n)户辫,然后轉(zhuǎn)置為(n, g)渐夸,最后reshape為gn維。這樣每個組的n channels里就會有其他組的特征渔欢。這種實現(xiàn)非常簡單墓塌,可適用于不同channel大小,并且是可導(dǎo)的。
ShuffleNet Unit
圖(a)是resnet的bottleneck block苫幢,其中3x3卷積被替換為depthwise conv (DWConv)访诱;(b) 1x1卷積替換為group conv(GConv), 加channel shuffle;(c) 為下采樣時采用的結(jié)構(gòu)韩肝。
復(fù)雜度:c × h × w, bottleneck channel 為m的Resnet Block, 復(fù)雜度為 . shufflenet為 FLOPs触菜,可見很大地減少了計算量。
Architechture
下圖為shufflenet結(jié)構(gòu)哀峻,并列舉了在140MFLOPs下的不同group g 的channel大小涡相,可見g越大,有較大的channels去保存信息剩蟀,從而提高準(zhǔn)確率漾峡。
Experiment
論文首先驗證group conv帶來的作用,如下圖所示喻旷,g=8/7時分類誤差是最小的生逸。
接著驗證shuffle的作用,如下表且预,可見channel shuffle起到了一個很大的作用槽袄。
和其他結(jié)構(gòu)如vgg,resnet等的對比:
和mobilenet對比
在目標(biāo)檢測任務(wù)上:
總結(jié)
論文使用了channel shuffle的group conv锋谐,降低了計算量遍尺,提高了精度。但是涮拗,作者在shufflenet v2把group conv給否定了乾戏,為什么呢?答案就在我的下一篇解讀輕量級網(wǎng)絡(luò)之ShuffleNet v2三热。