MobileNet的卷積單元如上圖所示,每個卷積操作后都接著一個BN操作和ReLU操作。在MobileNet中,由于3x3卷積核只應用在depthwise convolution中,因此95%的計算量都集中在pointwise convolution 中的1x1卷積中。而對于caffe等采用矩陣運算GEMM實現卷積的深度學習框架,1x1卷積無需進行im2col操作,因此可以直接利用矩陣運算加速庫進行快速計算,從而提升了計算效率。
5.3 實驗結果
表7 MobileNet與主流大模型在ImageNet上精度對比
上表顯示,MobileNet在保證精度不變的同時,能夠有效地減少計算操作次數和參數量,使得在移動端實時前向計算成為可能。
六、ShuffleNet
ShuffleNet是Face++今年提出了一篇用于移動端前向部署的網絡架構。ShuffleNet基于MobileNet的group思想,將卷積操作限制到特定的輸入通道。而與之不同的是,ShuffleNet將輸入的group進行打散,從而保證每個卷積核的感受野能夠分散到不同group的輸入中,增加了模型的學習能力。
6.1 設計思想
我們知道,卷積中的group操作能夠大大減少卷積操作的計算次數,而這一改動帶來了速度增益和性能維持在MobileNet等文章中也得到了驗證。然而group操作所帶來的另一個問題是:特定的濾波器僅對特定通道的輸入進行作用,這就阻礙了通道之間的信息流傳遞,group數量越多,可以編碼的信息就越豐富,但每個group的輸入通道數量減少,因此可能造成單個卷積濾波器的退化,在一定程度上削弱了網絡了表達能力。
6.2 網絡架構
在此篇工作中,網絡架構的設計主要有以下幾個創新點:
提出了一個類似于ResNet的BottleNeck單元
借鑒ResNet的旁路分支思想,ShuffleNet也引入了類似的網絡單元。不同的是,在stride=2的單元中,用concat操作代替了add操作,用average pooling代替了1x1stride=2的卷積操作,有效地減少了計算量和參數。單元結構如圖10所示。
提出將1x1卷積采用group操作會得到更好的分類性能
在MobileNet中提過,1x1卷積的操作占據了約95%的計算量,所以作者將1x1也更改為group卷積,使得相比MobileNet的計算量大大減少。
提出了核心的shuffle操作將不同group中的通道進行打散,從而保證不同輸入通道之間的信息傳遞。
ShuffleNet的shuffle操作如圖11所示。
圖10 ShuffleNet網絡單元
圖11 不同group間的shuffle操作
6.3 實驗結果
表8 ShuffleNet與MobileNet在ImageNet上精度對比
上表顯示,相對于MobileNet,ShuffleNet的前向計算量不僅有效地得到了減少,而且分類錯誤率也有明顯提升,驗證了網絡的可行性。
6.4 速度考量
作者在ARM平臺上對網絡效率進行了驗證,鑒于內存讀取和線程調度等因素,作者發現理論上4x的速度提升對應實際部署中約2.6x。作者給出了與原始AlexNet的速度對比,如下表。
表9 ShuffleNet與AlexNet在ARM平臺上速度對比 [10]
結束語
近幾年來,除了學術界涌現的諸多CNN模型加速工作,工業界各大公司也推出了自己的移動端前向計算框架,如Google的Tensorflow、Facebook的caffe2以及蘋果今年剛推出的CoreML。相信結合不斷迭代優化的網絡架構和不斷發展的硬件計算加速技術,未來深度學習在移動端的部署將不會是一個難題。
參考文獻
[1] ImageNet Classification with Deep Convolutional Neural Networks
[2] Very Deep Convolutional Networks for Large-Scale Image Recognition
[3] Going Deeper with Convolutions
[4] Rethinking the Inception Architecture for Computer Vision
[5] SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and < 0.5MB model size
[6] Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding
[7] Distilling the Knowledge in a Neural Network
[8] XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks
[9] MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
[10] ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices
[11] Network in Network
[12] EIE: Efficient Inference Engine on Compressed Deep Neural Network
評論
查看更多