安旭陽, 蘇治寶, 杜志岐, 李兆冬
(中國北方車輛研究所, 北京 100072)
地面無人平臺在實際作戰(zhàn)環(huán)境中,要求能夠檢測人員或裝甲車輛目標信息。傳統(tǒng)目標檢測算法主要以手工設計的特征描述子對目標外觀建模,利用SVM對候選目標分類,常用的特征描述子有SIFT[1]、HOG[2]和LBP[3]。與傳統(tǒng)算法相比,深度學習算法不需要手動選擇特征,具備良好的特征提取能力,檢測精度顯著提高。2014年,Grishick等[4]首次將 CNN引入目標檢測任務,提出R-CNN網(wǎng)絡,采用選擇性搜索算法提取圖像的候選框,利用AlexNet網(wǎng)絡[5]對候選框進行特征提取,最后通過SVM和回歸確定目標位置和種類,速度為0.03 fps。雙階段目標檢測算法檢測精度較高,但檢測速度較低,主要有SSP-Net[6]、Fast R-CNN[7]、Mask R-CNN[8]等。2016年,Redmon等[9]提出YOLO系列網(wǎng)絡,在CNN中實現(xiàn)候選框生成、特征提取、回歸,簡化模型復雜度,速度可達45fps。Liu等[10]提出SSD網(wǎng)絡,以VGG作為骨干網(wǎng)絡,新增卷積層在3個不同尺度上進行檢測,平衡檢測速度和精度。單階段目標檢測算法通常具有較高的實時性,但檢測精度有待提高,主要有YOLO系列[9,11,12]、SSD系列[10]、CornerNet[13]、CenterNet[14]等。
地面無人平臺的智能化除需要強大的軟件算法支撐,也需要能夠承載龐大運算量的硬件平臺。國外特斯拉的FSD芯片算力144TOPS,典型功耗72 W,主要用于自己的量產(chǎn)車型。英偉達Xavier算力30TOPS,典型功耗30 W。國內(nèi)地平線的征程二代芯片算力4TOPS,典型功耗2 W,可用于道路檢測。寒武紀的MLU100芯片,算力高達128TOPS,典型功耗20 W,具有“高性能”、“低功耗”特點,可用于圖像識別等。
隨著地面無人作戰(zhàn)平臺關鍵技術的不斷突破,開展裝備型號研制是必然趨勢和預期。為此,本文以裝備國產(chǎn)化自主可控需求和要求為牽引與驅(qū)動,開展了寒武紀智能加速卡在地面無人平臺上的應用研究,完成目標檢測算法YOLOv3/SSD在寒武紀架構MLUv01的移植部署,通過實車實驗測試和驗證智能加速卡的性能,為未來裝備型號研制提供支撐。為此,本研究重點解決以下問題:① 目標檢測算法環(huán)境適配;② 相機/激光雷達數(shù)據(jù)融合;③ 評價指標體系的構建。
MLU100智能加速卡是中科院寒武紀公司推出的第一款智能處理板卡,采用1H8/1H16混合多核架構,內(nèi)存集成了相應的圖形計算單元和片上緩存結構。相比其他GPU產(chǎn)品,采用針對深度學習算法特點定制的指令集和體系架構,具有高性能、低功耗優(yōu)勢,支持圖像識別、自然語言處理等人工智能技術應用[15]。
寒武紀加速卡支持在線模式和離線模式運行,如圖1所示。其中,在線模式依賴第三方深度學習框架,如Caffe、TensorFlow和MXNet等,部署前需要調(diào)用機器學習庫CNML(Cambricon Neuware Machine Learning Library)解析、編譯生成模型數(shù)據(jù)文件,算法調(diào)試比較方便;而離線模式基于寒武紀開發(fā)的底層API,即運行時庫CNRT(Cambricon Neuware Runtime Library),部署時直接調(diào)用離線模型文件,省略解析、編譯過程,算法執(zhí)行效率更高。
圖1 MLU100運行模式框圖
寒武紀智能加速卡采用多核架構,本文使用的MLU100 D2加速卡共有4個核。程序運行可以調(diào)用單個或多個核進行推理計算,根據(jù)調(diào)用的方式不同,可分為數(shù)據(jù)并行和模型并行,兩者可以獨立運行也可同時運行。
數(shù)據(jù)并行度是指將圖片數(shù)據(jù)集拆分到不同核上進行并行推理計算,每個核共享目標識別算法的模型和權重,即一次處理多張圖片,如圖2所示。此外,數(shù)據(jù)并行度可以在程序運行時進行設置。
圖2 數(shù)據(jù)并行度示意圖
模型并行度是指將目標識別算法模型拆分到不同核上進行推理計算,模型并行度在生成離線模型時進行指定,程序運行時不能改變,如圖3所示。生成離線模型時,CNML能夠?qū)⑼ㄓ梅掌饔柧毘晒Φ腟SD/YOLOv3模型的拓撲結構、輸入輸出、模型參數(shù)進行多尺度拆分,執(zhí)行程序在多核上并行執(zhí)行,并且保證每個核之間的數(shù)據(jù)同步。
圖3 模型并行度示意圖
數(shù)據(jù)并行度能夠提高數(shù)據(jù)吞吐量,適用于批量圖片處理,如圖片列表;而模型并行度能夠加快推理速度,適用于單幀圖片處理。但是兩者滿足條件式(1):
data_para×model_para≤4
(1)
本研究選用CONTEC CONPRO-H9320工業(yè)控制計算機作為宿主機,搭建國產(chǎn)智能加速卡。計算機的CPU通過PCIe x16總線與智能加速卡進行信息交互,目標識別算法的前處理和后處理模塊在CPU上執(zhí)行,模型推理模塊在智能加速卡上執(zhí)行,體系架構框圖如圖4所示。
圖4 智能計算機架構框圖
將VOC2007、VOC2012數(shù)據(jù)集與自制數(shù)據(jù)集進行結合,形成21類樣本數(shù)據(jù)庫,構成訓練SSD/YOLOv3識別模型的訓練與測試數(shù)據(jù),其中的80%用于訓練,20%用于測試,共計22316張圖片。
SSD(Single Shot MultiBox Detector)算法是Wei Liu在ECCV 2016上提出的一種目標檢測算法[10],網(wǎng)絡結構如圖5所示。相比Faster R-CNN,SSD算法首先通過區(qū)域生成網(wǎng)絡得到目標的候選框,然后再進行分類與回歸,具有明顯的速度優(yōu)勢。相比YOLO算法在全連接層后進行目標檢測,SSD算法采用卷積神經(jīng)網(wǎng)絡來直接進行目標檢測。
圖5 SSD網(wǎng)絡結構框圖
在通用服務器的Caffe框架下進行模型訓練,設置迭代次數(shù)為 100 000 次,初始學習率在保證訓練不發(fā)散的情況下盡量取大以保證訓練過程具有較高的收斂速度,這里選為0.001。為適當?shù)募铀偈諗?,將沖量設置為0.9,損失曲線如圖6。訓練使用的GPU為3塊基于Pascal架構的Nvidia Titan X顯卡。
圖6 SSD算法損失曲線
YOLOv3算法是Redmoz改進YOLO(You Only Look Once)的第3個版本,主要提高了小目標的識別精度[16],網(wǎng)絡結構如圖7所示。相比先前兩個版本算法,YOLOv3在多尺度上進行預測(類似圖像金字塔網(wǎng)絡);使用ResNet網(wǎng)絡,將v2的daet19提升到darknet53,加深網(wǎng)絡結構;取消池化層和全連接層,通過改變卷積核步長進行張量變換。YOLOv3在保證實時性的基礎上盡可能提高識別準確度。
圖7 YOLOv3網(wǎng)路結構框圖
在通用服務器的Darknet53框架下進行模型訓練。設置初始學習率0.001,遺忘因子0.9,沖量設置0.9。為防止訓練中過擬合,加入權值衰減參數(shù)0.000 5。設置迭代次數(shù)為50 000次,訓練過程中通過平均準確率曲線調(diào)整訓練參數(shù),當準確率不明顯上升時將學習率適當減小,損失曲線如圖8。
圖8 YOLOv3算法損失曲線
當進行目標檢測算法SSD/YOLOv3移植時,需要調(diào)用寒武紀公司開發(fā)的CNRT和CNML兩個動態(tài)庫。CNRT庫是用戶層面向寒武紀加速卡底層的接口,所有軟件的運行都得調(diào)用CNRT,與并行計算、內(nèi)存管理有關。CNML是用于加速機器學習或深度學習算法而編寫的算子,具有基本算子和融合算子兩種?;舅阕邮菃蝹€運算,如矩陣乘法、矩陣加法、卷積、池化等。融合算子可以對各種基本算子進行有效結合,提高運算效率??紤]到地面無人平臺更關注目標檢測算法的實時性,本文僅對寒武紀智能加速卡的離線模型進行介紹。
為滿足寒武紀架構下運行,本文對通用服務器Caffe框架下訓練后的SSD模型和權重進行適應性改造,首先在卷積層引入RGB三通道均值,然后將基本算子或融合算子、MLU核版本、權重、輸入/輸出數(shù)據(jù)尺寸、參數(shù)信息、模型版本和MLU指令等集成到模型中,使得目標檢測算法徹底脫離CNML機器學習庫和深度學習框架運行,通用型較好,效率高。最后開發(fā)運行程序(主要包括前處理、后處理、推理部分)加載SSD算法離線模型和圖片幀,通過CNRT和驅(qū)動交給MLU100智能加速卡進行推理識別,如圖9所示。
圖9 離線模型運行流程框圖
首先需要將通用服務器Darknet框架下訓練后的YOLOv3模型和權重轉(zhuǎn)換為Caffe框架下的模型和權重,并設置圖片輸入形狀為{1,3,416,416},采用插值方法進行上采樣,然后集成基本算子和融合算子等生成MLU100支持的離線模型。最后,加載YOLOv3模型進行圖片推理檢測,與SSD移植方法類似。
為了充分測試MLU100的性能,在實驗室開展了靜態(tài)測試,在室外開展了實車動態(tài)測試。
測試方法如下:
1) 在Ubuntu16.04操作系統(tǒng)上部署MLU 100智能加速卡開發(fā)環(huán)境;
2) 設計相機實時讀取接口,利用移植后的YOLOv3/SSD模型進行實驗室場景下的數(shù)據(jù)采集與推理識別;
3) 記錄MLU 100運行目標檢測算法時的識別幀數(shù)、物理內(nèi)存、溫度、功率、占有率、頻率等;
4) 根據(jù)測試數(shù)據(jù),對加速卡性能進行評價。
測試設備主要有CONTEC工控機1臺、筆記本1臺、交換機1個、速騰32線激光雷達一個、大恒相機1個,如圖10所示。
圖10 實驗室測試場景
4.1.1YOLOv3測試
本文將目標檢測算法YOLOv3離線模型的模型并行度分別設置為1、2、4,并分別采用半精度浮點運算和整數(shù)運算進行試驗測試,如圖11、圖12、圖13所示。
圖11 識別幀數(shù)、物理內(nèi)存與模型并行度
圖12 功率、溫度與模型并行度
圖13 占有率、頻率與模型并行度
圖11、圖12、圖13表明,MLU100 D2運行YOLOv3目標檢測算法時,識別幀數(shù)、物理內(nèi)存、功率、溫度隨著模型并行度的增加而增加;由于算法模型被分到更多的核上進行計算,MLU100的利用率隨著模型并行度的增加而減少;加速卡的頻率維持不變,即未出現(xiàn)降頻現(xiàn)象,運行比較穩(wěn)定。此外,采用半精度運算的物理內(nèi)存、功率、溫度、利用率明顯高于整數(shù)運算,識別幀數(shù)稍微低于整數(shù)運算,但是能夠保證更高的識別的精度。
4.1.2SSD測試
同樣,將目標檢測算法SSD離線模型的模型并行度分別設置為1,2,4,并分別采用半精度浮點運算和整數(shù)運算進行試驗測試,測試結果如圖14、圖15、圖16所示。
圖14 識別幀數(shù)、物理內(nèi)存與模型并行度
圖15 功率、溫度與模型并行度
圖16 占有率、頻率與模型并行度
圖14、圖15、圖16表明,MLU100 D2運行SSD目標檢測算法時,識別幀數(shù)、物理內(nèi)存、功率、溫度、利用率、頻率隨模型并行度變化趨勢與YOLOv3相同。但是SSD算法的識別幀數(shù)(float16型為23.42幀/s,int8型為25.53幀/s)明顯大于YOLOv3(float16型為15.48幀/s,int8型為21.21幀/s);與SSD模型相比,YOLOv3模型具有更大的復雜度,運行YOLOv3算法時加速卡的物理內(nèi)存、功率、溫度、利用率也大于SSD算法;頻率均維持為1000Hz,并未出現(xiàn)降頻現(xiàn)象,能夠穩(wěn)定運行。
4.1.3MLU100加速卡評價
本文選擇智能加速卡的頻率、識別幀數(shù)、溫度、功率和占用率作為評價指標。正常情況下,目標檢測算法的識別幀數(shù)是最應該受關注的,但是在地面無人平臺部署配置智能加速卡的計算機時,由于車內(nèi)空間相對狹小且存在大量發(fā)熱元器件,不利于智能加速卡的散熱,可能造成加速卡頻率下降,不能維持穩(wěn)定的幀率輸出,故對加速卡溫度或功率影響較大。因此需要對加速卡的各指標重要性進行評價、比較、判斷,做出更合理的決策。為此,本文引入層次分析法,每個評價指標的重要性可以通過兩兩相互對比實現(xiàn)[17-18]。
本文以加速卡性能為目標層,識別幀數(shù)、溫度、功率、占用率和頻率為準則層,構建層次結構如圖17所示。
圖17 評價指標體系層次結構框圖
為保證智能加速卡在地面無人平臺上可靠運行,能否維持加速卡的頻率恒定尤為重要,否則將使得加速卡的識別幀數(shù)動態(tài)變化,最終導致地面無人平臺收發(fā)數(shù)據(jù)混亂。此外,目標檢測算法的識別幀數(shù)影響地面無人平臺的行駛車速,相對其他評價指標較為重要。經(jīng)專家評估,制定如表1所示的判別矩陣。
計算出表1的評價指標的判別元素的最大特征值為5.091 7,特征向量為[0.428 7, 0.181 6, 0.111 8, 0.067 2, 0.875 3],分別表示識別幀數(shù)、溫度、功率、占用率和頻率對評價智能加速卡所占的權重。
表1 判別元素
然后計算一致性指標CI(Consistency Index):
最后計算一致性比率CR(Consistency Ratio):
其中,隨機一致性指標RI(Random Index)可通過表2獲取[19]。由于CR<0.1時,滿足一致性檢驗,無需重新調(diào)整判別矩陣。
表2 隨機一致性指標
因此,本文中準則層對目標層重要性的排序結果依次為加速卡頻率、識別幀數(shù)、溫度、功率和占用率,相對應的權重分別為[0.875 3, 0.428 7, 0.181 6, 0.111 8, 0.067 2],歸一化后為[0.525 832 032, 0.257 539 349, 0.109 095 278, 0.067 163 282, 0.040 370 059]。
根據(jù)YOLOv3/SSD測試的數(shù)據(jù),構建MLU100智能加速卡的評價標準,對不同范圍的頻率、識別幀數(shù)、溫度、功率、占用率進行打分,如表3所示。
表3 MLU100智能加速卡評價標準
將MLU100智能加速卡運行YOLOv3/SSD算法的實驗室測試結果(圖11~圖16)按照上述表3中的評價標準轉(zhuǎn)化為相應的分數(shù)。然后根據(jù)各指標權重進行加權平均,獲得評價分數(shù),如表4所示。結果表明,MLU100 D2運行SSD目標檢測算法時獲得的分數(shù)最高,為92.68。
表4 MLU100運行SSD算法得分
為驗證智能芯片是否滿足地面無人平臺自主導航功能模塊實時運行需求,設計相機/激光雷達避障模塊,如圖18所示。搭載智能加速卡的CONTEC工控機負責目標檢測,通過UDP通信將輸出的目標邊界框的像素坐標發(fā)送到自主計算機。自主計算機將激光雷達采集的點云數(shù)據(jù)進行聚類,目標中心點像素與聚類后的點云數(shù)據(jù)進行融合獲取已識別目標中心的三維位置,最后發(fā)送到地面無人平臺的導航建圖模塊進行建圖。
圖18 相機避障模塊框圖
實驗室靜態(tài)測試結果表明,更大的模型并行度有利于識別幀數(shù)的提高,且int8推理速度優(yōu)于float16,但檢測精度稍有下降。本著安全原則,實車測試時調(diào)整模型并行度為4、采用int8進行實時推理識別。通過操控端下發(fā)直線任務路徑,實車自主行駛,根據(jù)前方檢測的“障礙”重新規(guī)劃路徑,如圖19所示。
圖19 實車測試現(xiàn)場
4.2.1YOLOv3測試用例
避障結果如圖20所示。共進行30次實驗,基于相機感知模塊成功避障25次,失敗5次,成功率83.33%。
圖20 避障結果示意圖
地面無人平臺自主避障測試中,YOLOv3算法的識別幀數(shù)和智能加速卡的頻率、識別幀數(shù)和功率、占用率和溫度曲線如圖21、圖22、圖23所示。
圖21 頻率曲線
圖22 幀數(shù)和功率曲線
圖21、圖22表明,MLU100運行YOLOv3目標檢測算法時的識別幀數(shù)約為21幀/秒,其中大于20幀/秒占據(jù)99.57%,但是低于圖片集測試時的23幀/秒,主要是因為圖片集能夠一次加載,而相機實時識別需要邊加載邊推理計算;MLU100功率由0增加到12 W,低于圖片集測試時的14 W,是因為批量圖片測試可設置更大的數(shù)據(jù)并行度,使得每個核全負荷運行,而相機實時識別只能通過提高模型并行度加快推理運算,模型卻不能充分拆分,仍明顯優(yōu)于市場同等產(chǎn)品(一般為30 W)。
圖23表明,MLU100運行YOLOv3目標檢測算法時板卡每個核的利用率約為68%,主要用于加載模型及與CPU進行交互,低于圖片集測試時的98%,是因為圖片集能夠被充分拆分到每個核進行推理計算,而相機實時識別時無法將模型進行充分拆分,任務調(diào)度相對“悠閑”;MLU100板卡的溫度由40 ℃提高到54 ℃,明顯高于實驗室測試溫度,主要是因為車體內(nèi)空氣不流通,加速卡無法及時散熱。
圖23 占用率和溫度曲線
4.2.2SSD測試用例
避障結果如圖24所示。共進行30次實驗,基于相機感知模塊成功避障27次,失敗3次,成功率為90%。相比YOLOv3算法避障,SSD算法具有更高的識別幀數(shù),能夠提供更快的目標位置更新,避障占據(jù)優(yōu)勢。同時,SSD算法的識別幀數(shù)和智能加速卡的頻率、、識別幀數(shù)和功率、占用率和溫度曲線如圖25、圖26、圖27所示。
圖24 避障結果示意圖
圖25 頻率曲線
圖26 幀數(shù)和功率曲線
圖27 占用率和溫度曲線
圖25、圖26表明,MLU100運行SSD目標檢測算法時的識別幀數(shù)約為25幀/秒,其中大于25幀/秒占95.21%。相比YOLOv3,SSD網(wǎng)絡更簡潔,運行速率更快,但是仍低于圖片集測試的31幀/秒,原因與4.2.1小節(jié)類似;MLU100的功率由0增加到10 W,相比YOLOv3,運行SSD時每個核的負載相對較低,功率相應較低,但仍低于圖片集測試時的13 W,原因與4.2.1類似,明顯優(yōu)于市場同等產(chǎn)品(30 W)。
圖27表明,MLU100運行SSD目標檢測算法時每個核的利用率約為52%,低于YOLOv3的68%,是因為SSD網(wǎng)絡簡潔,拆分到每個核上的模型較少,任務調(diào)度較簡單,但仍低于圖片集測試時的96%,原因與4.2.1小節(jié)類似;MLU100板卡的溫度由53攝氏度提高到55攝氏度,是因為長時間測試導致車體內(nèi)的環(huán)境溫度持續(xù)升高。
基于寒武紀智能加速卡開展了應用研究及測試,完成了:
1) 對通用服務器架構下的目標檢測算法SSD/YOLOv3進行了適應性改造,實現(xiàn)了算法在寒武紀智能加速卡MLU100 D2上的部署。
2) 在實驗室場景下的對加速卡進行了測試,引入層次分析法對加速卡的性能進行了有效評價,結果顯示更大的模型并行度能夠提高目標實時推理識別的速度。
3) 針對地面無人平臺的運行環(huán)境條件,設計相機/激光雷達融合模塊,開展了實車避障任務測試,加速卡能夠保持較為穩(wěn)定的目標位置輸出,滿足地面無人平臺低速自主導航實時建圖需求
未來將開展MLU100在地面無人平臺高速自主導航條件下的目標識別以及場景語義識別等方面的應用研究,對智能加速卡的車載環(huán)境適應性進行測試,對國產(chǎn)智能加速卡滿足地面無人裝備應用需求的情況進行綜合評價。