亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        甘 嵐,李 佳,沈鴻飛

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

        1 引 言

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

        深度殘差網(wǎng)絡(luò)是近年來較為流行的網(wǎng)絡(luò)結(jié)構(gòu),席志紅[6]利用殘差網(wǎng)絡(luò)對醫(yī)學(xué)圖像混合數(shù)據(jù)集進行分類實驗.相比其他方法,殘差網(wǎng)絡(luò)有效的減少了參數(shù)和訓(xùn)練時間,提高了網(wǎng)絡(luò)性能.Michal Gregor[7]提出了一種結(jié)合遷移學(xué)習(xí)的殘差結(jié)構(gòu)分類器,該分類器能夠很好的實現(xiàn)在外界環(huá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ù)量較大,直接運行在嵌入式端需要很大的存儲資源和計算資源.

        網(wǎng)絡(luò)加速方法可以有效減少網(wǎng)絡(luò)的計算量和存儲量,是實現(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ò)模型進行壓縮,通過去除網(wǎng)絡(luò)冗余使得網(wǎng)絡(luò)稀疏化[8-10]和網(wǎng)絡(luò)參數(shù)定點化處理[11-13]等方法來實現(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ò)性能,實現(xiàn)殘差網(wǎng)絡(luò)在嵌入式端最優(yōu)加速是本文研究的重點.

        本文根據(jù)上述問題,結(jié)合不同加速方法的優(yōu)勢提出一種更有效的嵌入式網(wǎng)絡(luò)加速方法.該方法首先為了減少原始殘差結(jié)構(gòu)的參數(shù),采用深度可分離卷積、線性優(yōu)化的方法對原始殘差結(jié)構(gòu)進行卷積優(yōu)化,并設(shè)計能夠維持網(wǎng)絡(luò)性能,參數(shù)更少的殘差網(wǎng)絡(luò);其次,為了將改進的殘差網(wǎng)絡(luò)在嵌入式端實現(xiàn)最優(yōu)加速,采用混合網(wǎng)絡(luò)剪枝、合并BN層與卷積層、隨機取舍的FP16量化的方法繼續(xù)減少網(wǎng)絡(luò)中冗余參數(shù)以加速網(wǎng)絡(luò),并與常規(guī)方法進行性能比較.實驗結(jié)果表明,使用上述方法對可以有效實現(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ù)來實現(xiàn)網(wǎng)絡(luò)加速的.如Squeezenet[14]的fire module結(jié)構(gòu),通過控制進入3×3卷積的特征數(shù)量來降低計算量,但該結(jié)構(gòu)適合于淺層網(wǎng)絡(luò).

        深度可分離卷積應(yīng)用于很多高效神經(jīng)網(wǎng)絡(luò)[15-18],如MobileNet、ShuffleNet、Xception等.它由一層深度卷積和一層逐點卷積組成,通過輸入通道的線性組合來計算新的特征.比較深度卷積和傳統(tǒng)卷積的輸出,假設(shè)輸入一個N×H×W×C特征,通過k個3×3的卷積,pad=1,普通卷積的輸出特征映射為N×H×W×k.對于深度可分離卷積,特征提取過程為:第一層的深度卷積可以將輸入分為C組,并收集每個通道的特征;第二層的逐點卷積將上層的輸出通過1×1的逐點卷積來收集每個點特征,最終通過深度可分離卷積的輸出特征映射也為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ù)來實現(xiàn)網(wǎng)絡(luò)加速的.殘差網(wǎng)絡(luò)卷積分解后網(wǎng)絡(luò)中的卷積層和BN層數(shù)量會增多,BN層的作用是對數(shù)據(jù)進行歸一化處理,它可以加快網(wǎng)絡(luò)收斂,防止過擬合現(xiàn)象出現(xiàn)[19].但是BN層在網(wǎng)絡(luò)推理時需要很大的計算資源,BN層增多會占用更多內(nèi)存資源,從而影響網(wǎng)絡(luò)的推理速度.

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

        2.3 模型壓縮

        模型壓縮是通過對網(wǎng)絡(luò)模型的參數(shù)進行精簡化,在保證網(wǎng)絡(luò)性能的同時降低網(wǎng)絡(luò)計算和存儲開銷來實現(xiàn)網(wǎng)絡(luò)的加速.常見的方法有:網(wǎng)絡(luò)剪枝、參數(shù)量化、參數(shù)共享、網(wǎng)絡(luò)分解等[21].參數(shù)共享依賴于聚類效果,過高的壓縮比會造成精度下降.網(wǎng)絡(luò)分解是通過矩陣分解對模型進行壓縮加速,但是對于維度較低的1×1和3×3卷積核,分解難以實現(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ù)雜度實現(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ù),降低計算量,剪枝核心問題是尋找評判機制,去除網(wǎng)絡(luò)中不重要的節(jié)點或卷積核.

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

        殘差網(wǎng)絡(luò)對一些復(fù)雜的圖像具有良好的特征提取能力,但是網(wǎng)絡(luò)層數(shù)較深,模型參數(shù)較多,存儲體積較大,不適合在嵌入式等硬件資源或缺的平臺上直接應(yīng)用.單一的模型加速方法對網(wǎng)絡(luò)加速效果是有限的,通過卷積優(yōu)化可以對網(wǎng)絡(luò)結(jié)構(gòu)進行優(yōu)化且保證網(wǎng)絡(luò)性能,剪枝和量化技術(shù)分別是從參數(shù)的重要性評判和存儲方式兩個獨立的方向?qū)崿F(xiàn)網(wǎng)絡(luò)加速.綜合使用這些方法才可以最有效的降低網(wǎng)絡(luò)參數(shù),達到網(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)具有較強的特征提取能力,但是網(wǎng)絡(luò)參數(shù)相對較多,一般用于40層以下的殘差網(wǎng)絡(luò),常見的有ResNet34.第二種殘差結(jié)構(gòu)首先使用1×1的卷積將輸入特征數(shù)量壓縮4倍,再通過3×3的標(biāo)準(zhǔn)卷積進行特征提取,最后使用1×1的卷積將輸出特征數(shù)量擴張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逐點卷積我們?nèi)コ薘eLu激活函數(shù),使用線性瓶頸來降低非線性Relu激活函數(shù)對深度可分離卷積輸出特征的影響.改進后的殘差結(jié)構(gòu)的輸入特征映射為64維與第一種殘差結(jié)構(gòu)相似,結(jié)構(gòu)如圖1所示.

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

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

        深度卷積輸出維度較低,非線性的ReLU激活函數(shù)可能會濾除很多有用信息.因此,本實驗剔除了第二層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

        改進的殘差網(wǎng)絡(luò)分為6個階段,第1階段使用7×7的卷積進行初始特征提取,輸出為特征維度為64;第2至5階段分別由多個輸出為64維,128維,256維,512維的改進的殘差塊串聯(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ù)的重要性評判、計算方式和存儲方式三個獨立的方向?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ò)的卷積核進行有效裁剪,再對訓(xùn)練后的網(wǎng)絡(luò)模型進行卷積層和BN層的合并,最后將模型中的浮點型數(shù)據(jù)進行定點化處理.實驗將對比合并BN和卷積層和去除BN層,以驗證最優(yōu)BN層優(yōu)化方法;對比隨機取舍的FP16量化與常見的TensorRT INT8量化方案,以驗證最優(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ù)上述過程,逐層對剩下的卷積層進行剪枝和微調(diào),剪枝完成后輸出最終網(wǎng)絡(luò)模型文件.

        本文中衡量各層卷積核重要性的標(biāo)準(zhǔn)是卷積核權(quán)重絕對值之和,即L1范數(shù).將每層卷積層的卷積核權(quán)重之和由大到小排序,權(quán)重之和較小的卷積核,其特征提取的信息相對較少,對網(wǎng)絡(luò)貢獻較小,這些卷積核的重要性較低.每層卷積層剪枝的比例通過卷積層的敏感度來衡量,敏感度是指在不同卷積層刪除相同卷積核時對精度的影響關(guā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原來的運算量為:

        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ò),卷積核剪枝可以有效的加快模型的運算速度和減少參數(shù),對網(wǎng)絡(luò)模型具有良好的加速效果.

        4.2 BN層優(yōu)化

        優(yōu)化后的殘差網(wǎng)絡(luò)BN層數(shù)量增多,BN層推理時會占用較大的內(nèi)存資源,融合BN層和卷積層計算可以有效解決網(wǎng)絡(luò)的運算時的內(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ù)運算速度更快,數(shù)據(jù)量化就是將浮點型數(shù)據(jù)轉(zhuǎn)化為定定點型數(shù)據(jù).目前最常見的量化方式基于NVIDIA TensorRT的int8量化方法,普通的int8量化方式是直接將所有真實值映射在int8上,這種量化方式雖然簡單直接,但是會浪費大量位寬,甚至?xí)?dǎo)致準(zhǔn)確率的大幅降低.TensorRT方案為了解決這一問題,采用了飽和技術(shù)來防止精度損失,通過設(shè)置閾值T,將閾值內(nèi)的數(shù)據(jù)進行映射,閾值外的數(shù)據(jù)直接采用-128和127,量化過程中雖然舍棄了部分數(shù)據(jù),但可以節(jié)約大量存儲空間.TensorRT將32位浮點型數(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浮點型數(shù)據(jù)表示形式為1bit符號位+8bit的指數(shù)部分+23bit的尾數(shù)部分,浮點數(shù)的實際值為符號位乘以指數(shù)偏移值再乘以分數(shù)值,將32位浮點數(shù)據(jù)轉(zhuǎn)化為FP16半精度浮點型后,數(shù)據(jù)指數(shù)部分和尾數(shù)部分別用5bit和10bit表示,網(wǎng)絡(luò)可以降低一半的存儲空間.FP16相比INT8可以表示更廣的數(shù)值范圍.

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

        Round(x,)=

        (16)

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

        (17)

        (18)

        5 實驗結(jié)果及分析

        本實驗訓(xùn)練的軟件環(huán)境為:ubuntu16.04操作系統(tǒng),使用Tensorflow-GPU深度學(xué)習(xí)框架完成模型訓(xùn)練.硬件配置為i7處理器,16G運行內(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ù)據(jù)集為cifar10,由10個不同類別的32×32彩色圖像組成,其中每個類別有6000張圖像,分為5個訓(xùn)練集共5000張圖像和1個測試集共1000張圖像.

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

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

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

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

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

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

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

        5.2 混合加速性能分析

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

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

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

        5.2.2 BN層優(yōu)化

        實驗對比去除不同比例BN層的方法和合并BN層和卷積層的方法來驗證最優(yōu)的BN層優(yōu)化方案.由于殘差網(wǎng)絡(luò)減少較少BN層,網(wǎng)絡(luò)的檢測速度提升較低,網(wǎng)絡(luò)加速不明顯.因此本實驗對比了去除殘差網(wǎng)絡(luò)中常規(guī)3×3卷積共16層BN層、去除3×3深度可分離卷積共32層BN層和去除除第一層以外所有共48層BN層的三種殘差網(wǎng)絡(luò)與原始的殘差網(wǎng)絡(luò)的性能變化.實驗使用的殘差網(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

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

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

        表2 改進的殘差網(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%,實驗表明該方可以有效解決BN層計算量大的問題.

        5.2.3 模型量化

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

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

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

        5.3 實驗結(jié)果分析

        本文實驗對比了常規(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

        實驗結(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存在著較高的精度損失,基于隨機取舍的FP16精度損失較低.最終本文選擇結(jié)合卷積優(yōu)化和混合剪枝、合并BN層和卷積層和FP16量化加速的方法,可以在降低較小的精度的情況下,大幅減少參數(shù)和存儲量,實現(xiàn)網(wǎng)絡(luò)最優(yōu)加速.

        6 結(jié)束語

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

        猜你喜歡
        剪枝殘差嵌入式
        人到晚年宜“剪枝”
        基于雙向GRU與殘差擬合的車輛跟馳建模
        基于YOLOv4-Tiny模型剪枝算法
        基于殘差學(xué)習(xí)的自適應(yīng)無人機目標(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)盟
        日本女同视频一区二区三区| 日韩a级精品一区二区| 国产一区二区三区啊啊| 午夜免费电影| 国产精品 人妻互换| 久久久窝窝午夜精品| 国产亚洲精品综合99久久| 一区二区三区观看在线视频| 亚洲精品中文字幕一二三区| 日本久久高清一区二区三区毛片| 久久久精品国产亚洲成人满18免费网站| 在线观看极品裸体淫片av| 中文字幕午夜精品久久久| 99久久无码一区人妻| 免费精品一区二区三区第35| 无码Av在线一区二区三区| 男女视频在线观看一区二区| 青青草成人免费在线观看视频| 国产md视频一区二区三区| 91尤物视频在线观看| 女优视频一区二区三区在线观看| 国产一区二区三区护士| 国产麻豆剧果冻传媒一区| 欧美最猛黑人xxxxx猛交| 少妇特殊按摩高潮惨叫无码| 日韩午夜免费视频精品一区| 超碰cao已满18进入离开官网| 国产一及毛片| 国产一区二区在线观看av| 人人妻人人澡人人爽人人精品av | 最新中文字幕一区二区| 国产精品自在线拍国产| 色www亚洲| 亚洲成人av一区免费看| 国产成人亚洲综合无码品善网| 伊人99re| 午夜无码国产18禁| 两人前一后地插着她丰满| 美女无遮挡免费视频网站| 国产成人精品曰本亚洲| 精品一区二区三区亚洲综合|