今天是參加昇思25天學習打卡營的第19天,今天打卡的課程是“ShuffleNet圖像分類”,這里做一個簡單的分享。
1.簡介
在第15-18日的學習內容中,我們陸陸續續學習了計算機視覺相關的模型包括圖像語義分割、圖像分類、目標檢測等內容,這些模型的運算往往都是在大算力設備上運行的,今天學習一種可以在移動設備上運行的圖像分類模型-“ShuffleNet”。
ShuffleNetV1是曠視科技提出的一種計算高效的CNN模型,和MobileNet, SqueezeNet等一樣主要應用在移動端,所以模型的設計目標就是利用有限的計算資源來達到最好的模型精度。ShuffleNetV1的設計核心是引入了兩種操作:Pointwise Group Convolution和Channel Shuffle,這在保持精度的同時大大降低了模型的計算量。因此,ShuffleNetV1和MobileNet類似,都是通過設計更高效的網絡結構來實現模型的壓縮和加速。
了解ShuffleNet更多詳細內容,詳見論文ShuffleNet。
2.模型架構
ShuffleNet最顯著的特點在于對不同通道進行重排來解決Group Convolution帶來的弊端。通過對ResNet的Bottleneck單元進行改進,在較小的計算量的情況下達到了較高的準確率。這里主要是要學習兩個概念一是Pointwise Group Convolution(逐點分組卷積),二是Channel Shuffle(通道重排)。
2.1Pointwise Group Convolution
Group Convolution(分組卷積)原理如下圖所示,相比于普通的卷積操作,分組卷積的情況下,每一組的卷積核大小為in_channels/gkk,一共有g組,所有組共有(in_channels/gkk)*out_channels個參數,是正常卷積參數的1/g。分組卷積中,每個卷積核只處理輸入特征圖的一部分通道,其優點在于參數量會有所降低,但輸出通道數仍等于卷積核的數量。
圖片來源:Huang G, Liu S, Van der Maaten L, et al. Condensenet: An efficient densenet using learned group convolutions[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 2752-2761.
2.2Channel Shuffle
Group Convolution的弊端在于不同組別的通道無法進行信息交流,堆積GConv層后一個問題是不同組之間的特征圖是不通信的,這就好像分成了g個互不相干的道路,每一個人各走各的,這可能會降低網絡的特征提取能力。這也是Xception,MobileNet等網絡采用密集的1x1卷積(Dense Pointwise Convolution)的原因。
為了解決不同組別通道“近親繁殖”的問題,ShuffleNet優化了大量密集的1x1卷積(在使用的情況下計算量占用率達到了驚人的93.4%),引入Channel Shuffle機制(通道重排)。這項操作直觀上表現為將不同分組通道均勻分散重組,使網絡在下一層能處理不同組別通道的信息。
2.3 ShuffleNet模塊
如下圖所示,ShuffleNet對ResNet中的Bottleneck結構進行由(a)到(b), ?的更改:
- 將開始和最后的1×11×1卷積模塊(降維、升維)改成Point Wise Group Convolution;
- 為了進行不同通道的信息交流,再降維之后進行Channel Shuffle;
- 降采樣模塊中,3×33×3 Depth Wise Convolution的步長設置為2,長寬降為原來的一般,因此shortcut中采用步長為2的3×33×3平均池化,并把相加改成拼接。
2.4 ShuffleNet網絡
ShuffleNet網絡結構如下圖所示,以輸入圖像224×224224×224,組數3(g = 3)為例,首先通過數量24,卷積核大小為3×33×3,stride為2的卷積層,輸出特征圖大小為112×112112×112,channel為24;然后通過stride為2的最大池化層,輸出特征圖大小為56×5656×56,channel數不變;再堆疊3個ShuffleNet模塊(Stage2, Stage3, Stage4),三個模塊分別重復4次、8次、4次,其中每個模塊開始先經過一次下采樣模塊(上圖?),使特征圖長寬減半,channel翻倍(Stage2的下采樣模塊除外,將channel數從24變為240);隨后經過全局平均池化,輸出大小為1×1×9601×1×960,再經過全連接層和softmax,得到分類概率。
3.小結
人工智能模型的小型化對于移動設備上部署和應用來說具有重要的意義,犧牲一定程度的準確性來換取模型在移動設備可用對于用戶來說是可接受的,這也是研究學習ShuffleNet的一個重要意義。ShuffleNet通過分組卷積、通道重排等技術大幅度降低了所需計算的參數,同時能夠獲得不錯的準確率,使得模型在能夠在算力不足的移動設備可用,是這個領域的重大貢獻。
當然,對于移動設備上的人工智能模型,除了模型小型化以外,借助高速發展的5G等移動網絡也可以使用基于云端的應用部署方式來獲取更高性能、更高準確度的模型,這兩種方案應該說是互補的,而不是對立。移動設備在離線環境下的可用性對于很多業務場景都有很高的價值,對在線和離線環境模型都可用有需求的場景,模型小型化的研究是非常有必要的。
以上是第19天的學習內容,附上今日打卡記錄: