王俊,陳俊杰,劉 勝
(福州大學(xué)電氣工程與自動化學(xué)院,福州 350108)
近年來,隨著人工智能在工業(yè)領(lǐng)域的應(yīng)用越來越廣泛,嵌入式人工智能的基礎(chǔ)應(yīng)用與研究也顯得更加重要[1]。將輕量化的神經(jīng)網(wǎng)絡(luò)模型部署在具有人工智能(Artificial Intelligence,AI)計算單元的嵌入式終端,實現(xiàn)AI在產(chǎn)業(yè)界實際落地應(yīng)用成為當(dāng)今嵌入式領(lǐng)域發(fā)展的一個重要目標(biāo),因此高校在相關(guān)課程的教學(xué)中,授課內(nèi)容應(yīng)與時俱進,授課方式應(yīng)理論與實踐高效結(jié)合,以達(dá)到更好地適應(yīng)社會發(fā)展需求的目的[2]。
在自動化及控制工程學(xué)科領(lǐng)域?qū)τ诒究粕囵B(yǎng)計劃中,設(shè)有嵌入式系統(tǒng)設(shè)計這門課程,嵌入式系統(tǒng)具有獨立運作的功能,在設(shè)備中起到控制整個裝置作用。通常,嵌入式系統(tǒng)是一種將控制程序儲存在只讀存儲器(Read-Only Memory,ROM)中的嵌入式處理器控制板,通過單個程序來實現(xiàn)整個系統(tǒng)的控制邏輯[3]。隨著AI技術(shù)的不斷發(fā)展,傳統(tǒng)的嵌入式控制板已經(jīng)無法滿足社會產(chǎn)業(yè)的需求,要在一個嵌入式終端實現(xiàn)人工智能,就必須要有嵌入式操作系統(tǒng)以及一定程度的AI算法實現(xiàn)。嵌入式AI 的市場在制造業(yè)、農(nóng)業(yè)、交通運輸業(yè)等一系列工業(yè)自動化領(lǐng)域具有很大的潛力,在當(dāng)今時代國內(nèi)外都呈現(xiàn)出了AI、嵌入式兩個行業(yè)相互促進發(fā)展的趨勢[4]。從目前教學(xué)狀況來看,嵌入式系統(tǒng)設(shè)計這門課程仍然大多停留在傳統(tǒng)教學(xué)內(nèi)容與方式上。如何在嵌入式系統(tǒng)當(dāng)中融入AI,以更好地適應(yīng)社會發(fā)展,也就成為當(dāng)今教學(xué)改革的重要目標(biāo)。
此外,隨著國家大力推進新工科教育,對于學(xué)生的實踐能力水平培養(yǎng)也更加重要,由于嵌入式所涉及的領(lǐng)域廣泛,應(yīng)用于大量的工業(yè)場景,所以對于學(xué)生的實踐水平有較高的要求,因此將實踐平臺與教學(xué)相結(jié)合,將教學(xué)與社會熱門和社會需求相適應(yīng),推動嵌入式系統(tǒng)設(shè)計這門課程的教學(xué)改革顯得至關(guān)重要。
通過設(shè)計一套基于Jetson Nano 的遺留物檢測人工智能嵌入式實踐教學(xué)系統(tǒng),以讓學(xué)生了解嵌入式AI應(yīng)用開發(fā)的大致整體流程,將理論教學(xué)與實踐教學(xué)相結(jié)合,使得學(xué)生對于嵌入式系統(tǒng)技術(shù)這門課程的了解更加深刻。
Jetson Nano嵌入式開發(fā)平臺是由英偉達(dá)公司最新推出的具有AI算力的高性能嵌入式開發(fā)平臺,其性能優(yōu)越且功耗較低,在實時圖像處理領(lǐng)域應(yīng)用廣泛,Jetson Nano采用的是ARM+GPU的芯片架構(gòu),其核心芯片采用的是四核的Cortex-A57,GPU 采用英偉達(dá)系列NVIDIA Maxwell架構(gòu)的顯卡,擁有128 個CUDA單元[5]。作為一款優(yōu)良的GPU運算平臺,其具有優(yōu)越的浮點計算能力和多線程處理性能。Jetson Nano提供了多種外設(shè)接口來與外界進行數(shù)據(jù)交互,其在嵌入式開發(fā)板上集成了一個HDMI顯示屏接口、USB接口、RJ45千兆網(wǎng)口接口、Micro USB 接口以及40pin 的I/O接口[6]。
嵌入式Linux系統(tǒng)是對Linux 操作系統(tǒng)進行裁剪所得到的與Linux系統(tǒng)具有相同接口但是擁有更為精簡的Linux內(nèi)核的操作系統(tǒng)。目前由于嵌入式設(shè)備的硬件資源不足,所以對于嵌入式設(shè)備上的軟件運行環(huán)境會更加嚴(yán)格,在這種特殊的需求下,嵌入式Linux 系統(tǒng)也應(yīng)運而生,嵌入式Linux 系統(tǒng)為嵌入式設(shè)備的發(fā)展提供了良好的發(fā)展空間[7]。嵌入式Linux系統(tǒng)是完全開源的,其性能優(yōu)異,支持多種軟件,并且代碼可移植,是一種支持多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng)。
本次教學(xué)實驗采用的Jetson Nano 就是一種基于嵌入式Linux 操作系統(tǒng)的開發(fā)工具,學(xué)生需要掌握Linux的組成和特點、Ubuntu系統(tǒng)的安裝和配置、Linux常用命令、Linux文件系統(tǒng)以及文本編輯指令。
NVIDIA人工智能計算公司提供了Jetson Nano 的軟件映像,NVIDIA 的默認(rèn)軟件映像包括了預(yù)裝了OpenCV和Python3.6 的Ubuntu Linux18.04,其開發(fā)工具包還含有CUDA 10.2、cuDNN 等深度學(xué)習(xí)工具包,為開發(fā)者提供了便捷的嵌入式開發(fā)環(huán)境,為了部署深度學(xué)習(xí)算法還需要為系統(tǒng)配置pytorch1.4 和torchvision0.4[8]。
目前主流的深度學(xué)習(xí)框架(Tensorflow、pytorch、caffe等)對于神經(jīng)網(wǎng)絡(luò)模型的推斷速度并不優(yōu)秀,無法滿足工業(yè)環(huán)境對實時性的需求。通過NVIDIA推出的TensorRT工具來部署在深度學(xué)習(xí)模型上可以提高模型的推理速度,相比于原本的模型能夠提升至少1倍以上的速度并且還能降低設(shè)備內(nèi)存的占用率。TensorRT集成了模型輕量化、層的融合、動態(tài)內(nèi)存優(yōu)化等技術(shù),提高了深度學(xué)習(xí)模型在嵌入式平臺上實現(xiàn)的可行性[9]。
本教學(xué)實驗采用目標(biāo)檢測模型是YOLOv5,YOLOv5 相對于RCNN 和Faster RCNN 具有更高的精確性和實時性。YOLOv5 是一種基于卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測算法,YOLO 系列算法的核心思想是將待檢測的整張圖片作為神經(jīng)網(wǎng)絡(luò)的輸入,最終檢測獲得的物體的邊框坐標(biāo)值、物體的類別以及置信度[10]。人們?yōu)榱俗非蟾咚俣群途仍赮OLOv4 和YOLOv3 的算法基礎(chǔ)上提出了YOLOv5,同時為了滿足人們在不同場景下對于性能和計算速度的需求,YOLOv5 按照神經(jīng)網(wǎng)絡(luò)的寬度和深度劃分有YOLOv5s、YOLOv5m、YOLOv5l 以及YOLOv5x 4 種權(quán)重模型,其中YOLOv5s是最小的權(quán)重文件,其大小僅有27MB??紤]到嵌入式開發(fā)板的資源問題,為了使得神經(jīng)網(wǎng)絡(luò)模型能夠在Jetson Nano上推理運行,故本實驗采用YOLOv5s作為目標(biāo)檢測算法。
YOLOv5s的網(wǎng)絡(luò)模型如圖1 所示,其按照網(wǎng)絡(luò)結(jié)構(gòu)可以分成4 個部分,分別為Input、Backbone、Neck、Prediction。Input端對輸入圖像進行Mosaic 數(shù)據(jù)增強、自適應(yīng)錨框計算、自適應(yīng)圖片縮放等處理;Backbone端提取圖像邊緣特征;Neck端將特征進行融合通過不同比例尺的featuremap 來預(yù)測檢測結(jié)果;Prediction端采用Boundingbox損失函數(shù)反向傳播并通過nms非極大值抑制來針對多目標(biāo)檢測框的篩選[11]。
圖1 YOLOv5s模型網(wǎng)絡(luò)
通過YOLOv5 的Python 接口,將傳入神經(jīng)網(wǎng)絡(luò)的圖像進行目標(biāo)檢測,如果攝像頭檢測到一個待檢測目標(biāo),則會返回該目標(biāo)的種類標(biāo)簽Lable、包含位置信息的矩形坐標(biāo)框BBox(矩形4 個角點的坐標(biāo))、該目標(biāo)檢測結(jié)果的置信度Confidence,并通過目標(biāo)檢測得到信息來執(zhí)行下一步的判斷算法。
OpenCV是一種用于計算機圖像處理的跨平臺函數(shù)庫,擁有C++、Python等多種不同編程語言接口,并提供了各種圖像處理操作、運動目標(biāo)檢測、關(guān)鍵點定位等高級視覺函數(shù)[12]。OpenCV因其良好的開源性和交互性,所以被廣泛應(yīng)用于機器視覺和圖像處理等領(lǐng)域,是一個非常理想的二次開發(fā)工具。
基于雙背景建模和背景差分法來獲取視頻中的前景目標(biāo),雙背景建模法是以高斯混合模型為基礎(chǔ)的背景/前景分割算法,背景模型的更新采用平均加權(quán)的方式,其抗干擾能力較強,雙背景建模的慢背景是延遲更新的背景模型[13-14]。以視頻的首幀圖像作為當(dāng)前場景的背景圖像,將實時的慢背景與首幀圖像進行差分運算即可得到靜止物體的前景圖像,再通過二值化和圖像腐蝕處理得到其掩膜[15-16],遺留物檢測方法設(shè)計的流程如圖2 所示。
圖2 遺留物檢測主邏輯
步驟1讀取視頻序列獲得首幀圖像,通過混合高斯建模得到的實時慢背景與視頻首幀圖像做差分運算得到靜止物體的前景區(qū)域。
步驟2對原始圖像采用基于YOLOv5 的行人檢測,得到矩形坐標(biāo)框BBox 并將差分圖像的行人區(qū)域設(shè)置為0 像素,從而消除算法因行人駐留而產(chǎn)生的誤判。
步驟3對差分圖像進行二值化,膨脹等形態(tài)學(xué)處理,從而得到遺留物體的掩膜,并通過輪廓檢測得到遺留物的輪廓。
步驟4由遺留物的輪廓獲得遺留物的形心坐標(biāo),通過形心坐標(biāo)值來判斷物體的遺留時間,如果形心坐標(biāo)在3s內(nèi)沒有發(fā)生變化則判定為遺留物,否則返回步驟1。
步驟5如果物體被判定為遺留物,則標(biāo)記出遺留物并保存圖像和時間段,以便尋找遺留物的遺留者。
為了安排學(xué)生的實驗教學(xué),搭建了如圖3 所示的基于Jetson Nano的嵌入式實驗平臺。
圖3 Jetson Nano嵌入式實驗平臺
學(xué)生按流程完成學(xué)習(xí)之后,需要在Jetson Nano 嵌入式實驗平臺上完成遺留物檢測算法的板級實驗驗證。首先要選定實驗環(huán)境,然后通過USB 攝像頭將讀取到的場景畫面?zhèn)魅脒z留物檢測算法中進行判別,最終如果能夠?qū)崿F(xiàn)如圖4所示預(yù)期的實驗效果則為實驗成功。
圖4 行人遺留物檢測
圍繞嵌入式系統(tǒng)設(shè)計課程開展實踐教學(xué),設(shè)計了如圖5 所示的基于Jetson Nano 的遺留物檢測實踐教學(xué)方案。由于本實驗涉及多學(xué)科交叉,內(nèi)容較多,所以采用分組合作的實驗方式,將每組分為5 或6 個人1組。實驗的內(nèi)容分為理論知識、嵌入式開發(fā)板、YOLOv5 神經(jīng)網(wǎng)絡(luò)、OpenCV 圖像處理、遺留物檢測算法5 個模塊,學(xué)生按照各個模塊的內(nèi)容進行系統(tǒng)性的學(xué)習(xí),最后根據(jù)預(yù)習(xí)報告和實驗報告評定成績。整個流程也可以分為預(yù)習(xí)階段、操作階段與總結(jié)階段。
圖5 實踐教學(xué)方案及流程
(1)預(yù)習(xí)階段。首先學(xué)生要先進行理論知識的學(xué)習(xí),通過檢索國內(nèi)外科技論文,在搜索引擎上查閱相關(guān)資料,包括深度學(xué)習(xí)基礎(chǔ)、YOLOv5 目標(biāo)檢測算法原理、圖像處理基礎(chǔ)知識、Jetson Nano嵌入式人工智能開發(fā)板基礎(chǔ)知識、遺留物檢測算法原理?;A(chǔ)理論知識的學(xué)習(xí)過程中,學(xué)生能夠?qū)λ鶎W(xué)專業(yè)課的知識進行回顧和鞏固,以便后續(xù)實驗的開展。各個學(xué)習(xí)小組需要根據(jù)任務(wù)要求分工合作并制定實驗計劃。
(2)操作階段。嵌入式開發(fā)板模塊中學(xué)生需要了解Jetson Nano人工智能開發(fā)板的硬件資源,學(xué)會下載NVIDIA開發(fā)者工具軟件映像,熟悉Linux 的基本操作,并配置部署YOLOv5 所需要的環(huán)境。在YOLOv5神經(jīng)網(wǎng)絡(luò)模塊中學(xué)生需要完成數(shù)據(jù)集樣本的制作,利用labelimg軟件對樣本進行標(biāo)注,利用YOLOv5s預(yù)訓(xùn)練模型來訓(xùn)練神經(jīng)網(wǎng)絡(luò),最后對網(wǎng)絡(luò)模型的性能進行驗證。OpenCV圖像處理模塊要求學(xué)生掌握Python 的cv2 程序庫,利用OpenCV的軟件庫對圖像進行讀取顯示以及腐蝕、開運算等形態(tài)學(xué)操作。在遺留物檢測算法模塊中,學(xué)生需要了解幀差法、雙背景建模法等經(jīng)典的遺留物檢測算法設(shè)計思想,并根據(jù)實驗要求進行算法程序的整體開發(fā)。學(xué)生按照各個模塊系統(tǒng)地學(xué)習(xí)后,合作完成遺留物檢測算法在Jetson Nano 嵌入式開發(fā)板上的實驗驗證,并對實驗的效果進行觀察和記錄。
(3)總結(jié)階段。每組根據(jù)分工情況撰寫實驗報告,每個人撰寫自己負(fù)責(zé)部分再進行總結(jié),最后再根據(jù)預(yù)習(xí)報告和實驗報告對各組成績進行評定。
以自動化專業(yè)的嵌入式系統(tǒng)設(shè)計課程建設(shè)為出發(fā)點,設(shè)計了基于Jetson Nano 的遺留物檢測實踐方案。理論與實踐相結(jié)合的教學(xué)方式,符合國家大力推廣新工科教育模式,培養(yǎng)了學(xué)生的動手實踐能力和團隊協(xié)作精神,可以讓學(xué)生對于課堂更有參與感,增強學(xué)生的課堂積極性。這種實踐教學(xué)方式涉及多學(xué)科交叉,能夠幫助電氣工程及其自動化專業(yè)的學(xué)生回顧并鞏固知識。采用基于Jetson Nano 嵌入式AI 開發(fā)板的教學(xué),能夠培養(yǎng)學(xué)生更好地適應(yīng)社會和企業(yè)的需求,對于學(xué)生的后續(xù)發(fā)展起到很大的幫助。