天天看點

ShuffleNet來源論文《ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices》總結前言文章主要内容與貢獻數值結果

ShuffleNet來源論文《ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices》讀後總結

  • 前言
  • 文章主要内容與貢獻
    • 設計了ShuffleNet單元
    • 使用了逐點群卷積(pointwise group convolution)和信道混疊
      • 逐點群卷積(pointwise group convolution)
      • Shuffle通道
  • 數值結果

前言

這是一些對于論文《ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices》的簡單的讀後總結,首先先奉上該文章的下載下傳超連結:ShuffleNet

這篇文章是由Megvii Inc (Face++)的人員合作完成的,作者分别是Xiangyu Zhang、Xinyu Zhou、Mengxiao Lin和Jian Sun。其是ShuffleNet的來源。ShuffleNet的性能并不是所有網絡中最好的,甚至隻能說它的性能隻能處于中遊水準,ShuffleNet 0.5×(g = 3)(38 MFLOPs)略遜于AlexNet(720 MFLOPs)和SqueezeNet(833 MFLOPs),ShuffleNet 1×(g = 8)(140 MFLOPs)略遜于GoogLeNet(1500 MFLOPs),ShuffleNet 2×(g = 3)(524 MFLOPs)優于VGG-16(15300 MFLOPs)。該網絡主要面對的是計算能力較低的裝置,例如ARM,使得在這些移動裝置上也能在合理的時間内使用網絡進行推理,而其它大部分網絡計算量太大。ShuffleNet在複雜度小幾十倍的情況下依然能與大型網絡有着相似的性能。

文章主要内容與貢獻

該文章的貢獻為:

  1. 設計了ShuffleNet單元;
  2. 使用了逐點群卷積(pointwise group convolution)和信道混疊。

設計了ShuffleNet單元

ShuffleNet單元如下所示:

ShuffleNet來源論文《ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices》總結前言文章主要内容與貢獻數值結果

上圖中,圖(a)是深度卷積(depthwise convolution, DWConv)的瓶頸單元(bottleneck unit);圖(b)是具有逐點群卷積(GConv)和信道混疊的ShuffleNet單元;圖©是步長為2的ShuffleNet單元。圖(b)比圖(a)多了一個信道混疊而少了一個ReLU激活函數。圖©比圖(b)多了一個 3 × 3 3\times3 3×3的步長為2的均值池化層,且DWConv的步長也為2,同時将加法替換為通道連接配接。

ShuffleNet的結構如下表所示:

ShuffleNet來源論文《ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices》總結前言文章主要内容與貢獻數值結果

複雜性用FLOPs來評估,即浮點乘法-加法的數目。請注意,對于第二階段,由于輸入信道的數目相對較少,是以不對第一個逐點層進行分組卷積。

使用了逐點群卷積(pointwise group convolution)和信道混疊

逐點群卷積(pointwise group convolution)

群卷積的概念,首次在AlexNet中引入,用于在兩個GPU上分發模型,其在Resnext中得到了很好的證明。ShuffleNet以一種新穎的形式概括了群卷積和深度可分離卷積。

Shuffle通道

Shuffle通道如下所示:

ShuffleNet來源論文《ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices》總結前言文章主要内容與貢獻數值結果

上圖是帶兩個疊群卷積的信道混疊。GConv代表群卷積。圖(a)是兩個群數相同的疊加卷積層。每個輸出通道僅與組内的輸入信道相關。圖(b)當GConv 2在GConv 1之後從不同的組擷取資料時,輸入和輸出通道完全相關;圖©相當于對圖(b)使用了信道混疊。

下表是不同規模的ShuffleNet的複雜度和與組數有關的精度表:

ShuffleNet來源論文《ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices》總結前言文章主要内容與貢獻數值結果

由上可知,ShuffleNet的複雜度越小,性能越差;群數 g g g越大,效果基本上越好。

下表是有無shuffle的網絡對比表:

ShuffleNet來源論文《ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices》總結前言文章主要内容與貢獻數值結果

由上表可知,有shuffle時性能優于無shuffle時,且此時g越大,性能越好,而無shuffle是則是g越大效果越差。

數值結果

下表是作者将主流網絡改寫為其複雜度較低版本的對比實驗:

ShuffleNet來源論文《ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices》總結前言文章主要内容與貢獻數值結果

由上可知,在複雜度一緻時,ShuffleNet的性能最好。

下表是在ImageNet上ShuffleNet和MobileNet的對比實驗:

ShuffleNet來源論文《ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices》總結前言文章主要内容與貢獻數值結果

由上可知,ShuffleNet在複雜度低于MobileNet時還能擁有更低的誤差。

下表是在BVLC (https://github.com/BVLC/caffe/tree/master/models/bvlc googlenet)上完成的實驗:

ShuffleNet來源論文《ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices》總結前言文章主要内容與貢獻數值結果

由上表可知,ShuffleNet在複雜度隻有主流網絡幾十分之一的情況下還能擁有相似的性能。

下表是在MS COCO上的對象檢測結果(更大的數字表示更好的性能):

ShuffleNet來源論文《ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices》總結前言文章主要内容與貢獻數值結果

由上表可知,ShuffleNet同樣擁有最佳的性能。

下表是在移動裝置上的實際推理時間(較小的數目代表更好的性能)。該平台是基于一個單一的高通骁龍820處理器,且皆為單線程模式。

ShuffleNet來源論文《ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices》總結前言文章主要内容與貢獻數值結果

由上表可知,ShuffleNet的複雜度更低,在保證精度的同時,計算速度被極大的提升了。

繼續閱讀