<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > CNN模型壓縮與加速算法綜述

          CNN模型壓縮與加速算法綜述

          作者: 時(shí)間:2018-07-25 來源:網(wǎng)絡(luò) 收藏

          XNOR-Net中一個典型的卷積單元如圖6所示,與傳統(tǒng)單元不同,各模塊的順序有了調(diào)整。為了減少二值化帶來的精度損失,對輸入數(shù)據(jù)首先進(jìn)行BN歸一化處理,BinActiv層用于對輸入做二值化,接著進(jìn)行二值化的卷積操作,最后進(jìn)行pooling。

          本文引用地址:http://www.ex-cimer.com/article/201807/383798.htm

          圖5 BWN訓(xùn)練過程

          圖6 傳統(tǒng)卷積單元與XNOR-Net卷積單元對比

          3.3 實(shí)驗(yàn)結(jié)果

          表5 ImageNet上二值網(wǎng)絡(luò)與AlexNet結(jié)果對比

          與ALexNet相比,BWN網(wǎng)絡(luò)能夠達(dá)到精度基本不變甚至略好,XNOR-Net由于對輸入也做了二值化,性能稍降。

          四、Distilling

          Distilling算法是Hinton等人在論文Distilling the Knowledge in a Neural Network中提出的一種類似網(wǎng)絡(luò)遷移的學(xué)習(xí)算法。

          4.1 基本思想

          Distilling直譯過來即蒸餾,其基本思想是通過一個性能好的大網(wǎng)絡(luò)來教小網(wǎng)絡(luò)學(xué)習(xí),從而使得小網(wǎng)絡(luò)能夠具備跟大網(wǎng)絡(luò)一樣的性能,但蒸餾后的小網(wǎng)絡(luò)參數(shù)規(guī)模遠(yuǎn)遠(yuǎn)小于原始大網(wǎng)絡(luò),從而達(dá)到壓縮網(wǎng)絡(luò)的目的。

          其中,訓(xùn)練小模型(distilled model)的目標(biāo)函數(shù)由兩部分組成

          1) 與大模型(cumbersome model)的softmax輸出的交叉熵(cross entropy),稱為軟目標(biāo)(soft target)。其中,softmax的計(jì)算加入了超參數(shù)溫度T,用以控制輸出,計(jì)算公式變?yōu)?/p>

          溫度T越大,輸出的分布越緩和,概率zi/T越小,熵越大,但若T過大,會導(dǎo)致較大熵引起的不確定性增加,增加了不可區(qū)分性。

          至于為何要以soft target來計(jì)算損失,作者認(rèn)為,在分類問題中,真值(groundtruth)是一個確定性的,即one-hot vector。以手寫數(shù)字分類來說,對于一個數(shù)字3,它的label是3的概率是1,而是其他數(shù)值的概率是0,而對于soft target,它能表征label是3的概率,假如這個數(shù)字寫的像5,還可以給出label是5的一定概率,從而提供更多信息,如

          數(shù)字0123456789
          真值0001000000
          軟目標(biāo)0000.9500.0480.002000

          2)與真值(groundtruth)的交叉熵(T=1)

          訓(xùn)練的損失為上述兩項(xiàng)損失的加權(quán)和,通常第二項(xiàng)要小很多。

          4.2 實(shí)驗(yàn)結(jié)果

          作者給出了在語音識別上的實(shí)驗(yàn)結(jié)果對比,如下表

          表6 蒸餾模型與原始模型精度對比[8]

          上表顯示,蒸餾后的模型的精確度和單字錯誤率和用于產(chǎn)生軟目標(biāo)的10個模型的性能相當(dāng),小模型成功地學(xué)到了大模型的識別能力。

          4.3 速度考量

          Distilling的提出原先并非針對網(wǎng)絡(luò)加速,而最終計(jì)算的效率仍然取決于蒸餾模型的計(jì)算規(guī)模,但理論上蒸餾后的小模型相對原始大模型的計(jì)算速度在一定程度上會有提升,但速度提升的比例和性能維持的權(quán)衡是一個值得研究的方向。

          五、MobileNet

          MobileNet是由Google提出的針對移動端部署的輕量級網(wǎng)絡(luò)架構(gòu)。考慮到移動端計(jì)算資源受限以及速度要求嚴(yán)苛,MobileNet引入了傳統(tǒng)網(wǎng)絡(luò)中原先采用的group思想,即限制濾波器的卷積計(jì)算只針對特定的group中的輸入,從而大大降低了卷積計(jì)算量,提升了移動端前向計(jì)算的速度。

          5.1 卷積分解

          MobileNet借鑒factorized convolution的思想,將普通卷積操作分成兩部分:

          Depthwise Convolution

          每個卷積核濾波器只針對特定的輸入通道進(jìn)行卷積操作,如下圖所示,其中M是輸入通道數(shù),DK是卷積核尺寸:

          圖7 Depthwise Convolution

          Depthwise convolution的計(jì)算復(fù)雜度為 DKDKMDFDF,其中DF是卷積層輸出的特征圖的大小。

          Pointwise Convolution

          采用1x1大小的卷積核將depthwise convolution層的多通道輸出進(jìn)行結(jié)合,如下圖,其中N是輸出通道數(shù):

          圖8 Pointwise Convolution[

          Pointwise Convolution的計(jì)算復(fù)雜度為 MNDFDF

          上面兩步合稱depthwise separable convolution

          標(biāo)準(zhǔn)卷積操作的計(jì)算復(fù)雜度為DKDKMNDFDF

          因此,通過將標(biāo)準(zhǔn)卷積分解成兩層卷積操作,可以計(jì)算出理論上的計(jì)算效率提升比例:

          對于3x3尺寸的卷積核來說,depthwise separable convolution在理論上能帶來約8~9倍的效率提升。

          5.2 模型架構(gòu)

          圖9 普通卷積單元與MobileNet 卷積單元對比

          MobileNet的卷積單元如上圖所示,每個卷積操作后都接著一個BN操作和ReLU操作。在MobileNet中,由于3x3卷積核只應(yīng)用在depthwise convolution中,因此95%的計(jì)算量都集中在pointwise convolution 中的1x1卷積中。而對于caffe等采用矩陣運(yùn)算GEMM實(shí)現(xiàn)卷積的深度學(xué)習(xí)框架,1x1卷積無需進(jìn)行im2col操作,因此可以直接利用矩陣運(yùn)算加速庫進(jìn)行快速計(jì)算,從而提升了計(jì)算效率。

          5.3 實(shí)驗(yàn)結(jié)果

          表7 MobileNet與主流大模型在ImageNet上精度對比

          上表顯示,MobileNet在保證精度不變的同時(shí),能夠有效地減少計(jì)算操作次數(shù)和參數(shù)量,使得在移動端實(shí)時(shí)前向計(jì)算成為可能。

          六、ShuffleNet

          ShuffleNet是Face++今年提出了一篇用于移動端前向部署的網(wǎng)絡(luò)架構(gòu)。ShuffleNet基于MobileNet的group思想,將卷積操作限制到特定的輸入通道。而與之不同的是,ShuffleNet將輸入的group進(jìn)行打散,從而保證每個卷積核的感受野能夠分散到不同group的輸入中,增加了模型的學(xué)習(xí)能力。

          6.1 設(shè)計(jì)思想

          我們知道,卷積中的group操作能夠大大減少卷積操作的計(jì)算次數(shù),而這一改動帶來了速度增益和性能維持在MobileNet等文章中也得到了驗(yàn)證。然而group操作所帶來的另一個問題是:特定的濾波器僅對特定通道的輸入進(jìn)行作用,這就阻礙了通道之間的信息流傳遞,group數(shù)量越多,可以編碼的信息就越豐富,但每個group的輸入通道數(shù)量減少,因此可能造成單個卷積濾波器的退化,在一定程度上削弱了網(wǎng)絡(luò)了表達(dá)能力。

          6.2 網(wǎng)絡(luò)架構(gòu)

          在此篇工作中,網(wǎng)絡(luò)架構(gòu)的設(shè)計(jì)主要有以下幾個創(chuàng)新點(diǎn):

          提出了一個類似于ResNet的BottleNeck單元

          借鑒ResNet的旁路分支思想,ShuffleNet也引入了類似的網(wǎng)絡(luò)單元。不同的是,在stride=2的單元中,用concat操作代替了add操作,用average pooling代替了1x1stride=2的卷積操作,有效地減少了計(jì)算量和參數(shù)。單元結(jié)構(gòu)如圖10所示。

          提出將1x1卷積采用group操作會得到更好的分類性能

          在MobileNet中提過,1x1卷積的操作占據(jù)了約95%的計(jì)算量,所以作者將1x1也更改為group卷積,使得相比MobileNet的計(jì)算量大大減少。

          提出了核心的shuffle操作將不同group中的通道進(jìn)行打散,從而保證不同輸入通道之間的信息傳遞。

          ShuffleNet的shuffle操作如圖11所示。

          圖10 ShuffleNet網(wǎng)絡(luò)單元

          圖11 不同group間的shuffle操作

          6.3 實(shí)驗(yàn)結(jié)果

          表8 ShuffleNet與MobileNet在ImageNet上精度對比

          上表顯示,相對于MobileNet,ShuffleNet的前向計(jì)算量不僅有效地得到了減少,而且分類錯誤率也有明顯提升,驗(yàn)證了網(wǎng)絡(luò)的可行性。

          6.4 速度考量

          作者在ARM平臺上對網(wǎng)絡(luò)效率進(jìn)行了驗(yàn)證,鑒于內(nèi)存讀取和線程調(diào)度等因素,作者發(fā)現(xiàn)理論上4x的速度提升對應(yīng)實(shí)際部署中約2.6x。作者給出了與原始AlexNet的速度對比,如下表。

          表9 ShuffleNet與AlexNet在ARM平臺上速度對比 [10]

          結(jié)束語

          近幾年來,除了學(xué)術(shù)界涌現(xiàn)的諸多CNN模型加速工作,工業(yè)界各大公司也推出了自己的移動端前向計(jì)算框架,如Google的Tensorflow、Facebook的caffe2以及蘋果今年剛推出的CoreML。相信結(jié)合不斷迭代優(yōu)化的網(wǎng)絡(luò)架構(gòu)和不斷發(fā)展的硬件計(jì)算加速技術(shù),未來深度學(xué)習(xí)在移動端的部署將不會是一個難題。


          上一頁 1 2 下一頁

          關(guān)鍵詞: 計(jì)算機(jī)

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();