張洵穎,趙曉冬,裴茹霞,張麗娜
(1.西北工業(yè)大學無人系統(tǒng)技術(shù)研究院,西安710072;2.西安格儒電子科技有限公司,西安710077)
在現(xiàn)代戰(zhàn)爭當中,無人車通過搭載各類型傳感器,可以實現(xiàn)戰(zhàn)場信息的實時監(jiān)測。無人車上較為常見的傳感器類型包括可見光傳感器和紅外傳感器,通過可見光數(shù)據(jù)集和紅外數(shù)據(jù)集分析,可以實現(xiàn)地面目標種類和位置的識別。機器視覺技術(shù)的發(fā)展,為無人車高精度自動識別地面目標提供了新的技術(shù)實現(xiàn)途徑。機器視覺技術(shù)通過將視覺模塊引入機器,可以使得機器獲得豐富的外界信息,從而大大提升機器與外界環(huán)境之間的交互能力。通過將無人車技術(shù)與機器視覺技術(shù)結(jié)合,可以顯著提升無人車的自主目標識別水平。
研究機器視覺技術(shù)在無人車上的應用,不僅具有重要的理論意義,也同時具有極為廣泛的軍事應用價值。目前已經(jīng)應用于軍事化的無人車,普遍缺乏智能因素的支持。若能有效解決智能算法在無人車上的技術(shù)創(chuàng)新及應用問題,將使得無人車可以更好地適應復雜環(huán)境下的多類別地面目標智能識別需求,從而提升無人車的軍事化智能程度。
隨著人工智能技術(shù)的和大數(shù)據(jù)的發(fā)展,基于深度學習的目標識別方法取得了矚目成績。基于卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)的目標識別算法,其識別準確率已經(jīng)超越人眼水平。目前主流的基于CNN 的識別算法,大致分為兩大類,基于區(qū)域建議的方法和基于回歸的方法。前者錯誤率低,識別速度較慢;后者直接產(chǎn)生目標的類別概率和坐標,更加符合實時性要求,同時準確率也可以滿足需求。
基于區(qū)域建議的識別算法包括區(qū)域建議型卷積神經(jīng)網(wǎng)絡(luò)(Region-CNN,R-CNN)[1],以及在此基礎(chǔ)上不斷改進得到的Fast R-CNN[2]和Faster RCNN[3]。R-CNN 系列算法的發(fā)展,體現(xiàn)了深度學習自主識別算法從開創(chuàng)到實現(xiàn)端對端之間映射的發(fā)展過程。隨著算法不斷發(fā)展,又相繼出現(xiàn)了區(qū)域建議型全卷積神經(jīng)網(wǎng)絡(luò)(Region-based Fully Convolution Network,R-FCN)[4]及其改進算法?;诨貧w的方法包括只看一次(You Only Look Once,YOLO)[5]系列算法及單點多盒探測(Single Shot MultiBox Detector,SSD)[6]系列算法,以及在此基礎(chǔ)上不斷改進得到的YOLO9000[7]、去卷積單點探測(Deconvolutional Single Shot Detector,DSSD)[8]、YOLO V2、YOLO V3[9]和YOLO V4 等算法。相比SSD 系列算法,YOLO 系列算法從檢測速度與精度兩方面獲得了均衡的識別結(jié)果。
智能算法復雜度的高低,直接決定了智能算法對于硬件資源需求的大小。典型的深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)在相應參數(shù)結(jié)構(gòu)下的計算數(shù)量統(tǒng)計情況如表1所示。其中,乘積累加(Multiply Accumulate,MAC)運算數(shù)目和權(quán)值大小是極為重要的兩項參數(shù),可直接反映硬件資源的需求量。MAC數(shù)目合計越大,代表所需的硬件乘累加操作越多;權(quán)值大小合計越大,代表所需存儲空間越大。
表1 典型CNN的參數(shù)及MAC計算數(shù)量統(tǒng)計Table 1 Statistics of parameters and MAC calculation quantity of typical CNNs
從表1 可以看出,神經(jīng)網(wǎng)絡(luò)對于硬件資源的較高需求與嵌入式硬件資源特點存在顯著矛盾。為了解決這一矛盾,不斷改進的神經(jīng)網(wǎng)絡(luò)算法[10-14]及基于神經(jīng)網(wǎng)絡(luò)的壓縮算法[15-17]應運而生。網(wǎng)絡(luò)壓縮算法通過各種數(shù)學模型、基于優(yōu)化思想,在精度損失較小的情況下減少網(wǎng)絡(luò)參數(shù),從而降低算法對于硬件的資源需求量,最終協(xié)助完成智能算法在嵌入式平臺的部署。經(jīng)典的研究成果主要包括神經(jīng)網(wǎng)絡(luò)裁剪、神經(jīng)網(wǎng)絡(luò)量化、核的稀疏化、低秩分解、輕量化網(wǎng)絡(luò)設(shè)計、低位量化等。核的稀疏化是指在訓練過程當中對權(quán)重更新進行誘導,采用更加緊致的存儲方式,其在硬件上的執(zhí)行效率不高;低秩分解是指將卷積核視為張量,并對張量進行分解從而消除冗余信息,其對全連接層效果較為明顯,對于卷積層效果不佳;輕量化網(wǎng)絡(luò)設(shè)計通常采用不同卷積方式,減少模型參數(shù);低位量化使得網(wǎng)絡(luò)精度損失較為明顯,無法在提高推理速度的同時保持精度。最適于硬件實現(xiàn)的方法主要包括神經(jīng)網(wǎng)絡(luò)裁剪和神經(jīng)網(wǎng)絡(luò)量化。
本文首先分析評估了目前基于CNN 的各類識別算法對于硬件資源的需求量,具體包括基于區(qū)域建議的方法和基于回歸的方法,指出YOLO V3算法在精度和速度兩方面更加適用于高精度識別要求時的硬件加速。其次,對YOLO V3算法的網(wǎng)絡(luò)結(jié)構(gòu)進行了具體分析,提出了雙正則項自適應裁剪優(yōu)化算法和面向FPGA 的神經(jīng)網(wǎng)絡(luò)INT8量化優(yōu)化算法。最后,基于Xilinx 公司UltraScale+MPSoC 系列的XCZU7EV 器件驗證平臺,以及無人車拍攝的真實可見光數(shù)據(jù)集和紅外數(shù)據(jù)集,實現(xiàn)了識別及優(yōu)化算法的仿真驗證,并對兩類數(shù)據(jù)集的精度損失情況和硬件加速比情況進行了總結(jié)評價。
針對目前主流的基于CNN的識別算法,進行硬件資源計算量的統(tǒng)計,具體統(tǒng)計情況如表2所示。
表2 基于CNN的識別算法資源計算量統(tǒng)計Table 2 Resource calculation statistics of recognition algorithms based on CNN
從表2 可以看出,針對不同的識別算法網(wǎng)絡(luò)結(jié)構(gòu),硬件資源需求各不相同。從實際識別性能角度講,YOLO V3算法從精度和速度兩方面均衡的角度取得了較為理想的效果。目前在實際應用中更多采用YOLO V3系列的Tiny網(wǎng)絡(luò),資源計算量約為完整算法的1/13,識別性能較差,無法適應高精度識別要求時的多目標分類場合應用。所以如何將YOLO V3 這類識別效果較為理想的復雜網(wǎng)絡(luò)算法應用至嵌入式平臺領(lǐng)域,是亟待解決的難題。
YOLO V3 網(wǎng)絡(luò)共計107 層,在特征提取時采用了Darknet53 的網(wǎng)絡(luò)結(jié)構(gòu),同時借鑒殘差網(wǎng)絡(luò)的思想建立層間的連接。YOLO V3 網(wǎng)絡(luò)獨有的組合式卷積形式如圖1所示。
圖1 YOLO V3網(wǎng)絡(luò)的組合式卷積形式Fig.1 Combined convolution form of YOLO V3 network
其中,Conv2D 層、BatchNorm 層及LeakyRelu層,可視為統(tǒng)一的卷積處理層,一起構(gòu)成YOLO V3網(wǎng)絡(luò)獨有的最小組件。
當網(wǎng)絡(luò)輸入圖像的大小分別為416 × 416 和608×608 時,所需的硬件詳細資源統(tǒng)計量如表3所示。表3 中所列舉出的詳細的資源統(tǒng)計量,代表了YOLO V3網(wǎng)絡(luò)對于硬件資源的需求,可作為硬件設(shè)計的參考。
表3 YOLO V3網(wǎng)絡(luò)硬件資源及其在兩種輸入分辨率下的資源大小一覽Table 3 Hardware resource statistics of YOLO V3 network
YOLO V3 網(wǎng)絡(luò)的三層輸出特征圖參數(shù)如表4所示,在輸出特征層的基礎(chǔ)上,結(jié)合上采樣獲得最終并置層,并進行多目標的分類與位置回歸。其中,輸出層1用于檢測較為大型的目標,輸出層2用于檢測較為中型的目標,輸出層3 用于檢測較為小型的目標。
表4 YOLO V3網(wǎng)絡(luò)三層輸出特征圖參數(shù)Table 4 Parameters of three layer output characteristic diagram for YOLO V3 network
YOLO V3 網(wǎng)絡(luò)的邊界框預測示意圖如圖2所示,當預測邊界時,假設(shè)cx和cy是相對于特征圖預先劃分方格左上角的距離,并且每個單元格的長度是1,即cx= 1,cy= 1。邊框預測計算過程如公式(1)所示,計算結(jié)果為邊界框坐標值bx、by、bw和bh,即邊界框相對于特征圖的位置和大小。
圖2 邊界框預測示意圖Fig.2 Bounding box prediction sketch map
為了加速學習過程,同時簡化參數(shù)的數(shù)據(jù)處理過程,在網(wǎng)絡(luò)學習過程中,真正的學習目標是tx、ty、tw和th。其中,pw和ph代表預設(shè)的anchor box 映射到特征圖中的寬和高,即手動設(shè)置的anchor 寬和高。tx和ty代表預測的坐標偏移值,tw和th代表尺度縮放,分別經(jīng)過sigmoid函數(shù),輸出0~1之間的偏移量,與cx和cy相加后得到邊界框中心點的位置bx和by。tw和th分別與pw和ph作用后得到邊界框的寬bw和高bh。Sigmoid 函數(shù)σ(tx)和σ(ty)分別將變量tx和ty映射到[0,1]區(qū)間內(nèi),從而確保目標中心處于預測網(wǎng)格單元中,防止偏移。
神經(jīng)網(wǎng)絡(luò)裁剪過程如圖3所示,通過剪枝、剪神經(jīng)元的方式,借助最優(yōu)計算,可以在對網(wǎng)絡(luò)裁剪的同時,保持網(wǎng)絡(luò)模型的精度。
圖3 網(wǎng)絡(luò)結(jié)構(gòu)裁剪前后的對比示意圖Fig.3 Comparison of network structure before and after pruning
較為基礎(chǔ)的裁剪方法是裁剪濾波器。裁剪濾波器是一種先裁剪后重新訓練的方法,通過閾值設(shè)定裁剪掉每層當中較低權(quán)值的連接,從而有效降低模型復雜度。
裁剪濾波器的表示方式如公式(2)所示,其中ω代表閾值,i和j代表卷積核的維度。對每層中濾波器權(quán)重絕對值大于經(jīng)驗閾值ω的權(quán)重項進行保留。
裁剪濾波器實現(xiàn)較為容易,但是裁剪后的網(wǎng)絡(luò)性能相對較差,經(jīng)驗閾值較難設(shè)定。為了使得裁剪過程與訓練過程協(xié)同計算,本文提出一種自適應的網(wǎng)絡(luò)裁剪算法,通過將注意力模塊[18]與BatchNorm層縮放因子組合,以正則化方式實現(xiàn)自適應的最優(yōu)裁剪。
注意力模塊由全局池化層、全連接層和激活函數(shù)組成。將注意力模塊的輸出稱為注意力縮放因子,注意力模塊變換過程如公式(3)所示。
(1)通過公式(3)計算注意力縮放因子,獲得能夠衡量通道重要性的參數(shù),縮放因子越小,代表對應通道越不重要;
(2)將注意力縮放因子與BatchNorm 層縮放因子同時作為優(yōu)化約束策略,在L1 正則框架下,將兩類縮放因子同時歸入目標函數(shù),并進行稀疏化訓練。目標函數(shù)如公式(4)所示,第一項代表網(wǎng)絡(luò)代價函數(shù),第二項代表注意力縮放因子正則項,第三項代表BN層縮放因子正則項,α和β分別代表兩項正則項在優(yōu)化過程中的系數(shù);
(3)進行訓練與裁剪的協(xié)同計算,并反復迭代從而獲得最優(yōu)的裁剪后網(wǎng)絡(luò)。裁剪與訓練協(xié)同計算流程如圖4所示,通過微調(diào),可以較快收斂到最優(yōu)網(wǎng)絡(luò);通過反復迭代,可獲得更高的壓縮比。
圖4 裁剪與訓練協(xié)同計算流程圖Fig.4 Collaborative computing flow chart of pruning and training
網(wǎng)絡(luò)裁剪的核心目的是在保持網(wǎng)絡(luò)精度的前提下,對網(wǎng)絡(luò)進行壓縮。本文所提出的神經(jīng)網(wǎng)絡(luò)自適應裁剪算法,可以顯著保持裁剪后的網(wǎng)絡(luò)精度,適用于ARM 或FPGA 等各類嵌入式平臺部署前的網(wǎng)絡(luò)裁剪。
目前最為高效的基于FPGA的神經(jīng)網(wǎng)絡(luò)量化方式是INT8 量化。INT8 量化是指將訓練時使用的32bit 計算模式,用較少的8bit 模式進行存儲和推理計算。相比Fp32 浮點型運算,INT8 量化方式可以減少4 倍的位寬。INT8 量化算法分為不飽和映射和飽和映射兩種方式,不飽和映射是指將權(quán)重數(shù)據(jù)量化到[-127,127]范圍中,這種方式將導致精度的較大損失。飽和映射是指通過各類算法計算,獲得最優(yōu)閾值并將映射到±127 范圍中。超過閾值的部分,將被直接映射到±127。飽和映射示意圖如圖5所示。
圖5 飽和映射示意圖Fig.5 Schematic diagram of saturation mapping
這兩種基于映射的量化算法,都不能獲得最優(yōu)的INT8量化結(jié)果,原因在于統(tǒng)一的、最優(yōu)的閾值很難通過優(yōu)化算法進行選擇,因此精度容易出現(xiàn)較大損失。本文提出一種面向FPGA 的神經(jīng)網(wǎng)絡(luò)INT8 量化方法,其主要思想是將原始32bit 權(quán)值模型量化為與其差值最小的2 的冪次方形式或0,并通過不斷迭代訓練的方式,逐步全局收斂到最優(yōu)量化結(jié)果。其權(quán)重量化范圍的具體選擇策略如下:
(1)通過公式(5)計算量化過程參數(shù),其中,s代表具有最大絕對值的權(quán)值,m代表量化位寬上限,b代表量化位寬,Pij代表量化后的2 的冪次方形式或0,Wij為卷積核,i和j代表卷積核的維度;
(3)在訓練過程中,采用兩組相同權(quán)重同步訓練、每組組內(nèi)逐步細分分組訓練的方式。首先,將兩組相同權(quán)值同步分為相同的兩部分,并在各組內(nèi)根據(jù)經(jīng)驗閾值設(shè)定不同的量化步長及訓練參數(shù),基于公式(5)同時對兩組細分后的一部分做量化;
(4)在每輪量化完成后,對比兩組量化后的參數(shù),將量化后不一致的權(quán)重部分重新視為未量化部分,進行新一輪的迭代求解過程,從而獲得局部更優(yōu)的量化結(jié)果,在此基礎(chǔ)上,進行反向訓練更新;
(5)在各組內(nèi)參數(shù)反向更新時,只更新未做量化的部分;反復迭代步驟3 和步驟4,直到各組內(nèi)所有參數(shù)全部量化完成。量化后的所有權(quán)值,可直接在FPGA 上進行移位計算,大大加速了神經(jīng)網(wǎng)絡(luò)在FPGA上的執(zhí)行效率,可以獲得較高的加速比。
本文提出的神經(jīng)網(wǎng)絡(luò)INT8 量化算法,可以顯著保持量化后的網(wǎng)絡(luò)精度。全精度浮點運算直接替換為移位操作的方式更加適用于FPGA平臺上的量化加速。
為了驗證本文提出并應用的神經(jīng)網(wǎng)絡(luò)壓縮算法在硬件平臺上的加速能力,硬件仿真驗證平臺采用Xilinx公司UltraScale+MPSoC系列的XCZU7EV器件來實現(xiàn)基于CNN 的無人車地面目標識別加速器硬件研制及程序部署。在該硬件實現(xiàn)中,控制程序運行在XCZU7EV 片內(nèi)集成的Cortex-A53 上,計算加速邏輯利用FPGA 實現(xiàn),驗證平臺參考結(jié)構(gòu)圖與實物圖分別如圖6~7所示。
圖6 驗證平臺參考結(jié)構(gòu)圖Fig.6 Reference structure diagram of verification platform
圖7 智能算法硬件加速器Fig.7 Intelligent algorithm hardware accelerator
在基于無人車拍攝的真實可見光數(shù)據(jù)集和紅外數(shù)據(jù)集訓練的基礎(chǔ)上,對本文所提出的神經(jīng)網(wǎng)絡(luò)優(yōu)化算法進行驗證。其中,可見光數(shù)據(jù)集包括訓練集7200 張,測試集800 張;紅外數(shù)據(jù)集包括訓練集3250 張,測試集350 張。數(shù)據(jù)集中的所有圖像,均進行了目標位置及種類標注??梢姽鈹?shù)據(jù)集和紅外數(shù)據(jù)集,各自共計5 個種類,分別包括坦克、汽車、越野車、裝甲車和卡車。
首先,利用初始權(quán)重計算其對應的mAP值。然后,利用裁剪及量化優(yōu)化算法進行算法優(yōu)化,并針對算法優(yōu)化后的權(quán)重,重新計算新的mAP值。在算法優(yōu)化過程中,經(jīng)過10 次裁剪與量化仿真測試,選取最優(yōu)的仿真結(jié)果進行具體參數(shù)的設(shè)置及應用,網(wǎng)絡(luò)裁剪及量化前后的精度仿真驗證結(jié)果如表5所示。表5 中的結(jié)果均是多次程序執(zhí)行后所選取的最優(yōu)結(jié)果,圖像輸入分辨率為416×416。
表5 YOLO V3算法裁剪量化前后精度及速度對比Table 5 Accuracy and Speed Comparison of YOLO V3 before and after Pruning and Quantification
從表5 中的驗證結(jié)果可以看出,針對可見光和紅外數(shù)據(jù)集,未裁剪和未INT8 量化時的幀頻數(shù)為1,在不同的裁剪系數(shù)和INT8 量化組合形式下,幀頻數(shù)的提升倍數(shù)有所不同。此外,隨著裁剪力度的不同,裁剪及量化后精度的變化情況均有所不同,且不同的數(shù)據(jù)集,表現(xiàn)出了不同的變化情況。網(wǎng)絡(luò)裁剪會直接改變網(wǎng)絡(luò)的結(jié)構(gòu),自適應裁剪算法針對不同的卷積層,根據(jù)最優(yōu)原則自適應地進行網(wǎng)絡(luò)裁剪。有些卷積層的通道數(shù)目變小,有些卷積層的通道數(shù)目則保持不變。
針對可見光數(shù)據(jù)集,裁剪力度為20%、40%和60% 時,精度變化分別為+0.998%、+1.29% 和+2.02%;針對紅外數(shù)據(jù)集,裁剪力度為20%、40%和60%時,精度變化分別為+0.06%、-0.36%和-3.01%。在裁剪力度為20%、40%和60%時,幀速率可達9、12和15幀/s。
基于可見光數(shù)據(jù)集的典型場景目標識別結(jié)果如圖8~9所示。其中,圖8 為裁剪及量化前的識別結(jié)果,圖9 是裁剪60%及INT8 量化后的識別結(jié)果。
圖8 裁剪及量化前的可見光目標識別結(jié)果Fig.8 Target recognition results of visible light image before pruning and quantification
基于紅外數(shù)據(jù)集的典型場景目標識別結(jié)果如圖10~11所示。其中,圖10為裁剪及量化前的識別結(jié)果,圖11 是裁剪60%及INT8 量化后的識別結(jié)果。
經(jīng)過裁剪的網(wǎng)絡(luò),某一類的AP 值變化情況,與mAP 值的變化情況不一定呈現(xiàn)一致狀態(tài)。由圖可以看出,盡管在裁剪60%的前提下,mAP 下降了3.01%,但是truck類別的AP值上升,所以相比未裁剪和量化前的目標識別結(jié)果,裁剪后多識別出了truck類目標。mAP值的下降,說明其中多數(shù)類別的AP值呈下降趨勢。
圖9 裁剪60%及INT8量化后的可見光目標識別結(jié)果Fig.9 Target recognition results of visible light image after pruning with 60%ratio and INT8 quantification
圖10 裁剪及量化前的紅外目標識別結(jié)果Fig.10 Target recognition results of infrared image before pruning and quantification
圖11 裁剪60%及INT8量化后的紅外目標識別結(jié)果Fig.11 Target recognition results of infrared image after pruning with 60%ratio and INT8 quantification
針對416 × 416 分辨率的輸入圖像,采用基于Xilinx 公司UltraScale+MPSoC 系列的XCZU7EV 器件驗證平臺,利用本文提出的裁剪及量化算法優(yōu)化后的YOLO V3網(wǎng)絡(luò)進行實時推理,在保證精度的情況下,網(wǎng)絡(luò)實時推理速率可達到15 幀/s。與原始YOLO V3 網(wǎng)絡(luò)在基于GPU 的嵌入式Jetson TX2 平臺上執(zhí)行的3.3幀/s結(jié)果相比,經(jīng)過裁剪及量化,推理速率獲得了4.5 倍的加速比,能夠滿足無人車地面目標識別的精度要求與實時性要求。
本文提出了針對CNN的壓縮優(yōu)化算法,并完成了硬件加速器平臺的開發(fā)及驗證。本文所提出并應用的神經(jīng)網(wǎng)絡(luò)裁剪及量化算法技術(shù),可以實現(xiàn)神經(jīng)網(wǎng)絡(luò)壓縮及硬件平臺嵌入式應用?;谒岢龅牟眉艏傲炕惴?,結(jié)合嵌入式硬件平臺部署應用,有助于實現(xiàn)自主可控的神經(jīng)網(wǎng)絡(luò)加速器研制。此外,本文提出的網(wǎng)絡(luò)壓縮優(yōu)化思想,可擴展并應用于各類智能硬件平臺,從而方便地實現(xiàn)算法擴展及復用,仿真驗證分析結(jié)果表明:
(1)基于CNN 的目標識別算法,其硬件資源計算需求量均可通過計算獲得。針對某一具體算法,在嵌入式硬件部署前,可以通過資源計算分析,合理進行資源配置,從而選擇更優(yōu)、更適合的嵌入式硬件平臺。
(2)本文所提出和采用的神經(jīng)網(wǎng)絡(luò)自適應裁剪算法、面向FPGA 的神經(jīng)網(wǎng)絡(luò)INT8 量化算法,在網(wǎng)絡(luò)精度損失較小的前提下,相比原始網(wǎng)絡(luò)在Jetson TX2平臺上執(zhí)行的3.3幀/s結(jié)果,獲得了4.5倍的推理速度提升。本文的優(yōu)化算法思想,對針對不同硬件平臺的神經(jīng)網(wǎng)絡(luò)優(yōu)化技術(shù)應用,提供了新的技術(shù)思路。
本文的下一步研究方向,是基于FPGA 平臺的進一步程序優(yōu)化及硬件優(yōu)化[18-21],并探索更為先進的針對CNN的算法級優(yōu)化技術(shù),更好地實現(xiàn)深度學習目標識別算法的應用部署,為無人車地面目標識別提供進一步的技術(shù)解決方案。