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