龍?jiān)娍疲?蔣奇航, 包友南, 王建琦
(1.桂林航天工業(yè)學(xué)院 航空宇航學(xué)院,廣西 桂林 541004;2.廣西無人機(jī)遙測(cè)重點(diǎn)實(shí)驗(yàn)室,廣西 桂林 541004)
近年來,人工智能技術(shù)在理論上得到快速發(fā)展,特別是在視覺信息檢測(cè)識(shí)別領(lǐng)域發(fā)展迅速,已經(jīng)應(yīng)用在各個(gè)無人系統(tǒng)載體平臺(tái)上。然而,視覺平臺(tái)的搭建在具體實(shí)際應(yīng)用上存在不足:1)硬件體積和功耗較大;2)算法運(yùn)行環(huán)境較為復(fù)雜;3)算法執(zhí)行效率較低。目前,關(guān)于視覺信息方面的人工智能技術(shù)研究與實(shí)驗(yàn)基本依靠性能強(qiáng)大的深度學(xué)習(xí)工作站等設(shè)備,而實(shí)際無人系統(tǒng)載體平臺(tái)往往無法部署出大體積、大功耗且成本較高的工作站[1]。因此,開發(fā)出體積小巧、成本低、易于算法移植的應(yīng)用平臺(tái)具有實(shí)際應(yīng)用價(jià)值。
人工智能一般分為訓(xùn)練和部署兩個(gè)階段[2]。訓(xùn)練階段對(duì)機(jī)器的性能要求較高,一般采用深度學(xué)習(xí)工作站或服務(wù)器集群進(jìn)行訓(xùn)練,訓(xùn)練完成后通過部署到實(shí)際的應(yīng)用環(huán)境中。部署階段中,要求部署的對(duì)象具有相同的軟件運(yùn)行環(huán)境以及擁有對(duì)應(yīng)的硬件加速支持[3]。在部署的環(huán)境中,軟件程序中能直接使用已經(jīng)訓(xùn)練成功的模型,硬件必須要有能支持加速運(yùn)算的GPU支持。
在人工智能網(wǎng)絡(luò)部署方面,國外應(yīng)用較早,較為矚目的是近年Google的AlphaGo項(xiàng)目,該項(xiàng)目先后擊敗了圍棋世界冠軍李世石、柯潔[4]。國內(nèi)關(guān)于人工智能落地方面,近期也在快速跟進(jìn),支付寶采用了第五代風(fēng)控引擎—AlphaRisk技術(shù)對(duì)用戶的支付風(fēng)險(xiǎn)進(jìn)行分析,AlphaRisk是全自動(dòng)全天風(fēng)險(xiǎn)防御系統(tǒng),該系統(tǒng)能在不斷學(xué)習(xí)分析各種詐騙行為和用戶的支付的風(fēng)險(xiǎn),為用戶提供保障。人工智能同樣在交通出行中發(fā)揮了重大作用,目前,我國的主要高鐵站均配備了人臉檢測(cè)的檢測(cè)機(jī),能夠?qū)崟r(shí)快速識(shí)別需要出行的旅客人臉信息,提高高鐵站的運(yùn)行效率。
本文研究并設(shè)計(jì)了基于NVIDIA Jetson Nano為硬件基礎(chǔ)的視覺應(yīng)用平臺(tái)。該應(yīng)用平臺(tái)是以四核ARM A57 處理器和NVIDIA CUDA加速核心作為硬件基礎(chǔ)運(yùn)行的操作系統(tǒng),在神經(jīng)網(wǎng)絡(luò)的部署和運(yùn)行上使用了NVIDIA TensorRT優(yōu)化器加速神經(jīng)網(wǎng)絡(luò)的推理,該優(yōu)化器能更好地部署神經(jīng)網(wǎng)絡(luò)并且提高神經(jīng)網(wǎng)絡(luò)的運(yùn)行速度,保證系統(tǒng)的實(shí)時(shí)性。整套系統(tǒng)包括硬件與和軟件兩個(gè)部分,涉及圖像處理技術(shù)、計(jì)算機(jī)技術(shù)、信息技術(shù)、人工智能技術(shù)。本文主要是以Ubuntu 18.4作為操作系統(tǒng),采用Python進(jìn)行程序編寫和調(diào)試,通過IMX—219攝像頭完成數(shù)據(jù)采集、保存和傳輸,實(shí)現(xiàn)了實(shí)時(shí)檢測(cè)功能并在實(shí)際環(huán)境中進(jìn)行測(cè)試。
應(yīng)用平臺(tái)通過高性能深度學(xué)習(xí)推理優(yōu)化器——TensorRT對(duì)神經(jīng)網(wǎng)絡(luò)模型進(jìn)行解析、優(yōu)化、映射等處理,最終統(tǒng)一轉(zhuǎn)換為TensorRT模型。在完成模型優(yōu)化轉(zhuǎn)換后,運(yùn)行在Jetson Nano的CUDA加速核心上。在完成神經(jīng)網(wǎng)絡(luò)的優(yōu)化、部署工作后,系統(tǒng)通過攝像頭或者內(nèi)部存儲(chǔ)獲得圖像信息,將其輸入到TensorRT優(yōu)化器中,并將結(jié)果反饋到系統(tǒng)界面。該系統(tǒng)的工作原理如圖1所示。

圖1 視覺檢測(cè)系統(tǒng)的工作原理
深度學(xué)習(xí)分為訓(xùn)練(training)和推理(inference)。訓(xùn)練主要有前向傳播和和后向傳播兩個(gè)部分,通過反饋通道的誤差傳遞修正神經(jīng)網(wǎng)絡(luò)模型的權(quán)重。推理只有前向傳播一個(gè)階段,面向新數(shù)據(jù)集,針對(duì)新數(shù)據(jù)集進(jìn)行預(yù)測(cè),該方法可以提高推理速度、減少延遲。本文設(shè)計(jì)中的TensorRT的核心方法即為推理。兩種方法對(duì)比如圖2所示。

圖2 訓(xùn)練與推理示意
1)導(dǎo)入模型并生成推理模型
將輸入的神經(jīng)網(wǎng)絡(luò)模型進(jìn)行層間融合、精度校準(zhǔn)等優(yōu)化,最終輸出一個(gè)針對(duì)Jetson Nano平臺(tái)和網(wǎng)絡(luò)模型優(yōu)化的TensorRT模型。該模型以序列化存在磁盤中或者內(nèi)存中。步驟過程如圖3所示。

圖3 訓(xùn)練與推理示意
2)生成推理引擎并進(jìn)行推理
創(chuàng)建生成推理引擎,并對(duì)輸入的數(shù)據(jù)進(jìn)行分析,輸出分類向量或者檢測(cè)結(jié)果,如圖4所示。

圖4 推理流程
應(yīng)用系統(tǒng)主要是由攝像頭、Jetson Nano模組、顯示組件、WiFi組件、輸入設(shè)備構(gòu)成。攝像頭主要獲取實(shí)時(shí)視頻流,是視覺應(yīng)用平臺(tái)工作的主要數(shù)據(jù)輸入源;Jetson Nano模組包括核心板、英偉達(dá)核心載板,載板的功能是引出核心板的電路并為核心板提供穩(wěn)定電源以及數(shù)據(jù)傳輸,其中核心板是應(yīng)用平臺(tái)的處理核心;顯示組件主要由HDMI標(biāo)準(zhǔn)接口的顯示屏或OLED顯示屏組成,可通過顯示組件直觀觀察視覺識(shí)別效果等。WiFi組件為Jetson Nano提供WiFi接入,可遠(yuǎn)程調(diào)試以及接入物聯(lián)網(wǎng)平臺(tái),形成物聯(lián)網(wǎng)網(wǎng)絡(luò)。輸入設(shè)備主要是由鼠標(biāo)、鍵盤組成,在離線情況下可直接對(duì)Jetson Nano進(jìn)行操作。硬件平臺(tái)組成如圖5所示。

圖5 硬件平臺(tái)組成
1)攝像頭工作原理


圖6 小孔成像原理
2)外圍設(shè)備
外圍設(shè)備由顯示屏、WiFi組件、輸入設(shè)備等組成。外圍設(shè)備的作用是圍繞Jetson Nano的正常工作展開。顯示屏可直觀顯示Jetson Nano的當(dāng)前的工作狀態(tài)以及攝像頭的實(shí)時(shí)畫面。在設(shè)計(jì)上采用了通用的HDMI接口,可接入市面上大部分顯示設(shè)備,在部署上具有靈活性。WiFi組件的作用使得Jetson Nano具備接入無線網(wǎng)絡(luò)能力。輸入設(shè)備由鍵盤以及鼠標(biāo)等外部輸入設(shè)備組成,可直接在離線的情況下對(duì)系統(tǒng)進(jìn)行操作。外圍設(shè)備保證了Jetson Nano的正常開發(fā)以及運(yùn)行調(diào)試工作。
應(yīng)用平臺(tái)的軟件是整個(gè)視覺應(yīng)用平臺(tái)的核心部分。該平臺(tái)的操作系統(tǒng)為Ubuntu18.4 LTS,支持C++,Python語言的編寫,可根據(jù)開發(fā)者的喜好進(jìn)行決定開發(fā)語言,最終目的是建立并運(yùn)行可以實(shí)時(shí)運(yùn)行的視覺檢測(cè)系統(tǒng)。由于全世界的人工智能開發(fā)者的環(huán)境和性能都不一致,多種多樣的框架以及軟件的兼容導(dǎo)致的實(shí)時(shí)性降低、延遲高的問題對(duì)人工智能的部署造成一定困難[7]。本文設(shè)計(jì)中借助了英偉達(dá)推出的NVIDA JetPack SDK軟件組件,該組件包括了常用的模型、算法環(huán)境以及TensorRT優(yōu)化器,軟件系統(tǒng)組成圖7所示。

圖7 軟件系統(tǒng)組成
通過對(duì)系統(tǒng)硬件的設(shè)計(jì)、組裝和現(xiàn)場(chǎng)調(diào)試。應(yīng)用平臺(tái)組裝圖如圖8所示。

圖8 系統(tǒng)的實(shí)物
成功登入操作系統(tǒng)后,依次安裝Cmake、下載Jetson-inference源碼、安裝libpython3-dev和NumPy依賴庫,最后在項(xiàng)目的里新建build文件夾后進(jìn)行項(xiàng)目編譯。
在所有的軟件準(zhǔn)備完成后,通過命令行或者顯示屏查看項(xiàng)目文件是否編譯完成,檢查完畢后,按照步驟驗(yàn)證應(yīng)用平臺(tái)是否能夠正常工作:1)在bin文件路徑下打開命令行。2)對(duì)項(xiàng)目中自帶的圖片進(jìn)行測(cè)試,檢查是否能完成對(duì)存儲(chǔ)圖片的識(shí)別。3)在完成圖片的識(shí)別后,通過命令行啟動(dòng)對(duì)實(shí)時(shí)視頻流的識(shí)別。4)檢查應(yīng)用平臺(tái)在實(shí)時(shí)視頻流識(shí)別的中的幀率是否滿足要求。5)加入開機(jī)啟動(dòng)腳本,使得系統(tǒng)一開機(jī)即可進(jìn)入工作模式。
能夠正常實(shí)時(shí)對(duì)圖片中的人、物進(jìn)行識(shí)別,并且標(biāo)定識(shí)別結(jié)果的相似度。部分結(jié)果如圖9所示。

圖9 部分測(cè)試結(jié)果
通過多次反復(fù)的實(shí)際測(cè)試,試驗(yàn)數(shù)據(jù)如表1所示。

表1 測(cè)試統(tǒng)計(jì)數(shù)據(jù)
本文為解決人工智能應(yīng)用部署時(shí)體積大、軟件兼容差、實(shí)時(shí)性差、延遲高的問題,設(shè)計(jì)并實(shí)現(xiàn)了視覺應(yīng)用平臺(tái)。結(jié)合TensorRT優(yōu)化器對(duì)多個(gè)神經(jīng)網(wǎng)絡(luò)進(jìn)行優(yōu)化以及加速,加快了神經(jīng)網(wǎng)絡(luò)在實(shí)際環(huán)境中的落地。系統(tǒng)具有實(shí)時(shí)性好、擴(kuò)展性強(qiáng)、自動(dòng)化程度高的優(yōu)點(diǎn)。
1)完成了系統(tǒng)的總體設(shè)計(jì)。根據(jù)技術(shù)要求和以往的設(shè)計(jì)經(jīng)驗(yàn),完成了包括硬件系統(tǒng)以及軟件系統(tǒng)的設(shè)計(jì),其中軟件支持C++,Python兩種語言進(jìn)行開發(fā),主要完成視覺應(yīng)用程序的編寫。
2)提出了一種快速部署方案。將訓(xùn)練完成的神經(jīng)網(wǎng)絡(luò)模型通過TensorRT優(yōu)化加速后部署到實(shí)際環(huán)境中,加快了人工智能應(yīng)用的落地。
3)系統(tǒng)調(diào)試與驗(yàn)證。通過反復(fù)進(jìn)行實(shí)際環(huán)境試驗(yàn),通過對(duì)程序運(yùn)行進(jìn)行監(jiān)控,確保系統(tǒng)的實(shí)時(shí)性。