李方舒,錢 慧,陳曉旭
(福州大學(xué) 物理與信息工程學(xué)院,福州 350116)
近年來深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN)在圖像分類,識別,檢測等領(lǐng)域取得了巨大的成功.然而DNN普遍存在數(shù)據(jù)量大,計(jì)算復(fù)雜度高的問題,在卷積層中尤為突出[1],這使得網(wǎng)絡(luò)難以移植到資源有限的嵌入式開發(fā)板上.然而隨著高科技設(shè)備滲透到生活的方方面面,在諸多設(shè)備上實(shí)現(xiàn)計(jì)算密集型的應(yīng)用變得越來越普遍也越來越重要,因此在資源有限的平臺上實(shí)現(xiàn)DNN的推理成為了研究者們關(guān)注的重點(diǎn).
為了能在嵌入式終端快速部署DNN,研究者們提出了多種方案.2015年韓松等人[2]提出了去除網(wǎng)絡(luò)的冗余連接并調(diào)整權(quán)重以實(shí)現(xiàn)網(wǎng)絡(luò)的壓縮,使得網(wǎng)絡(luò)能夠在嵌入式移動應(yīng)用終端上進(jìn)行部署.文獻(xiàn)[3]通過對網(wǎng)絡(luò)模型進(jìn)行壓縮與高度優(yōu)化,將網(wǎng)絡(luò)從重量級模型變換為能夠部署在嵌入式開發(fā)板上的輕量級模型,實(shí)現(xiàn)了一種基于GPU嵌入式系統(tǒng)的實(shí)時(shí)駕駛員睡意檢測技術(shù).文獻(xiàn)[4]通過采用傳感器融合超聲波來更好的過濾噪聲的方法,結(jié)合GPU硬件特性,提出了一種基于嵌入式GPU的實(shí)時(shí)立體視覺碰撞檢測自適應(yīng)系統(tǒng).文獻(xiàn)[5]采用異步多線程并行計(jì)算,在GPU嵌入式平臺上實(shí)現(xiàn)微笑檢測器過程中,采用模塊化的方案對線程進(jìn)行優(yōu)先級排序,并通過增加關(guān)鍵任務(wù)的線程數(shù)量來實(shí)現(xiàn)任務(wù)之間的負(fù)載平衡.Mohammad的團(tuán)隊(duì)針對移動終端上DNN的推理進(jìn)行了諸多研究[6-8],發(fā)現(xiàn)根據(jù)設(shè)備的資源量合理的采用不同的線程粒度進(jìn)行并行化設(shè)計(jì)能夠顯著提高網(wǎng)絡(luò)的推理速度,并提出了數(shù)據(jù)重新排列,非精確計(jì)算等數(shù)據(jù)處理方案來實(shí)現(xiàn)網(wǎng)絡(luò)的加速設(shè)計(jì).面向檢測,識別等任務(wù)的DNN開始逐漸應(yīng)用到資源有限的移動設(shè)備上.
為了滿足人們對高質(zhì)量,沉浸式影像日益增長的需求,基于深度神經(jīng)網(wǎng)絡(luò)的圖像重構(gòu)引起了研究學(xué)者的廣泛關(guān)注[9-12].然而在面向圖像重構(gòu)的DNN中,為了從退化的高維圖像中不斷提取代表圖像細(xì)節(jié)的關(guān)鍵特征,導(dǎo)致網(wǎng)絡(luò)各層的輸出數(shù)據(jù)量與輸入數(shù)據(jù)量相同甚至更大,網(wǎng)絡(luò)卷積層負(fù)載情況更為嚴(yán)峻.相較于面向檢測識別等問題的DNN,面向圖像重構(gòu)的DNN進(jìn)行硬件移植時(shí)面臨著更嚴(yán)峻的挑戰(zhàn).
切比雪夫多項(xiàng)式能夠?qū)崿F(xiàn)最佳的函數(shù)逼近[13],因此本文采用切比雪夫多項(xiàng)式對網(wǎng)絡(luò)卷積核進(jìn)行并行化處理以簡化卷積層的計(jì)算,將該優(yōu)化方案應(yīng)用在面向重構(gòu)的深度神經(jīng)網(wǎng)絡(luò)中,隨后對優(yōu)化處理后的網(wǎng)絡(luò)卷積層進(jìn)行基于GPU的并行化設(shè)計(jì).為了保證方案的普適性,采用zhu等人[14]在2016年提出的基于流形學(xué)習(xí)的圖像重構(gòu)網(wǎng)絡(luò),該網(wǎng)絡(luò)能夠適用于多種不同的圖像重構(gòu)任務(wù).最后將經(jīng)過并行化設(shè)計(jì)后的網(wǎng)絡(luò)移植到NVIDIA AGX Xavier嵌入式開發(fā)板上,并對其進(jìn)行性能分析.
基于流形學(xué)習(xí)的深度神經(jīng)網(wǎng)絡(luò)[14]結(jié)構(gòu)如圖1所示,傳感器數(shù)據(jù)作為全連接層1的輸入,由于傳感器數(shù)據(jù)一般為復(fù)數(shù),存在實(shí)部與虛部,對于n×n的復(fù)雜傳感器數(shù)據(jù),需將其轉(zhuǎn)換為2n2個(gè)實(shí)數(shù)值輸入全連接層1,因此全連接層1也表示網(wǎng)絡(luò)的輸入層,神經(jīng)元數(shù)量為2n2.全連接層2和3的神經(jīng)元個(gè)數(shù)均為n2,采用tanh激活函數(shù).為了匹配卷積操作,將全連接層3輸出的數(shù)據(jù)進(jìn)行維度轉(zhuǎn)換處理,由n2×1變換為n×n.卷積層1采用64個(gè)5×5大小的卷積核以1為步長進(jìn)行卷積操作,卷積層2采用64個(gè)5×5×64大小的卷積核以1為步長進(jìn)行卷積操作.卷積層均采用Relu作為激活函數(shù),最后對卷積層2采用了1個(gè)7×7×64大小的卷積核以1為步長進(jìn)行反卷積得到重構(gòu)圖像.
圖1 網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Structure of the network
DNN中卷積層主要用于實(shí)現(xiàn)輸入信號高維特征的提取.卷積過程中通過卷積核h對輸入數(shù)據(jù)f進(jìn)行局部感知,在更高層將局部信息進(jìn)行綜合以提取輸入的特征,經(jīng)典的卷積層計(jì)算如公式(1)所示:
y=ξ(h*f)
(1)
y表示當(dāng)前卷積層的輸出,“*”表示卷積操作.ξ表示激活函數(shù),基于流形學(xué)習(xí)的網(wǎng)絡(luò)模型中采用Relu函數(shù):
在卷積計(jì)算過程中,常常需要四個(gè)嵌套的循環(huán),內(nèi)部在卷積核上迭代,外部在輸入圖像的行列方向上迭代,循環(huán)效率很低.其次,二維圖像和卷積核通常采用連續(xù)的內(nèi)存塊以行串行化的順序進(jìn)行存儲,按列訪問數(shù)據(jù)可能會造成內(nèi)存子系統(tǒng)中較高的高速緩存丟失率,因此卷積操作不容易實(shí)現(xiàn)快速計(jì)算.考慮采用多項(xiàng)式來對卷積層計(jì)算進(jìn)行簡化處理.
近似計(jì)算的核心在于能夠在多項(xiàng)式迭代時(shí)間內(nèi)給出問題的近似最優(yōu)解.而多項(xiàng)式能夠?qū)崿F(xiàn)函數(shù)逼近,通過多項(xiàng)式的逼近轉(zhuǎn)換可以將問題轉(zhuǎn)化為對多項(xiàng)式類的研究.且由于多項(xiàng)式的和,差,積仍然是多項(xiàng)式,因此可以通過迭代規(guī)律來完成復(fù)雜計(jì)算的快速實(shí)現(xiàn).
切比雪夫多項(xiàng)式能夠?qū)崿F(xiàn)最佳一致逼近.考慮到實(shí)際應(yīng)用中往往需要對一個(gè)已知的復(fù)雜函數(shù)f(x)進(jìn)行求解,為了對計(jì)算進(jìn)行化簡,通常需要尋找一個(gè)函數(shù)Qn(x),使得兩者之間的誤差能夠在某種度量意義下達(dá)到最小.切比雪夫最佳一致逼近理論中,函數(shù)Qn(x)為切比雪夫多項(xiàng)式,其滿足在某區(qū)間[a,b]內(nèi)與f(x)之間的差值是區(qū)間內(nèi)所有多項(xiàng)式Q(x)與f(x)之間插值中最小的,如公式(2)所示:
(2)
由于切比雪夫多項(xiàng)式能夠?qū)崿F(xiàn)最佳一致逼近,因此考慮采用切比雪夫多項(xiàng)式來進(jìn)行卷積核的優(yōu)化.假設(shè)輸入圖像大小為3×3,卷積核大小為2×2(此處為了進(jìn)行簡單的展示,實(shí)際上較少出現(xiàn)卷積核大小為2×2的情況).如圖2(a)所示,原始的卷積操作中,卷積核大小普遍較小,每次僅能夠提取到部分特征,常需要在每個(gè)輸入特征圖上都進(jìn)行遍歷,最后在高維度上進(jìn)行信息的整合,計(jì)算過程復(fù)雜.
圖2 卷積操作Fig.2 Convolutional operations
本文提出將輸入數(shù)據(jù)表示成向量形式,如圖2(b)所示,卷積核中仍然保留對應(yīng)的權(quán)重信息,并采用補(bǔ)0的方式對其進(jìn)行擴(kuò)充展開,其中補(bǔ)0 的地方用灰色方塊表示.此時(shí)卷積核矩陣用H表示,H的維度p×q計(jì)算方式如公式(3)、公式(4)所示:
p=((Irow-drow)/stride+1)×((Icol-dcol)/stride+1)
(3)
q=Irow×Icol
(4)
其中Irow和Icol分別表示輸入圖像的長和寬,drow和dcol分別表示卷積核的長和寬,stride為步長.
此時(shí)的卷積計(jì)算被展開成為矩陣向量乘法,可以通過一次計(jì)算得到結(jié)果而無需進(jìn)行卷積核對輸入圖像的遍歷,且此時(shí)輸出同樣為一個(gè)向量,其能夠直接作為下一層的輸入,無需進(jìn)行維度轉(zhuǎn)換.
由于卷積操作被展開成了矩陣向量乘法,此時(shí)可以對卷積核采用切比雪夫多項(xiàng)式逼近來進(jìn)行計(jì)算化簡,以使得其可以進(jìn)行并行化處理.K階切比雪夫多項(xiàng)式用Tk(H)∈n×n表示,其遞歸公式如式(5)所示:
Tk(H)=2HTk-1(H)-Tk-2(H)
(5)
其中T0=1,T1=H.因此卷積核的近似可表示為公式(6):
(6)
θ=(θ0,θ1,…,θK-1)∈K表示切比雪夫多項(xiàng)式的系數(shù)向量,也表示網(wǎng)絡(luò)中需要訓(xùn)練的卷積核參數(shù).卷積層的輸入采用全連接層3直接輸出的n2×1維的數(shù)據(jù),不進(jìn)行維度轉(zhuǎn)換,用fin表示,此時(shí)網(wǎng)絡(luò)卷積層計(jì)算可用公式(7)表示:
(7)
ycheby表示卷積層的輸出.
(8)
(9)
CUDA架構(gòu)[15]是Nvidia公司推出的GPU異構(gòu)編程架構(gòu),本文結(jié)合CUDA 架構(gòu)對網(wǎng)絡(luò)卷積層進(jìn)行并行設(shè)計(jì),關(guān)鍵在于切比雪夫多項(xiàng)式迭代的并行設(shè)計(jì).
(10)
結(jié)合公式(10)和圖3可以得出,在第一輪迭代中即可計(jì)算得出全部多項(xiàng)式系數(shù),后面每次迭代中對應(yīng)順位的多項(xiàng)式系數(shù)相等,如圖中C(s,0)和C(s,1)所示,將它們按照順序存儲在GPU全局內(nèi)存(Global Memory)中.
圖3 切比雪夫迭代計(jì)算流程Fig.3 Process of Chebyshev iterative
在CUDA加速設(shè)計(jì)時(shí),采用線程并行度為m,在后續(xù)迭代過程中直接從GPU全局內(nèi)存調(diào)用提前計(jì)算好的對應(yīng)多項(xiàng)式系數(shù)來計(jì)算對應(yīng)多項(xiàng)式的值,從而可以避免每次迭代中多項(xiàng)式系數(shù)值的重復(fù)計(jì)算,也減少了GPU端與CPU端的數(shù)據(jù)傳輸次數(shù).圖4展示了CUDA進(jìn)行并行處理的過程,全局內(nèi)存中開辟出兩塊內(nèi)存,一塊用于存放計(jì)算好的多項(xiàng)式系數(shù),一塊存放計(jì)算好的多項(xiàng)式的值.迭代計(jì)算開始,線程塊從全局內(nèi)存讀取多項(xiàng)式系數(shù),為塊內(nèi)線程分配相應(yīng)的值,每輪迭代結(jié)束,采用線程廣播機(jī)制,將最后兩個(gè)線程計(jì)算得到的多項(xiàng)式值在塊內(nèi)進(jìn)行廣播,作為下一輪迭代的基向量.
圖4 基于CUDA的切比雪夫迭代并行設(shè)計(jì)Fig.4 Cuda-based chebyshev iterative parallel design
并行度m可以根據(jù)硬件平臺資源情況進(jìn)行靈活的設(shè)置.由于每輪迭代中所有多項(xiàng)式的計(jì)算都在同一時(shí)刻進(jìn)行,每一輪迭代過程中計(jì)算時(shí)間由兩次乘法和一次減法運(yùn)算得到,因此每次迭代計(jì)算所需的時(shí)間固定,記為Time1.假設(shè)將并行度增大到m+e,所需的迭代次數(shù)變?yōu)閗/(m+e),增大并行度之后迭代過程中減少的時(shí)間為(k/m-k/(m+e))×Time1.與此同時(shí),迭代開始前所需計(jì)算的多項(xiàng)式系數(shù)個(gè)數(shù)增加,由2m增加至2(m+e).為了保證增大并行度能夠帶來計(jì)算時(shí)間的增益,此時(shí)需要關(guān)注兩點(diǎn):1)所需計(jì)算的多項(xiàng)式系數(shù)增加,硬件平臺是否有足夠的線程資源來支撐它們的計(jì)算,而無需等待前面的計(jì)算結(jié)束并完成資源釋放;2)增加的多項(xiàng)式系數(shù)計(jì)算時(shí)間記為Time2,需要保證Time2≤(k/m-k/(m+e))×Time1.通過上述兩點(diǎn)的考量對并行度進(jìn)行設(shè)置,可以在硬件上實(shí)現(xiàn)資源的充分利用.本文中切比雪夫多項(xiàng)式迭代過程的線程并行度m設(shè)置為3.相對于串行的迭代過程,采用并行計(jì)算的方式靈活度更高,計(jì)算效率能夠獲得顯著提升.
采用來自MGH-USCHCP公共數(shù)據(jù)集庫[16]醫(yī)學(xué)腦圖數(shù)據(jù)集來進(jìn)行模型的訓(xùn)練,數(shù)據(jù)集圖片大小處理成64×64.優(yōu)化前后的網(wǎng)絡(luò)采用相同的訓(xùn)練環(huán)境:CPU為Intel(R)Xeon(R)E5-4610 V4,總內(nèi)存為15G;GPU為Tesla P100,顯存為256G;Tensorflow版本為1.8;CUDA版本為9.0.優(yōu)化后的網(wǎng)絡(luò)進(jìn)行重構(gòu)驗(yàn)證采用的推理環(huán)境:CPU為 Core i7-7700,內(nèi)存為32G;GPU為Nvidia GeForce GT 730,顯存為2G;CUDA版本為9.0.將優(yōu)化后的模型與原模型進(jìn)行對比,驗(yàn)證優(yōu)化后的模型重構(gòu)性能,采用峰值信噪比(Peak Signal to Noise Ratio,PSNR)來評估重構(gòu)圖像的質(zhì)量.然后將優(yōu)化后的模型搭載在Jetson AGX Xavier嵌入式平臺上并進(jìn)行加速效果分析.Jetson AGX Xavier是NVIDIA推出的一款高性能計(jì)算開發(fā)板,其中支持CUDA 7.0,GPU為NVIDIA Volta架構(gòu),CPU為8核 Carmel ARM v8.2,提供了兩個(gè)深度學(xué)習(xí)加速器引擎,可提供30TOPs的深度學(xué)習(xí)運(yùn)算能力,是目前深度神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)最佳的GPU嵌入式平臺.
DNN的時(shí)間復(fù)雜度和空間復(fù)雜度是評價(jià)網(wǎng)絡(luò)模型架構(gòu)的重要指標(biāo).時(shí)間復(fù)雜度決定了其進(jìn)行訓(xùn)練與推理的用時(shí),時(shí)間復(fù)雜度高時(shí)模型訓(xùn)練時(shí)間長使得研究者們的想法無法得到快速驗(yàn)證,模型的改善時(shí)間也會相應(yīng)拉長.因此網(wǎng)絡(luò)的時(shí)間復(fù)雜度是研究者們關(guān)注的評價(jià)指標(biāo),同時(shí)在近似計(jì)算中時(shí)間復(fù)雜度也是一個(gè)重要指標(biāo).空間復(fù)雜度決定了網(wǎng)絡(luò)模型的參數(shù)數(shù)量,網(wǎng)絡(luò)進(jìn)行硬件移植時(shí)需要考慮到硬件平臺有限的資源是否能夠滿足網(wǎng)絡(luò)部署的要求.
由于DNN中時(shí)間復(fù)雜度主要來源于網(wǎng)絡(luò)卷積層,因此主要進(jìn)行卷積層的時(shí)間復(fù)雜度分析,公式(11)表示單個(gè)卷積層的時(shí)間復(fù)雜度,其中M表示輸出特征圖的大小,S表示卷積核的大小,Cin和Cout分別表示卷積層輸入和輸出的通道數(shù):
ComplexTime=O(M2×S2×Cin×Cout)
(11)
由公式(9)可以得出優(yōu)化后網(wǎng)絡(luò)的卷積層時(shí)間復(fù)雜度僅與該層卷積核參數(shù)數(shù)量有關(guān),如公式(12):
ComplexTime=O((S2×Cout)2)
(12)
卷積層的空間復(fù)雜度計(jì)算公式如式(13)所示:
ComplexSpace=O(S2×Cin×Cout)
(13)
由公式(11)和公式(12)可以計(jì)算得出優(yōu)化前后網(wǎng)絡(luò)各層的時(shí)間復(fù)雜度如表1所示.卷積層1和反卷積層為卷積部分的輸入和輸出層,由于在這兩層網(wǎng)絡(luò)中存在輸入或者輸出層通道數(shù)為1的情況,因此表1中優(yōu)化后的模型卷積層1和反卷積層的時(shí)間復(fù)雜度下降不多,但是卷積層2的時(shí)間復(fù)雜度下降了125.44倍.可以得出通過優(yōu)化后網(wǎng)絡(luò)中間隱藏的卷積層的復(fù)雜度能夠獲得明顯的時(shí)間復(fù)雜度下降.
表1 網(wǎng)絡(luò)優(yōu)化前后各卷積層時(shí)間復(fù)雜度Table 1 Time complexity of convolutional layers of thenetwork before and after network optimization
由公式(9)可知,卷積操作被轉(zhuǎn)換為切比雪夫多項(xiàng)式迭代,網(wǎng)絡(luò)中的參數(shù)被轉(zhuǎn)換為多項(xiàng)式迭代中的多項(xiàng)式系數(shù),而此時(shí)需要預(yù)先計(jì)算的多項(xiàng)式系數(shù)個(gè)數(shù)由并行度m來決定,迭代開始前需要計(jì)算2m個(gè)多項(xiàng)式系數(shù)值,因此并行處理后的網(wǎng)絡(luò)卷積層空間復(fù)雜度如公式(14)所示:
ComplexSpace=O((2m)2×Cin×Cout)
(14)
由于m遠(yuǎn)小于原始卷積核的大小S,因此經(jīng)過切比雪夫迭代處理后,各卷積核的空間復(fù)雜度明顯下降.
優(yōu)化前后的模型訓(xùn)練方式一致,批次數(shù)據(jù)量大小設(shè)置為100,學(xué)習(xí)率為0.00002,采用RMSProp算法實(shí)現(xiàn)梯度下降,以加快收斂速度.采用均方誤差作為損失函數(shù).
圖5為訓(xùn)練過程中兩個(gè)模型損失-迭代曲線圖,可以看出優(yōu)化后的模型起始損失值要大于原始模型,隨著迭代次數(shù)增加,兩條曲線逐漸貼近,最終能夠達(dá)到相近的重構(gòu)性能.
圖5 兩種模型損失-迭代曲線Fig.5 Loss-iteration curves of the two models
圖6中,左邊兩張圖為網(wǎng)絡(luò)輸入圖像,右邊兩張圖為優(yōu)化網(wǎng)絡(luò)的重構(gòu)結(jié)果,重構(gòu)出的圖像PSNR能達(dá)到30dB左右,可以證明優(yōu)化后的模型可以成功的完成圖像重構(gòu)任務(wù).
實(shí)驗(yàn)通過遠(yuǎn)程交叉編譯將模型導(dǎo)入到嵌入式平臺上,以文本讀取的方式加載權(quán)重參數(shù)來實(shí)現(xiàn)網(wǎng)絡(luò)的推理過程.采用CUDA中nvprof工具對并行加速設(shè)計(jì)后的網(wǎng)絡(luò)模型推理一張圖片的過程進(jìn)行整體分析.網(wǎng)絡(luò)硬件實(shí)現(xiàn)結(jié)果如表2所示,顯示了warp占用率(AchievedOccupancy,AO),全局內(nèi)存負(fù)載吞吐量(GlobalMemoryLoadThroughput,GMLT),全局內(nèi)存負(fù)載效率(GlobalMemoryLoadEfficiency,GMLE),全局內(nèi)存存儲效率(GlobalMemoryStoreEfficiency,GMSE),所有參數(shù)都取平均值,如公式(15)-公式(17)所示.其中活躍線程數(shù)量為n,最大線程數(shù)量為Max_threads,請求的全局內(nèi)存負(fù)載吞吐量為GMLT_Q,所需的全局內(nèi)存負(fù)載吞吐量為GMLT_N,請求的全局內(nèi)存存儲吞吐量為GMST_Q,所需的全局內(nèi)存存儲吞吐量為GMST_N.
圖6 重構(gòu)結(jié)果Fig.6 Reconstruction results
(15)
(16)
(17)
本文基于重構(gòu)網(wǎng)絡(luò)進(jìn)行并行化處理,實(shí)驗(yàn)中數(shù)據(jù)集大小均為64×64,以固定的分辨率圖像進(jìn)行重構(gòu).由于完成對網(wǎng)絡(luò)的并行化設(shè)計(jì)后,硬件平臺上線程調(diào)度的方式被確定下來,相應(yīng)的資源使用方案和計(jì)算中的操作數(shù)均固定下來,因此對同樣分辨率的圖像進(jìn)行重構(gòu)時(shí),各參數(shù)指標(biāo)理論上保持一致,此處以一張圖像的重構(gòu)為例,對網(wǎng)絡(luò)的硬件加速情況進(jìn)行分析.
表2 網(wǎng)絡(luò)硬件實(shí)現(xiàn)分析Table 2 Hardware implementation analysis of network
表2中可以看到激活函數(shù)(此處的激活函數(shù)為卷積層的激活函數(shù),Relu)的平均占用率最高,達(dá)到了83.5119%,表明該核函數(shù)中warp的利用最充分.卷積層計(jì)算的核函數(shù)的全局內(nèi)存負(fù)載吞吐量最高,達(dá)到了767.59GB/S,同時(shí)全連接層核函數(shù)和卷積層核函數(shù)的全局內(nèi)存負(fù)載效率、全局內(nèi)存存儲效率都達(dá)到了100%,充分利用了設(shè)備內(nèi)存帶寬.
由于全連接層1為輸入層,因此計(jì)算從全連接層2開始.由表3可得,除去網(wǎng)絡(luò)中各層進(jìn)行權(quán)重矩陣讀取的時(shí)間,整個(gè)網(wǎng)絡(luò)模型運(yùn)行時(shí)間為0.35s.
表4展示了原始網(wǎng)絡(luò)在Tensorflow環(huán)境下進(jìn)行推理的時(shí)間和并行加速設(shè)計(jì)后的網(wǎng)絡(luò)在嵌入式開發(fā)板上進(jìn)行重構(gòu)推理的時(shí)間,可以看出并行加速設(shè)計(jì)后的網(wǎng)絡(luò)在嵌入式開發(fā)板上進(jìn)行推理的速度比原始網(wǎng)絡(luò)在PC端推理的速度快2.2倍.
表3 網(wǎng)絡(luò)運(yùn)行時(shí)間Table 3 Running time of the network
表4 推理時(shí)間對比Table 4 Comparison of the inference time
本文針對深度神經(jīng)網(wǎng)絡(luò)中數(shù)據(jù)負(fù)荷大,網(wǎng)絡(luò)卷積層計(jì)算復(fù)雜度很高的問題,提出采用切比雪夫多項(xiàng)式對網(wǎng)絡(luò)卷積核進(jìn)行逼近.通過將卷積核進(jìn)行展開,使得其與輸入數(shù)據(jù)的卷積操作被轉(zhuǎn)換成矩陣向量乘法的形式,能夠無需遍歷操作直接計(jì)算出卷積結(jié)果,然后采用切比雪夫多項(xiàng)式對卷積核中參數(shù)進(jìn)行迭代擬合,使得卷積操作能夠?qū)崿F(xiàn)并行化處理.在網(wǎng)絡(luò)優(yōu)化后的基礎(chǔ)上,基于CUDA編程架構(gòu)為卷積層切比雪夫多項(xiàng)式迭代設(shè)計(jì)了對應(yīng)的并行加速方案.最后將網(wǎng)絡(luò)移植到NVIDIA Jetson AGX Xavier嵌入式開發(fā)板上,其在開發(fā)板上進(jìn)行推理的時(shí)間僅為0.35s.相較于原始網(wǎng)絡(luò)的推理可以獲得2.2倍的加速.