国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

面向嵌入式的殘差網(wǎng)絡(luò)加速方法研究

2020-12-10 10:05:32沈鴻飛
小型微型計算機(jī)系統(tǒng) 2020年11期
關(guān)鍵詞:剪枝殘差嵌入式

甘 嵐,李 佳,沈鴻飛

(華東交通大學(xué) 信息工程學(xué)院,南昌 330000)

1 引 言

目前,基于深度學(xué)習(xí)[1]的圖像分類識別與嵌入式設(shè)備相結(jié)合已成為智能化產(chǎn)業(yè)發(fā)展的新趨勢.在嵌入式設(shè)備中,參數(shù)較少的機(jī)器學(xué)習(xí)算法難以對復(fù)雜的圖像數(shù)據(jù)維持較高的分類準(zhǔn)確率.卷積神經(jīng)網(wǎng)絡(luò)CNN[2]可以更有效的對圖像進(jìn)行精確分類[3-5].但卷積網(wǎng)絡(luò)的參數(shù)量極大,在廣泛應(yīng)用的嵌入式平臺存在運(yùn)行速度慢、難以部署的缺點(diǎn).因此,實(shí)現(xiàn)精度更高的卷積神經(jīng)網(wǎng)絡(luò)在嵌入式端的部署加速具有重要的研究意義.

深度殘差網(wǎng)絡(luò)是近年來較為流行的網(wǎng)絡(luò)結(jié)構(gòu),席志紅[6]利用殘差網(wǎng)絡(luò)對醫(yī)學(xué)圖像混合數(shù)據(jù)集進(jìn)行分類實(shí)驗(yàn).相比其他方法,殘差網(wǎng)絡(luò)有效的減少了參數(shù)和訓(xùn)練時間,提高了網(wǎng)絡(luò)性能.Michal Gregor[7]提出了一種結(jié)合遷移學(xué)習(xí)的殘差結(jié)構(gòu)分類器,該分類器能夠很好的實(shí)現(xiàn)在外界環(huán)境嚴(yán)重干擾下的停車位影像的分類.這些實(shí)驗(yàn)表明了殘差網(wǎng)絡(luò)相比其它分類網(wǎng)絡(luò),擁有更好的網(wǎng)絡(luò)性能.殘差網(wǎng)絡(luò)以跳躍式殘差結(jié)構(gòu)作為基本結(jié)構(gòu),這種結(jié)構(gòu)很好的解決了網(wǎng)絡(luò)變深的性能退化問題,且這種結(jié)構(gòu)計算壓力相對較小、易于優(yōu)化,更適合在嵌入式端部署.但是殘差網(wǎng)絡(luò)自身參數(shù)量較大,直接運(yùn)行在嵌入式端需要很大的存儲資源和計算資源.

網(wǎng)絡(luò)加速方法可以有效減少網(wǎng)絡(luò)的計算量和存儲量,是實(shí)現(xiàn)殘差網(wǎng)絡(luò)在嵌入式端加速應(yīng)用的重要手段.網(wǎng)絡(luò)加速可以從網(wǎng)絡(luò)結(jié)構(gòu)入手,通過結(jié)構(gòu)優(yōu)化和卷積分解等方法來減少參數(shù)和計算量,但是對于一些復(fù)雜網(wǎng)絡(luò)卷積分解過多會降低網(wǎng)絡(luò)性能,同時卷積分解后網(wǎng)絡(luò)中BN層數(shù)量增多,會占用大量計算資源;也可以對網(wǎng)絡(luò)模型進(jìn)行壓縮,通過去除網(wǎng)絡(luò)冗余使得網(wǎng)絡(luò)稀疏化[8-10]和網(wǎng)絡(luò)參數(shù)定點(diǎn)化處理[11-13]等方法來實(shí)現(xiàn)網(wǎng)絡(luò)加速,但一些優(yōu)化后的網(wǎng)絡(luò)結(jié)構(gòu),由于網(wǎng)絡(luò)復(fù)雜度較低,網(wǎng)絡(luò)模型的壓縮會導(dǎo)致網(wǎng)絡(luò)性能大幅降低.網(wǎng)絡(luò)優(yōu)化可以優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu),模型壓縮可以有效去除網(wǎng)絡(luò)冗余參數(shù).因此,如何結(jié)合網(wǎng)絡(luò)優(yōu)化和模型壓縮技術(shù)來降低網(wǎng)絡(luò)參數(shù),保證網(wǎng)絡(luò)性能,實(shí)現(xiàn)殘差網(wǎng)絡(luò)在嵌入式端最優(yōu)加速是本文研究的重點(diǎn).

本文根據(jù)上述問題,結(jié)合不同加速方法的優(yōu)勢提出一種更有效的嵌入式網(wǎng)絡(luò)加速方法.該方法首先為了減少原始?xì)埐罱Y(jié)構(gòu)的參數(shù),采用深度可分離卷積、線性優(yōu)化的方法對原始?xì)埐罱Y(jié)構(gòu)進(jìn)行卷積優(yōu)化,并設(shè)計能夠維持網(wǎng)絡(luò)性能,參數(shù)更少的殘差網(wǎng)絡(luò);其次,為了將改進(jìn)的殘差網(wǎng)絡(luò)在嵌入式端實(shí)現(xiàn)最優(yōu)加速,采用混合網(wǎng)絡(luò)剪枝、合并BN層與卷積層、隨機(jī)取舍的FP16量化的方法繼續(xù)減少網(wǎng)絡(luò)中冗余參數(shù)以加速網(wǎng)絡(luò),并與常規(guī)方法進(jìn)行性能比較.實(shí)驗(yàn)結(jié)果表明,使用上述方法對可以有效實(shí)現(xiàn)殘差網(wǎng)絡(luò)在嵌入式端的優(yōu)化加速.

2 網(wǎng)絡(luò)加速方法

2.1 卷積優(yōu)化

卷積優(yōu)化是通過更高效的卷積結(jié)構(gòu)保證網(wǎng)絡(luò)性能,并減少網(wǎng)絡(luò)參數(shù)來實(shí)現(xiàn)網(wǎng)絡(luò)加速的.如Squeezenet[14]的fire module結(jié)構(gòu),通過控制進(jìn)入3×3卷積的特征數(shù)量來降低計算量,但該結(jié)構(gòu)適合于淺層網(wǎng)絡(luò).

深度可分離卷積應(yīng)用于很多高效神經(jīng)網(wǎng)絡(luò)[15-18],如MobileNet、ShuffleNet、Xception等.它由一層深度卷積和一層逐點(diǎn)卷積組成,通過輸入通道的線性組合來計算新的特征.比較深度卷積和傳統(tǒng)卷積的輸出,假設(shè)輸入一個N×H×W×C特征,通過k個3×3的卷積,pad=1,普通卷積的輸出特征映射為N×H×W×k.對于深度可分離卷積,特征提取過程為:第一層的深度卷積可以將輸入分為C組,并收集每個通道的特征;第二層的逐點(diǎn)卷積將上層的輸出通過1×1的逐點(diǎn)卷積來收集每個點(diǎn)特征,最終通過深度可分離卷積的輸出特征映射也為N×H×W×k.使用深度可分離卷積替代標(biāo)準(zhǔn)卷積,計算量減少了8倍,輸出的特征映射數(shù)量沒有變化.可以在幾乎沒有精度損失的情況下大幅度降低參數(shù)量和計算量.卷積分解會使得卷積的輸出維度降低,網(wǎng)絡(luò)中的非線性函數(shù)會對較低的輸出特征造成影響,過多分解會造成網(wǎng)絡(luò)的性能急劇下降.

但是,過多的卷積優(yōu)化分解會使得網(wǎng)絡(luò)性能急劇下降,而且由于卷積分解使得卷積輸出的維度降低,網(wǎng)絡(luò)中的非線性函數(shù)會對較低的輸出特征造成影響.因此如何平衡卷積分解數(shù)量保證準(zhǔn)確率是卷積優(yōu)化的核心問題.

2.2 訪存優(yōu)化

訪存優(yōu)化是通過減少網(wǎng)絡(luò)訓(xùn)練和推理時內(nèi)存的讀寫次數(shù)來實(shí)現(xiàn)網(wǎng)絡(luò)加速的.殘差網(wǎng)絡(luò)卷積分解后網(wǎng)絡(luò)中的卷積層和BN層數(shù)量會增多,BN層的作用是對數(shù)據(jù)進(jìn)行歸一化處理,它可以加快網(wǎng)絡(luò)收斂,防止過擬合現(xiàn)象出現(xiàn)[19].但是BN層在網(wǎng)絡(luò)推理時需要很大的計算資源,BN層增多會占用更多內(nèi)存資源,從而影響網(wǎng)絡(luò)的推理速度.

網(wǎng)絡(luò)的BN層主要是對卷積層的輸出數(shù)據(jù)進(jìn)行處理,因此直接去除可能會造成一定的精度損失,如何維持網(wǎng)絡(luò)精度和減少BN層內(nèi)存消耗是BN層訪存優(yōu)化的重點(diǎn).合并BN層和卷積層,可以將兩層的計算融為一次計算,該方法不會改變BN層輸出結(jié)果,可以維持網(wǎng)絡(luò)的精度,并通過減少網(wǎng)絡(luò)計算時訪問內(nèi)存的次數(shù)來實(shí)現(xiàn)網(wǎng)絡(luò)加速[20].

2.3 模型壓縮

模型壓縮是通過對網(wǎng)絡(luò)模型的參數(shù)進(jìn)行精簡化,在保證網(wǎng)絡(luò)性能的同時降低網(wǎng)絡(luò)計算和存儲開銷來實(shí)現(xiàn)網(wǎng)絡(luò)的加速.常見的方法有:網(wǎng)絡(luò)剪枝、參數(shù)量化、參數(shù)共享、網(wǎng)絡(luò)分解等[21].參數(shù)共享依賴于聚類效果,過高的壓縮比會造成精度下降.網(wǎng)絡(luò)分解是通過矩陣分解對模型進(jìn)行壓縮加速,但是對于維度較低的1×1和3×3卷積核,分解難以實(shí)現(xiàn)網(wǎng)絡(luò)加速.網(wǎng)絡(luò)剪枝和量化是廣泛應(yīng)用于卷積神經(jīng)網(wǎng)絡(luò)的壓縮加速方法.

網(wǎng)絡(luò)剪枝[22]是通過去除網(wǎng)絡(luò)中不重要的連接,降低網(wǎng)復(fù)雜度實(shí)現(xiàn)網(wǎng)絡(luò)加速.在網(wǎng)絡(luò)卷積層和全連接層中,存在大量輸出值趨近于0的神經(jīng)元,這些神經(jīng)元對網(wǎng)絡(luò)影響較小,去除后不會影響網(wǎng)絡(luò)性能.靳麗蕾[23]通過混合剪枝方法有效的去除vgg-16網(wǎng)絡(luò)中影響較小的參數(shù).網(wǎng)絡(luò)剪枝可以有效的降低網(wǎng)絡(luò)中的冗余參數(shù),降低計算量,剪枝核心問題是尋找評判機(jī)制,去除網(wǎng)絡(luò)中不重要的節(jié)點(diǎn)或卷積核.

網(wǎng)絡(luò)量化是對網(wǎng)絡(luò)參數(shù)定點(diǎn)化處理來實(shí)現(xiàn)網(wǎng)絡(luò)加速的.訓(xùn)練生成的模型文件存儲的參數(shù)一般為32位的浮點(diǎn)型數(shù)據(jù),大部分的存儲是由分?jǐn)?shù)部分占據(jù).模型量化就是通過將高位的數(shù)據(jù)向低位的數(shù)據(jù)進(jìn)行映射來獲得更小的數(shù)據(jù)表示范圍和更稀疏的數(shù)值來有效的降低內(nèi)存消耗的.而且,CNN網(wǎng)絡(luò)對噪聲和擾動的魯棒性較強(qiáng),訓(xùn)練的權(quán)重一般會在一個較小的范圍,量化后只會造成較低的精度損失.量化過程中數(shù)據(jù)的變換必須保證是線性的,這樣計算結(jié)果才能夠映射原始值.量化的重點(diǎn)是確定合適的量化范圍和映射關(guān)系.

殘差網(wǎng)絡(luò)對一些復(fù)雜的圖像具有良好的特征提取能力,但是網(wǎng)絡(luò)層數(shù)較深,模型參數(shù)較多,存儲體積較大,不適合在嵌入式等硬件資源或缺的平臺上直接應(yīng)用.單一的模型加速方法對網(wǎng)絡(luò)加速效果是有限的,通過卷積優(yōu)化可以對網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行優(yōu)化且保證網(wǎng)絡(luò)性能,剪枝和量化技術(shù)分別是從參數(shù)的重要性評判和存儲方式兩個獨(dú)立的方向?qū)崿F(xiàn)網(wǎng)絡(luò)加速.綜合使用這些方法才可以最有效的降低網(wǎng)絡(luò)參數(shù),達(dá)到網(wǎng)絡(luò)最優(yōu)加速.但是,在卷積優(yōu)化和剪枝后的網(wǎng)絡(luò)復(fù)雜性降低,不同形式的量化可能會造成差異較大的精度損失.

3 殘差網(wǎng)絡(luò)優(yōu)化與設(shè)計

3.1 殘差結(jié)構(gòu)優(yōu)化

3.1.1 殘差結(jié)構(gòu)

目前,殘差網(wǎng)絡(luò)有兩種主流的殘差結(jié)構(gòu),它們使用了不同的卷積核的連接方式.第一種是由兩個3×3的標(biāo)準(zhǔn)卷積串聯(lián)而成,輸入特征會通過兩個標(biāo)準(zhǔn)卷積處理后輸出,這種雙卷積結(jié)構(gòu)具有較強(qiáng)的特征提取能力,但是網(wǎng)絡(luò)參數(shù)相對較多,一般用于40層以下的殘差網(wǎng)絡(luò),常見的有ResNet34.第二種殘差結(jié)構(gòu)首先使用1×1的卷積將輸入特征數(shù)量壓縮4倍,再通過3×3的標(biāo)準(zhǔn)卷積進(jìn)行特征提取,最后使用1×1的卷積將輸出特征數(shù)量擴(kuò)張4倍,這種結(jié)構(gòu)針對第一種殘差結(jié)構(gòu)的卷積參數(shù)較多的問題,通過1×1卷積有效的減少了網(wǎng)絡(luò)中的參數(shù).

對于一個標(biāo)準(zhǔn)卷積K,假設(shè)輸入特征映射W,輸出特征映射為G,它們的尺寸分別為(Df,Df,M)、(Dg,Dg,M,N),其中M,N分別表示為輸入和輸出通道數(shù),標(biāo)準(zhǔn)卷積K的大小為(Dk,Dk,M,N),那么卷積的計算公式表示為.

Gk,l,n=∑i,j,mKi,j,m,n·Fk+i-1,l+j-1.m

(1)

輸出特征為時(Dg,Dg,N),卷積的計算量為.

Dk·Dk·M·N·Df·Df

(2)

假設(shè)兩種輸入輸出特征映射均為(Df,Df,M)和(Dg,Dg,N),那么第一種殘差結(jié)構(gòu)的計算量為.

2·3·3·M·N·Df·Df

(3)

第二種殘差結(jié)構(gòu)的計算量為.

M·N·Df·Df/4+3·3·M·N·Df·Df/16
+M·N·Df/4

(4)

在輸入特征相等的情況下,第二種殘差結(jié)構(gòu)的參數(shù)數(shù)量比第一種結(jié)構(gòu)減少了16.94倍.但是第二種結(jié)構(gòu)在初始維度較低時特征提取能力相對較弱,一般需要初始特征維度較大,才能保證其特征提取能力,而且模型的層數(shù)一般相對較深,這樣使得相等殘差結(jié)構(gòu)組成的殘差網(wǎng)絡(luò),第二種結(jié)構(gòu)比第一種結(jié)構(gòu)參數(shù)更多.

3.1.2 結(jié)構(gòu)優(yōu)化

本文針對嵌入式平臺資源短缺問題,提出一種參數(shù)較少的殘差結(jié)構(gòu):該結(jié)構(gòu)使用3×3深度可分離卷積和普通卷積串聯(lián)而成,對于1×1逐點(diǎn)卷積我們?nèi)コ薘eLu激活函數(shù),使用線性瓶頸來降低非線性Relu激活函數(shù)對深度可分離卷積輸出特征的影響.改進(jìn)后的殘差結(jié)構(gòu)的輸入特征映射為64維與第一種殘差結(jié)構(gòu)相似,結(jié)構(gòu)如圖1所示.

圖1 改進(jìn)的殘差結(jié)構(gòu)Fig.1 Improved residual structure

對比計算發(fā)現(xiàn),采用深度可分離卷積對標(biāo)準(zhǔn)卷積進(jìn)行分解,當(dāng)深度卷積的尺寸為(Dk,Dk,1,M)輸出特征為(Dg,Dg,M);逐點(diǎn)卷積尺寸為(1,1,M,N),輸出特征也為(Dg,Dg,N),計算公式表示為.

(5)

深度可分離卷積的計算量為.

Dk·Dk·M·N·Df·Df+M·N·Df·Df

(6)

最終,深度可分離卷積減少的計算量為

(7)

3.1.3 線性瓶頸

當(dāng)一個輸入特征維數(shù)嵌入到比激活空間低的多的子空間中時,消除較窄層中的非線性可以實(shí)現(xiàn)更好的網(wǎng)絡(luò)性能[24].當(dāng)一個2維數(shù)據(jù)經(jīng)隨機(jī)矩陣T將數(shù)據(jù)映射為M維,并通過非線性ReLU激活函數(shù)處理后,再利用T的逆矩陣由M維逆恢復(fù)到原始的維度.當(dāng)映射維度M=2,3時,恢復(fù)后的結(jié)構(gòu)發(fā)生了嚴(yán)重的坍縮,當(dāng)映射維度M>15時,恢復(fù)后的結(jié)構(gòu)較好.這表明了,這表對于一個低維數(shù)據(jù)進(jìn)行ReLU等線性變換時,特征會相互重疊,導(dǎo)致較嚴(yán)重的信息丟失,維度較高時,恢復(fù)的信息才會增多.使用線性變換替代Bottleneck的激活層,可以有效的減少非線性激活函數(shù)對改進(jìn)的殘差結(jié)構(gòu)造成的信息損失.

深度卷積輸出維度較低,非線性的ReLU激活函數(shù)可能會濾除很多有用信息.因此,本實(shí)驗(yàn)剔除了第二層1×1卷積ReLU激活函數(shù).

3.2 殘差網(wǎng)絡(luò)設(shè)計

網(wǎng)絡(luò)結(jié)構(gòu):原始的ResNet34和ResNet50都是由16個殘差結(jié)構(gòu)串聯(lián)的殘差塊組成.因此本文利于優(yōu)化后的殘差結(jié)構(gòu),根據(jù)常見ResNet網(wǎng)絡(luò)基礎(chǔ)設(shè)計了一個50層的殘差網(wǎng)絡(luò)ResNet50_dw,結(jié)構(gòu)如圖2所示.

圖2 殘差網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Residual network structure

改進(jìn)的殘差網(wǎng)絡(luò)分為6個階段,第1階段使用7×7的卷積進(jìn)行初始特征提取,輸出為特征維度為64;第2至5階段分別由多個輸出為64維,128維,256維,512維的改進(jìn)的殘差塊串聯(lián)而成,其中第2階段和第5階段由3個殘差塊相連接,第3階段由4個殘差塊相連接,第4階段由6個殘差塊相連接;第6階段使用全連接層輸出,每層卷積層后分別使用Batch Normal正則化處理.圖2中MaxPool為最大池化操作,AvgPool為平均池化操作,整個網(wǎng)絡(luò)保留了較多的傳統(tǒng)卷積,維持了網(wǎng)絡(luò)的復(fù)雜性和特征提取能力.

4 混合加速方法

優(yōu)化后的殘差結(jié)構(gòu)相比于原始的兩種殘差結(jié)構(gòu)參數(shù)分別減少了43.6%和40.3%,但單一的網(wǎng)絡(luò)卷積優(yōu)化后,網(wǎng)絡(luò)模型參數(shù)及復(fù)雜度依舊很高.剪枝、優(yōu)化BN層和量化技術(shù)分別是從參數(shù)的重要性評判、計算方式和存儲方式三個獨(dú)立的方向?qū)崿F(xiàn)網(wǎng)絡(luò)加速,混合三種方法可以繼續(xù)對網(wǎng)絡(luò)加速,但是優(yōu)化剪枝后網(wǎng)絡(luò)的復(fù)雜性會大大降低,量化和優(yōu)化BN層可能會造成精度損失的差異,因此本文將繼續(xù)研究最為合適的混合加速方法,以保證網(wǎng)絡(luò)的性能.加速過程為:首先通過評估參數(shù)對初始網(wǎng)絡(luò)的卷積核進(jìn)行有效裁剪,再對訓(xùn)練后的網(wǎng)絡(luò)模型進(jìn)行卷積層和BN層的合并,最后將模型中的浮點(diǎn)型數(shù)據(jù)進(jìn)行定點(diǎn)化處理.實(shí)驗(yàn)將對比合并BN和卷積層和去除BN層,以驗(yàn)證最優(yōu)BN層優(yōu)化方法;對比隨機(jī)取舍的FP16量化與常見的TensorRT INT8量化方案,以驗(yàn)證最優(yōu)量化方法.

4.1 網(wǎng)絡(luò)剪枝

4.1.1 剪枝過程

網(wǎng)絡(luò)剪枝可以有效的剔除卷積層和全連接層中影響較小的參數(shù),網(wǎng)絡(luò)剪枝過程為:第1步利用數(shù)據(jù)集訓(xùn)練生成網(wǎng)絡(luò)模型文件;第2步根據(jù)網(wǎng)絡(luò)模型文件記錄的每個通道和卷積核的權(quán)重分布情況來衡量卷積核的重要性,確定剪枝百分比;第3步根據(jù)百分比刪除本層的待剪枝卷積核及特征圖對應(yīng)關(guān)系,第4步在卷積核剪枝后,通過再訓(xùn)練恢復(fù)模型精度.最后重復(fù)上述過程,逐層對剩下的卷積層進(jìn)行剪枝和微調(diào),剪枝完成后輸出最終網(wǎng)絡(luò)模型文件.

本文中衡量各層卷積核重要性的標(biāo)準(zhǔn)是卷積核權(quán)重絕對值之和,即L1范數(shù).將每層卷積層的卷積核權(quán)重之和由大到小排序,權(quán)重之和較小的卷積核,其特征提取的信息相對較少,對網(wǎng)絡(luò)貢獻(xiàn)較小,這些卷積核的重要性較低.每層卷積層剪枝的比例通過卷積層的敏感度來衡量,敏感度是指在不同卷積層刪除相同卷積核時對精度的影響關(guān)系,精度損失越嚴(yán)重說明該卷積層敏感度越高,對于這樣的卷積層要刪除較小比例的卷積核或不做處理,敏感度較低的卷積層要刪除較大比例的卷積核.

4.1.2 剪枝計算量

裁剪一層卷積后,假設(shè)它的第i個卷積層輸入特征的高度和寬度分別為hi和wi,原始輸入通道數(shù)為ni,輸出通道為ni+1,上層卷積層裁剪比例為p,本層裁剪比例為q,那么對于輸入特征圖xi∈Rni×hi×wi,經(jīng)過ni+1個k×k三維卷積核F∈Rni×k×k,輸出特征圖為xi+1∈Rni+1×hi+1×wi+1原來的運(yùn)算量為:

C=nini+2k2hi+2wi+1

(8)

剪枝后的本層的計算量減少為:

C<(1-P)ni,(1-q)ni+1>=(1-)ni(1-q)ni+1k2hi+2wi+1

(9)

輸入本層卷積核剪除后,同時也會去除下層的輸入映射,那么假設(shè)下層輸出特征圖ni+2保持不變,剪枝后計算量總共減少了:

C<(1-p)ni,(1-q)ni+1,ni+2>=nini+1k2hi+1k2hi+1wi+1+

ni+1ni+2k2hi+2wi+2

(10)

顯然,對于深層的殘差網(wǎng)絡(luò),卷積核剪枝可以有效的加快模型的運(yùn)算速度和減少參數(shù),對網(wǎng)絡(luò)模型具有良好的加速效果.

4.2 BN層優(yōu)化

優(yōu)化后的殘差網(wǎng)絡(luò)BN層數(shù)量增多,BN層推理時會占用較大的內(nèi)存資源,融合BN層和卷積層計算可以有效解決網(wǎng)絡(luò)的運(yùn)算時的內(nèi)存問題.該方法過程為:首先網(wǎng)絡(luò)卷積層的計算是通過將輸入x乘以權(quán)重w后和偏執(zhí)b相加得到的,計算公式為:

(11)

BN層是對卷積層的輸出結(jié)果減去全局均值,再除以標(biāo)準(zhǔn)差,計算公式為:

(12)

兩層融合后即可得到新的權(quán)重參數(shù)和偏執(zhí)值,最終計算公式為:

(13)

合并兩層后,原始網(wǎng)絡(luò)的BN層輸出值并沒有產(chǎn)生變化,從而不會對網(wǎng)絡(luò)精度造成影響,而網(wǎng)絡(luò)的參數(shù)的計算和讀取次數(shù)會大幅的降低.

4.3 參數(shù)量化

4.3.1 TensorRT方案

嵌入式端低比特的數(shù)據(jù)會比高比特的數(shù)據(jù)運(yùn)算速度更快,數(shù)據(jù)量化就是將浮點(diǎn)型數(shù)據(jù)轉(zhuǎn)化為定定點(diǎn)型數(shù)據(jù).目前最常見的量化方式基于NVIDIA TensorRT的int8量化方法,普通的int8量化方式是直接將所有真實(shí)值映射在int8上,這種量化方式雖然簡單直接,但是會浪費(fèi)大量位寬,甚至?xí)?dǎo)致準(zhǔn)確率的大幅降低.TensorRT方案為了解決這一問題,采用了飽和技術(shù)來防止精度損失,通過設(shè)置閾值T,將閾值內(nèi)的數(shù)據(jù)進(jìn)行映射,閾值外的數(shù)據(jù)直接采用-128和127,量化過程中雖然舍棄了部分?jǐn)?shù)據(jù),但可以節(jié)約大量存儲空間.TensorRT將32位浮點(diǎn)型數(shù)據(jù)映射為8位整型數(shù)據(jù)的映射公式為:

FP32_Tensor(T)=scale_factor(sf)*bit_Tensor(t)

+FP32_bias(b)

(14)

其中bias偏置值去掉對精度的影響較小,因此去除偏置值,最終的映射公式為:

T=sf·t

(15)

4.3.2 FP16量化

在內(nèi)存中一個32浮點(diǎn)型數(shù)據(jù)表示形式為1bit符號位+8bit的指數(shù)部分+23bit的尾數(shù)部分,浮點(diǎn)數(shù)的實(shí)際值為符號位乘以指數(shù)偏移值再乘以分?jǐn)?shù)值,將32位浮點(diǎn)數(shù)據(jù)轉(zhuǎn)化為FP16半精度浮點(diǎn)型后,數(shù)據(jù)指數(shù)部分和尾數(shù)部分別用5bit和10bit表示,網(wǎng)絡(luò)可以降低一半的存儲空間.FP16相比INT8可以表示更廣的數(shù)值范圍.

傳統(tǒng)的定點(diǎn)數(shù)據(jù)轉(zhuǎn)化規(guī)則是最近鄰取舍原則,定義方法為:

Round(x,)=

(16)

其中,表示這個定點(diǎn)數(shù),IN為定點(diǎn)數(shù)的整數(shù)位,F(xiàn)L為定點(diǎn)數(shù)的小數(shù)位,為最小單位=2-FL,但是這種方式在樣本數(shù)據(jù)不平衡時,預(yù)測偏差較大.隨機(jī)取舍的方式擁有更好的量化性能,在數(shù)據(jù)產(chǎn)生上溢時,隨機(jī)選取會選擇與它最接近的兩個數(shù)之一,選取的概率與他們之間的距離成反比,當(dāng)數(shù)據(jù)產(chǎn)生下溢時,使用最大值或最小值代替,最終轉(zhuǎn)化方式為:

(17)

(18)

5 實(shí)驗(yàn)結(jié)果及分析

本實(shí)驗(yàn)訓(xùn)練的軟件環(huán)境為:ubuntu16.04操作系統(tǒng),使用Tensorflow-GPU深度學(xué)習(xí)框架完成模型訓(xùn)練.硬件配置為i7處理器,16G運(yùn)行內(nèi)存,顯卡為GTX2080ti.測試環(huán)境為Jetson TX2嵌入式開發(fā)板,內(nèi)存為8GB、存儲為32GB.

網(wǎng)絡(luò)訓(xùn)練設(shè)置初始學(xué)習(xí)率為0.01,訓(xùn)練批次大小為100.實(shí)驗(yàn)采用的數(shù)據(jù)集為cifar10,由10個不同類別的32×32彩色圖像組成,其中每個類別有6000張圖像,分為5個訓(xùn)練集共5000張圖像和1個測試集共1000張圖像.

5.1 優(yōu)化網(wǎng)絡(luò)性能分析

實(shí)驗(yàn)使用卷積優(yōu)化后的50層的殘差網(wǎng)絡(luò)對比兩種常規(guī)的殘差網(wǎng)絡(luò),本實(shí)驗(yàn)對數(shù)據(jù)集和超參數(shù)進(jìn)行相同的處理和設(shè)置,在相同的條件下對比三種網(wǎng)絡(luò)的性能,首先設(shè)置訓(xùn)練迭代的次數(shù)為50000次,每20000次降低一次學(xué)習(xí)率,訓(xùn)練迭代時將cifar10數(shù)據(jù)集隨機(jī)裁剪為28×28像素.最終三種的殘差網(wǎng)絡(luò)的精度和損失變化,如圖3所示.

圖3 三種網(wǎng)絡(luò)訓(xùn)練損失和精度變化Fig.3 Three loss and accuracy changes of network training

相比ResNet34,改進(jìn)后的網(wǎng)絡(luò)收斂速度略低,但整體收斂趨勢一致;相比ResNet50,改進(jìn)的殘差網(wǎng)絡(luò)在訓(xùn)練初期收斂速度更快,最終收斂速度損失比較接近.可見,優(yōu)化后的殘差網(wǎng)絡(luò)能夠維持較強(qiáng)收斂速度和泛化能力.

繼續(xù)對比三種殘差網(wǎng)絡(luò)的平均準(zhǔn)確率,前20000次改進(jìn)的殘差網(wǎng)絡(luò)和原始的ResNet34精度變化速率相似,ResNet50精度變化速率稍緩.通過降低學(xué)習(xí)率再訓(xùn)練最終三種網(wǎng)絡(luò)的最高準(zhǔn)確率分別為:ResNet34為88.24%,ResNet50為87.62%,ResNet50_dw為87.79%.實(shí)驗(yàn)表明:優(yōu)化后的殘差網(wǎng)絡(luò)相比于原來ResNet50精度提升了0.17%,略低于ResNet34,網(wǎng)絡(luò)依舊維持在較高的準(zhǔn)確率.

網(wǎng)絡(luò)的存儲量和檢測速度是評判模型是否在嵌入式端實(shí)現(xiàn)加速的重要指標(biāo).本實(shí)驗(yàn)使用平均單張圖片的檢測時長作為網(wǎng)絡(luò)檢測速度的評判標(biāo)準(zhǔn).為此,實(shí)驗(yàn)進(jìn)一步對比三種殘差結(jié)構(gòu)生成網(wǎng)絡(luò)模型所需存儲體積和檢測時長.對比結(jié)果如表1所示.

對于改進(jìn)殘差結(jié)構(gòu)組成的殘差網(wǎng)絡(luò),相比于ResNet34和ResNet50存儲空間分別減少了40.5%、46.2%,平均單張圖片的檢測時長分別減少了33.2%、39.3%.改進(jìn)的殘差網(wǎng)絡(luò)相比于常規(guī)的殘差網(wǎng)絡(luò)在檢測速度和存儲量上都有了明顯的降低,且在精度上沒有較大損失.可見,改進(jìn)的殘差網(wǎng)絡(luò)更適合在嵌入式端加速應(yīng)用.

5.2 混合加速性能分析

5.2.1 網(wǎng)絡(luò)剪枝

實(shí)驗(yàn)使用改進(jìn)的殘差網(wǎng)絡(luò),前期實(shí)驗(yàn)發(fā)現(xiàn)卷積核的數(shù)量為64和128的卷積層,敏感度較高,不適合進(jìn)行剪枝;卷積核的數(shù)量為256和512的卷積層,敏感度較低,存在冗余參數(shù)較多,為了維持網(wǎng)絡(luò)模型的精度,實(shí)驗(yàn)只對網(wǎng)絡(luò)最后兩個階段,共9個殘差結(jié)構(gòu)進(jìn)行卷積核剪枝.對256維卷積設(shè)置剪枝比例為30%,512維卷積設(shè)置剪枝比例為50%,能夠保證最好的準(zhǔn)確率.改進(jìn)的網(wǎng)絡(luò)最后一次剪枝后的模型再迭代的損失和準(zhǔn)確率變化情況如圖4所示,實(shí)驗(yàn)迭代次數(shù)為1000次,在1000次前網(wǎng)絡(luò)已經(jīng)趨于穩(wěn)定,學(xué)習(xí)率為0.001.

剪枝后的模型準(zhǔn)確率相比之前模型的準(zhǔn)確率在初始狀態(tài)時有所降低,通過再訓(xùn)練后,改進(jìn)殘差網(wǎng)絡(luò)精度分別恢復(fù)到87.34%,精度損失較低.再對比模型的平均測試速率和存儲體積,剪枝后的殘差網(wǎng)絡(luò)模型在損失較低精度的情況下,存儲體積降低為23.0MB,比剪枝前降低了54.6%,平均單張圖片的檢測時長為72.9ms,減少了31.8ms.

5.2.2 BN層優(yōu)化

實(shí)驗(yàn)對比去除不同比例BN層的方法和合并BN層和卷積層的方法來驗(yàn)證最優(yōu)的BN層優(yōu)化方案.由于殘差網(wǎng)絡(luò)減少較少BN層,網(wǎng)絡(luò)的檢測速度提升較低,網(wǎng)絡(luò)加速不明顯.因此本實(shí)驗(yàn)對比了去除殘差網(wǎng)絡(luò)中常規(guī)3×3卷積共16層BN層、去除3×3深度可分離卷積共32層BN層和去除除第一層以外所有共48層BN層的三種殘差網(wǎng)絡(luò)與原始的殘差網(wǎng)絡(luò)的性能變化.實(shí)驗(yàn)使用的殘差網(wǎng)絡(luò)均保留了第一層7×7卷積的BN層,維持網(wǎng)絡(luò)對初始特征的歸一化處理,以防止網(wǎng)絡(luò)擬合現(xiàn)象出現(xiàn).最終網(wǎng)絡(luò)的精度和速度的變化如5圖所示.

圖5 殘差網(wǎng)絡(luò)精度和速度變化Fig.5 Accuracy and speed changes of residual network

實(shí)驗(yàn)表明去除網(wǎng)絡(luò)中的BN層網(wǎng)絡(luò)的檢測速度最高可加快43.9%,但是網(wǎng)絡(luò)精度損失10.63%,精度損失嚴(yán)重.去除部分BN層也存在一定的精度損失,因此直接去除BN層會造成網(wǎng)絡(luò)的性能損失.

進(jìn)一步實(shí)驗(yàn),將改進(jìn)后的模型和剪枝后的模型分別進(jìn)行BN層和卷積層合并,并與原始網(wǎng)絡(luò)進(jìn)行比較,最終網(wǎng)絡(luò)精度和平均單張圖片的檢測時長如表2所示.

表2 改進(jìn)的殘差網(wǎng)絡(luò)優(yōu)化BN層性能變化Table 2 Performanc changes of the improved residual network optimizing BN layer

相比直接去除BN層,合并BN層和卷積層后,網(wǎng)絡(luò)的檢測速度提升了12.6%,且維持了原始的網(wǎng)絡(luò)準(zhǔn)確率,剪枝和優(yōu)化BN層后檢測速度提升了39.1%,實(shí)驗(yàn)表明該方可以有效解決BN層計算量大的問題.

5.2.3 模型量化

對優(yōu)化卷積和BN層的殘差網(wǎng)絡(luò)模型文件分別進(jìn)行INT8和FP16量化,量化后的性能比較如表3所示.殘差網(wǎng)絡(luò)模型經(jīng)過INT8和FP16量化后的存儲體積分別降低了74.3%和49.1%,平均單張圖片的檢測時長分別提高了47.7%和24.2%,但是常規(guī)的TensorRTINT8方案量化后模型精度降低了2.63%,性能損失嚴(yán)重,基于隨機(jī)取舍的FP16量化精度只降低了0.56%.

表3 殘差網(wǎng)絡(luò)量化性能變化Table 3 Performance changes of residual network quantitative

實(shí)驗(yàn)結(jié)果表明:兩種量化方法,都使得模型明顯提速,滿足了一般嵌入式設(shè)備的內(nèi)存要求.但是常見的TensorRT的INT8量化雖然壓縮比例較高,網(wǎng)絡(luò)精度損失嚴(yán)重;基于隨機(jī)取舍的FP16量化可以在保證網(wǎng)絡(luò)的性能的前提下,更有效的實(shí)現(xiàn)網(wǎng)絡(luò)加速.

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

本文實(shí)驗(yàn)對比了常規(guī)的殘差網(wǎng)絡(luò)、卷積優(yōu)化后的殘差網(wǎng)絡(luò)和結(jié)合卷積優(yōu)化和混合加速的殘差網(wǎng)絡(luò)最終的精度、存儲和速度變化如圖6所示.

圖6 各殘差網(wǎng)絡(luò)性能比較Fig.6 Performance comparison of each residual network

實(shí)驗(yàn)結(jié)果表明:卷積優(yōu)化后的殘差網(wǎng)絡(luò)可以維持常規(guī)殘差網(wǎng)絡(luò)的準(zhǔn)確率,而且網(wǎng)絡(luò)存儲體積和計算速率都有了明顯的下降,具有更好的網(wǎng)絡(luò)性能.混合加速方法中,模型剪枝可以剔除大量影響相對較小的卷積核,讓模型的存儲體積減少58%左右,且模型的精度損失較低;BN層和卷積層的合并可以加快12.6%推理速度;模型INT8量化和FP16量化可以使模型的存儲體積縮小了4倍和2倍左右,計算速率提升47.7%和24.2%,但傳統(tǒng)TensorRTINT8存在著較高的精度損失,基于隨機(jī)取舍的FP16精度損失較低.最終本文選擇結(jié)合卷積優(yōu)化和混合剪枝、合并BN層和卷積層和FP16量化加速的方法,可以在降低較小的精度的情況下,大幅減少參數(shù)和存儲量,實(shí)現(xiàn)網(wǎng)絡(luò)最優(yōu)加速.

6 結(jié)束語

本文主要研究了基于嵌入式的殘差網(wǎng)絡(luò)的加速方法,首先使用深度可分離卷積對傳統(tǒng)卷積進(jìn)行有效分解;其次使用線性瓶頸模式減少了非線性層對輸出特征的影響;再次設(shè)計了與常規(guī)殘差網(wǎng)絡(luò)精度和損失相似,但參數(shù)量更少、計算速度更快的殘差網(wǎng)絡(luò);最后混合剪枝、合并BN層和卷積層和FP16量化加速方法繼續(xù)減少和規(guī)范殘差網(wǎng)絡(luò)參數(shù),實(shí)現(xiàn)在嵌入式端的加速和應(yīng)用.與傳統(tǒng)加速方法相比,本文使用的方法可以更有效的減少殘差網(wǎng)絡(luò)的存儲體積,提高運(yùn)算速率,實(shí)現(xiàn)網(wǎng)絡(luò)加速.但本文使用的方法還是存在較少的精度損失.在未來的工作中,還需要進(jìn)一步研究卷積核裁剪指標(biāo)和量化閾值以提高模型準(zhǔn)確率和運(yùn)算速率,實(shí)現(xiàn)深度神經(jīng)網(wǎng)絡(luò)在嵌入式端的加速與應(yīng)用.

猜你喜歡
剪枝殘差嵌入式
人到晚年宜“剪枝”
基于雙向GRU與殘差擬合的車輛跟馳建模
基于YOLOv4-Tiny模型剪枝算法
基于殘差學(xué)習(xí)的自適應(yīng)無人機(jī)目標(biāo)跟蹤算法
基于遞歸殘差網(wǎng)絡(luò)的圖像超分辨率重建
搭建基于Qt的嵌入式開發(fā)平臺
剪枝
天津詩人(2017年2期)2017-03-16 03:09:39
嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
平穩(wěn)自相關(guān)過程的殘差累積和控制圖
河南科技(2015年8期)2015-03-11 16:23:52
Altera加入嵌入式視覺聯(lián)盟
平利县| 永昌县| 香格里拉县| 库伦旗| 定日县| 深水埗区| 开封市| 织金县| 大悟县| 福贡县| 盘锦市| 新蔡县| 同心县| 曲阳县| 饶河县| 利辛县| 崇州市| 武功县| 西青区| 荃湾区| 且末县| 陇南市| 冀州市| 哈巴河县| 玉林市| 慈利县| 南昌市| 吴桥县| 衡阳县| 张家口市| 巴东县| 阜新| 大竹县| 积石山| 邵阳县| 江口县| 丘北县| 宜阳县| 平阴县| 汶上县| 上虞市|