龍詩科, 蔣奇航, 包友南, 王建琦
(1.桂林航天工業(yè)學(xué)院 航空宇航學(xué)院,廣西 桂林 541004;2.廣西無人機(jī)遙測重點實驗室,廣西 桂林 541004)
近年來,人工智能技術(shù)在理論上得到快速發(fā)展,特別是在視覺信息檢測識別領(lǐng)域發(fā)展迅速,已經(jīng)應(yīng)用在各個無人系統(tǒng)載體平臺上。然而,視覺平臺的搭建在具體實際應(yīng)用上存在不足:1)硬件體積和功耗較大;2)算法運行環(huán)境較為復(fù)雜;3)算法執(zhí)行效率較低。目前,關(guān)于視覺信息方面的人工智能技術(shù)研究與實驗基本依靠性能強(qiáng)大的深度學(xué)習(xí)工作站等設(shè)備,而實際無人系統(tǒng)載體平臺往往無法部署出大體積、大功耗且成本較高的工作站[1]。因此,開發(fā)出體積小巧、成本低、易于算法移植的應(yīng)用平臺具有實際應(yīng)用價值。
人工智能一般分為訓(xùn)練和部署兩個階段[2]。訓(xùn)練階段對機(jī)器的性能要求較高,一般采用深度學(xué)習(xí)工作站或服務(wù)器集群進(jìn)行訓(xùn)練,訓(xùn)練完成后通過部署到實際的應(yīng)用環(huán)境中。部署階段中,要求部署的對象具有相同的軟件運行環(huán)境以及擁有對應(yīng)的硬件加速支持[3]。在部署的環(huán)境中,軟件程序中能直接使用已經(jīng)訓(xùn)練成功的模型,硬件必須要有能支持加速運算的GPU支持。
在人工智能網(wǎng)絡(luò)部署方面,國外應(yīng)用較早,較為矚目的是近年Google的AlphaGo項目,該項目先后擊敗了圍棋世界冠軍李世石、柯潔[4]。國內(nèi)關(guān)于人工智能落地方面,近期也在快速跟進(jìn),支付寶采用了第五代風(fēng)控引擎—AlphaRisk技術(shù)對用戶的支付風(fēng)險進(jìn)行分析,AlphaRisk是全自動全天風(fēng)險防御系統(tǒng),該系統(tǒng)能在不斷學(xué)習(xí)分析各種詐騙行為和用戶的支付的風(fēng)險,為用戶提供保障。人工智能同樣在交通出行中發(fā)揮了重大作用,目前,我國的主要高鐵站均配備了人臉檢測的檢測機(jī),能夠?qū)崟r快速識別需要出行的旅客人臉信息,提高高鐵站的運行效率。
本文研究并設(shè)計了基于NVIDIA Jetson Nano為硬件基礎(chǔ)的視覺應(yīng)用平臺。該應(yīng)用平臺是以四核ARM A57 處理器和NVIDIA CUDA加速核心作為硬件基礎(chǔ)運行的操作系統(tǒng),在神經(jīng)網(wǎng)絡(luò)的部署和運行上使用了NVIDIA TensorRT優(yōu)化器加速神經(jīng)網(wǎng)絡(luò)的推理,該優(yōu)化器能更好地部署神經(jīng)網(wǎng)絡(luò)并且提高神經(jīng)網(wǎng)絡(luò)的運行速度,保證系統(tǒng)的實時性。整套系統(tǒng)包括硬件與和軟件兩個部分,涉及圖像處理技術(shù)、計算機(jī)技術(shù)、信息技術(shù)、人工智能技術(shù)。本文主要是以Ubuntu 18.4作為操作系統(tǒng),采用Python進(jìn)行程序編寫和調(diào)試,通過IMX—219攝像頭完成數(shù)據(jù)采集、保存和傳輸,實現(xiàn)了實時檢測功能并在實際環(huán)境中進(jìn)行測試。
應(yīng)用平臺通過高性能深度學(xué)習(xí)推理優(yōu)化器——TensorRT對神經(jīng)網(wǎng)絡(luò)模型進(jìn)行解析、優(yōu)化、映射等處理,最終統(tǒng)一轉(zhuǎn)換為TensorRT模型。在完成模型優(yōu)化轉(zhuǎn)換后,運行在Jetson Nano的CUDA加速核心上。在完成神經(jīng)網(wǎng)絡(luò)的優(yōu)化、部署工作后,系統(tǒng)通過攝像頭或者內(nèi)部存儲獲得圖像信息,將其輸入到TensorRT優(yōu)化器中,并將結(jié)果反饋到系統(tǒng)界面。該系統(tǒng)的工作原理如圖1所示。
圖1 視覺檢測系統(tǒng)的工作原理
深度學(xué)習(xí)分為訓(xùn)練(training)和推理(inference)。訓(xùn)練主要有前向傳播和和后向傳播兩個部分,通過反饋通道的誤差傳遞修正神經(jīng)網(wǎng)絡(luò)模型的權(quán)重。推理只有前向傳播一個階段,面向新數(shù)據(jù)集,針對新數(shù)據(jù)集進(jìn)行預(yù)測,該方法可以提高推理速度、減少延遲。本文設(shè)計中的TensorRT的核心方法即為推理。兩種方法對比如圖2所示。
圖2 訓(xùn)練與推理示意
1)導(dǎo)入模型并生成推理模型
將輸入的神經(jīng)網(wǎng)絡(luò)模型進(jìn)行層間融合、精度校準(zhǔn)等優(yōu)化,最終輸出一個針對Jetson Nano平臺和網(wǎng)絡(luò)模型優(yōu)化的TensorRT模型。該模型以序列化存在磁盤中或者內(nèi)存中。步驟過程如圖3所示。
圖3 訓(xùn)練與推理示意
2)生成推理引擎并進(jìn)行推理
創(chuàng)建生成推理引擎,并對輸入的數(shù)據(jù)進(jìn)行分析,輸出分類向量或者檢測結(jié)果,如圖4所示。
圖4 推理流程
應(yīng)用系統(tǒng)主要是由攝像頭、Jetson Nano模組、顯示組件、WiFi組件、輸入設(shè)備構(gòu)成。攝像頭主要獲取實時視頻流,是視覺應(yīng)用平臺工作的主要數(shù)據(jù)輸入源;Jetson Nano模組包括核心板、英偉達(dá)核心載板,載板的功能是引出核心板的電路并為核心板提供穩(wěn)定電源以及數(shù)據(jù)傳輸,其中核心板是應(yīng)用平臺的處理核心;顯示組件主要由HDMI標(biāo)準(zhǔn)接口的顯示屏或OLED顯示屏組成,可通過顯示組件直觀觀察視覺識別效果等。WiFi組件為Jetson Nano提供WiFi接入,可遠(yuǎn)程調(diào)試以及接入物聯(lián)網(wǎng)平臺,形成物聯(lián)網(wǎng)網(wǎng)絡(luò)。輸入設(shè)備主要是由鼠標(biāo)、鍵盤組成,在離線情況下可直接對Jetson Nano進(jìn)行操作。硬件平臺組成如圖5所示。
圖5 硬件平臺組成
1)攝像頭工作原理
圖6 小孔成像原理
2)外圍設(shè)備
外圍設(shè)備由顯示屏、WiFi組件、輸入設(shè)備等組成。外圍設(shè)備的作用是圍繞Jetson Nano的正常工作展開。顯示屏可直觀顯示Jetson Nano的當(dāng)前的工作狀態(tài)以及攝像頭的實時畫面。在設(shè)計上采用了通用的HDMI接口,可接入市面上大部分顯示設(shè)備,在部署上具有靈活性。WiFi組件的作用使得Jetson Nano具備接入無線網(wǎng)絡(luò)能力。輸入設(shè)備由鍵盤以及鼠標(biāo)等外部輸入設(shè)備組成,可直接在離線的情況下對系統(tǒng)進(jìn)行操作。外圍設(shè)備保證了Jetson Nano的正常開發(fā)以及運行調(diào)試工作。
應(yīng)用平臺的軟件是整個視覺應(yīng)用平臺的核心部分。該平臺的操作系統(tǒng)為Ubuntu18.4 LTS,支持C++,Python語言的編寫,可根據(jù)開發(fā)者的喜好進(jìn)行決定開發(fā)語言,最終目的是建立并運行可以實時運行的視覺檢測系統(tǒng)。由于全世界的人工智能開發(fā)者的環(huán)境和性能都不一致,多種多樣的框架以及軟件的兼容導(dǎo)致的實時性降低、延遲高的問題對人工智能的部署造成一定困難[7]。本文設(shè)計中借助了英偉達(dá)推出的NVIDA JetPack SDK軟件組件,該組件包括了常用的模型、算法環(huán)境以及TensorRT優(yōu)化器,軟件系統(tǒng)組成圖7所示。
圖7 軟件系統(tǒng)組成
通過對系統(tǒng)硬件的設(shè)計、組裝和現(xiàn)場調(diào)試。應(yīng)用平臺組裝圖如圖8所示。
圖8 系統(tǒng)的實物
成功登入操作系統(tǒng)后,依次安裝Cmake、下載Jetson-inference源碼、安裝libpython3-dev和NumPy依賴庫,最后在項目的里新建build文件夾后進(jìn)行項目編譯。
在所有的軟件準(zhǔn)備完成后,通過命令行或者顯示屏查看項目文件是否編譯完成,檢查完畢后,按照步驟驗證應(yīng)用平臺是否能夠正常工作:1)在bin文件路徑下打開命令行。2)對項目中自帶的圖片進(jìn)行測試,檢查是否能完成對存儲圖片的識別。3)在完成圖片的識別后,通過命令行啟動對實時視頻流的識別。4)檢查應(yīng)用平臺在實時視頻流識別的中的幀率是否滿足要求。5)加入開機(jī)啟動腳本,使得系統(tǒng)一開機(jī)即可進(jìn)入工作模式。
能夠正常實時對圖片中的人、物進(jìn)行識別,并且標(biāo)定識別結(jié)果的相似度。部分結(jié)果如圖9所示。
圖9 部分測試結(jié)果
通過多次反復(fù)的實際測試,試驗數(shù)據(jù)如表1所示。
表1 測試統(tǒng)計數(shù)據(jù)
本文為解決人工智能應(yīng)用部署時體積大、軟件兼容差、實時性差、延遲高的問題,設(shè)計并實現(xiàn)了視覺應(yīng)用平臺。結(jié)合TensorRT優(yōu)化器對多個神經(jīng)網(wǎng)絡(luò)進(jìn)行優(yōu)化以及加速,加快了神經(jīng)網(wǎng)絡(luò)在實際環(huán)境中的落地。系統(tǒng)具有實時性好、擴(kuò)展性強(qiáng)、自動化程度高的優(yōu)點。
1)完成了系統(tǒng)的總體設(shè)計。根據(jù)技術(shù)要求和以往的設(shè)計經(jīng)驗,完成了包括硬件系統(tǒng)以及軟件系統(tǒng)的設(shè)計,其中軟件支持C++,Python兩種語言進(jìn)行開發(fā),主要完成視覺應(yīng)用程序的編寫。
2)提出了一種快速部署方案。將訓(xùn)練完成的神經(jīng)網(wǎng)絡(luò)模型通過TensorRT優(yōu)化加速后部署到實際環(huán)境中,加快了人工智能應(yīng)用的落地。
3)系統(tǒng)調(diào)試與驗證。通過反復(fù)進(jìn)行實際環(huán)境試驗,通過對程序運行進(jìn)行監(jiān)控,確保系統(tǒng)的實時性。