论文笔记:ShuffleNet v1
生活随笔
收集整理的這篇文章主要介紹了
论文笔记:ShuffleNet v1
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices
ShuffleNet v1
1、四個問題
- 為算力有限的嵌入式場景下專門設(shè)計一個高效的神經(jīng)網(wǎng)絡(luò)架構(gòu)。
- 使用了兩個新的操作:pointwise group convolution(組卷積)和channel shuffle。
- 根據(jù)這兩個操作構(gòu)建了ShuffleUnit,整個ShuffleNet都是由ShuffleUnit組成。
- 在ImageNet分類和MS COCO目標(biāo)檢測任務(wù)上取得了比其他輕量化模型更高的準(zhǔn)確率,如MobileNet v1。
- 在ARM設(shè)備上,ShuffleNet的速度比AlexNet快了13倍。
- 超參數(shù)如組卷積的組數(shù)以及通道壓縮比率等需要根據(jù)實(shí)際情況決定,不同任務(wù)下需要自行調(diào)整。
- 網(wǎng)絡(luò)實(shí)時性并不能單純以浮點(diǎn)計算量來衡量,還存在memory access cost(MAC)等因素的干擾,并不能僅僅根據(jù)計算量就認(rèn)為ShuffleNet是最快的。
2、論文概述
2.1、簡介
- 作者發(fā)現(xiàn),一些state-of-the-art的模型架構(gòu),如Xception、ResNeXt等,使用在小型網(wǎng)絡(luò)模型中效率都比較低。這是因?yàn)槭褂么罅康?span id="ozvdkddzhkzd" class="katex--inline">1×11 \times 11×1卷積會消耗大量計算資源。為此,提出了pointwise group convolution來減少計算復(fù)雜度。
- 使用組卷積也會帶來一些副作用,因?yàn)榻M卷積切斷了組內(nèi)通道與組外通道之間的聯(lián)系,僅僅能從組內(nèi)通道提取特征信息。為此,論文中又提出了 channel shuffle,來幫助信息在各通道之間流通。
2.2、相關(guān)工作
- 高效模型設(shè)計:
- GoogLeNet
- SqueezeNet
- ResNet
- SENet
- NASNet
- 組卷積(group convolution):
- 最初由AlexNet提出,應(yīng)用在2塊GPU上并行處理。
- Xception中提出了深度可分離卷積(depthwise separable convolution)。
- MobileNet中也使用到了深度可分離卷積。
- Channel Shuffle
- 此前的文獻(xiàn)中較少提及channel shuffle操作。
- 模型加速
- 目標(biāo)是再保證模型準(zhǔn)確率的前提下盡可能加速前向推理過程。
- 常見方法:
- 網(wǎng)絡(luò)剪枝。
- 量化和分解。
- 知識蒸餾。
2.3、Channel Shuffle for Group Convolutions
- 在小型網(wǎng)絡(luò)中,逐點(diǎn)卷積(pointwise convolution)不僅會占用較多計算資源并且還會讓通道之間具有過多復(fù)雜的約束,這會顯著地降低網(wǎng)絡(luò)性能。在較大的模型中使用pointwise convolution也許相對好一些,然而小模型并不需要過多復(fù)雜的約束,否則容易導(dǎo)致模型難以收斂,并且容易陷入過擬合。
- 一個解決辦法是:通道間稀疏連接(channel sparse connections)。使用組卷積可以一定程度上解決這個問題。
- 但是,使用組卷積也會帶來副作用:信息只會在組內(nèi)流通,組間不會有信息交互。為此,還需要使用channel shuffle來解決信息不流通的問題。
- channel shuffle操作:
- 假設(shè)一個卷積層上有ggg組,每組有nnn個通道,最后輸出就有g×ng \times ng×n個通道。
- reshape成(g,n)(g, n)(g,n)。
- 轉(zhuǎn)置成(n,g)(n, g)(n,g)。
- 展開(flatten),再分成ggg組,作為下一層的輸入。
2.4、Shuffle Unit
- 圖(a)是殘差卷積模塊,標(biāo)準(zhǔn)3×33 \times 33×3卷積轉(zhuǎn)換為深度可分離卷積與1×11 \times 11×1卷積的組合。中間加上BN和ReLU,構(gòu)成基本單元。
- 圖(b)是Shuffle Unit,將圖(a)中的第一個1×11 \times 11×1卷積替換成1×11 \times 11×1組卷積(GConv)和channel shuffle組成的單元。
- 圖?是用于降采樣的Shuffle Unit,深度可分離卷積的步長改為2,為了適配主分支的feature map,在shortcut上加上了步長也為2的平均池化(AVG Pool 3×33 \times 33×3)。
- 雖然深度可分離卷積可以減少計算量和參數(shù)量,但在低功耗設(shè)備上,與密集的操作相比,計算/存儲訪問的效率更差。故在ShuffleNet上只在bottleneck上有使用深度可分離卷積,盡可能的減少開銷。
2.5、網(wǎng)絡(luò)架構(gòu)
2.6、實(shí)驗(yàn)
- Pointwise Group Convolutions
- 從結(jié)果來看,有組卷積的一致比沒有組卷積(g=1)的效果要好。注意組卷積可獲得更多通道間的信息,我們假設(shè)性能提高受益于更多的feature map通道數(shù),這也有助于我們對更多信息進(jìn)行編碼。并且,較小的模型的feature map通道也更少,這意味著能更多地從增加feature map上獲益。
- Channel Shuffle vs. No Shuffle
- Comparison with Other Structure Units
- Comparison with MobileNets and Other Frameworks
- Generalization Ability
- 在MS COCO目標(biāo)檢測任務(wù)上測試ShuffleNet的泛化和遷移學(xué)習(xí)能力,以Faster RCNN為例:
- Actual Speedup Evaluation
3、參考資料
總結(jié)
以上是生活随笔為你收集整理的论文笔记:ShuffleNet v1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 论文笔记:Git Loss
- 下一篇: 论文笔记:ShuffleNet v2