蔡明鵬 楊耿 周佳淳 李欽 賴紅
(深圳信息職業(yè)技術(shù)學(xué)院 廣東省深圳市 518000)
目前無人機(jī)硬件設(shè)備已經(jīng)成熟穩(wěn)定,有較多成熟硬件廠商,前10 無人機(jī)硬件品牌深圳占據(jù)4 家,粵港澳大灣區(qū)占據(jù)6 家。無人機(jī)已經(jīng)開始進(jìn)入到人們生活,并在各行各業(yè)的各個(gè)方面替代人工現(xiàn)場(chǎng)作業(yè)并起到重要作用,主要集中在生態(tài)環(huán)境監(jiān)測(cè)、農(nóng)業(yè)現(xiàn)代化/農(nóng)林植保、地理測(cè)繪、電力巡線、物流配送、影視拍攝等方面。2016 年11 月國務(wù)院印發(fā)《“十三五”國家戰(zhàn)略性新興產(chǎn)業(yè)發(fā)展規(guī)劃》:加快發(fā)展多用途無人機(jī)、新構(gòu)型飛機(jī)等戰(zhàn)略性航空裝備。2017 年7 月國務(wù)院《新一代人工智能發(fā)展規(guī)劃》中關(guān)鍵共性技術(shù)之一為自主無人系統(tǒng)的智能技術(shù),包括研究復(fù)雜環(huán)境下基于計(jì)算機(jī)視覺的定位、導(dǎo)航和識(shí)別。
民用無人機(jī)精準(zhǔn)降落主要依靠衛(wèi)星定位技術(shù),然而衛(wèi)星定位尤其是GPS 定位技術(shù)在中國精度不足、差分定位設(shè)備受差分站布設(shè)限制價(jià)格昂貴,并且GPS 芯片與定位技術(shù)受美國GPS 技術(shù)限制,不利于我國民用無人機(jī)精準(zhǔn)降落廣泛推廣應(yīng)用。針對(duì)該問題,可采用目前最先進(jìn)的視覺深度學(xué)習(xí)技術(shù),使得無人機(jī)在降落過程中實(shí)現(xiàn)由粗到精的定位,創(chuàng)新性地實(shí)現(xiàn)民用無人機(jī)停機(jī)坪精準(zhǔn)識(shí)別與精準(zhǔn)降落功能,并能在低成本的機(jī)載小型邊緣計(jì)算模塊中運(yùn)行和實(shí)現(xiàn)。視覺識(shí)別技術(shù)已從傳統(tǒng)的濾波器圖像處理方法走向了深度學(xué)習(xí)方法,目前該領(lǐng)域領(lǐng)先的深度學(xué)習(xí)目標(biāo)檢測(cè)主要包括SSD、Faster R-CNN與YOLO技術(shù)。本文簡(jiǎn)要分析深度學(xué)習(xí)目標(biāo)檢測(cè)三種技術(shù)的優(yōu)缺點(diǎn),并選擇性能較優(yōu)的YOLO V3 技術(shù),逐步完成數(shù)據(jù)采集、數(shù)據(jù)標(biāo)注、數(shù)據(jù)訓(xùn)練、數(shù)據(jù)驗(yàn)證任務(wù),最終實(shí)現(xiàn)無人機(jī)視角停機(jī)坪的精準(zhǔn)識(shí)別。
YOLO V3 是一種單階段結(jié)構(gòu)的目標(biāo)檢測(cè)模型,YOLO V3 的網(wǎng)絡(luò)結(jié)構(gòu)中有3 個(gè)不同大小的特征圖,從上到下分別對(duì)應(yīng)深層、中層與淺層的特征。深層的特征尺寸小,感受越大,更有利于檢測(cè)大尺度物體,而淺層的特征圖則與之相反,更便于檢測(cè)小尺度物體。與之前的YOLO 版本相比,YOLO V3 通過調(diào)整特征提取網(wǎng)絡(luò)、利用多尺度特征進(jìn)行對(duì)象分析,提升了mAP 及小物體檢測(cè)效果。SSD 是一種使用單個(gè)深度神經(jīng)網(wǎng)絡(luò)來檢測(cè)圖像中目標(biāo)的方法,將邊界框的輸出空間離散化為一組默認(rèn)框,每個(gè)特征地圖位置具有不同的縱橫比和比例。比以前最先進(jìn)的單次激發(fā)檢測(cè)器(YOLO)更精確。Faster R-CNN 由兩個(gè)模塊組成,第一個(gè)模塊是深度卷積網(wǎng)絡(luò)用于生成提議區(qū)域,第二個(gè)模塊是Fast R-CNN 檢測(cè)器。整個(gè)系統(tǒng)是一個(gè)單個(gè)統(tǒng)一的目標(biāo)檢測(cè)網(wǎng)絡(luò);由于RPN 的存在,使得Faster R-CNN 精確度高于YOLO 與SSD,但速度慢于前兩者。
mAP 是衡量深度學(xué)習(xí)模型對(duì)多個(gè)類目標(biāo)檢測(cè)的好壞平均值指標(biāo)。由于YOLO V3 在同等的mAP 上比Faster R-CNN和SSD 的檢測(cè)速度要快很多,而無人機(jī)降落的過程需要實(shí)時(shí)檢測(cè)定位,所以YOLOV3 在檢測(cè)精度上雖然比其他兩者有所不足,但也不至于相差太多,綜合精度和速度,最后本項(xiàng)目采用了YOLO V3 作為停機(jī)坪目標(biāo)檢測(cè)識(shí)別的模型。
如圖1 所示,Yolo v3 模型識(shí)別過程包括數(shù)據(jù)采集、數(shù)據(jù)標(biāo)注、數(shù)據(jù)訓(xùn)練與精度評(píng)估四個(gè)過程。其中所采集的數(shù)據(jù)包括訓(xùn)練集與驗(yàn)證集;數(shù)據(jù)標(biāo)注包括tarmac 與h 兩個(gè)類別的標(biāo)注,trarmac 是整個(gè)停機(jī)坪,h 是停機(jī)坪中心的h 字符;數(shù)據(jù)訓(xùn)練過程綜合考慮了學(xué)習(xí)率、梯度下降與損失情況;精度評(píng)估綜合考慮了mAP 與圖片識(shí)別實(shí)際效果。具體將在下文介紹。
圖1: Yolo v3 模型識(shí)別實(shí)現(xiàn)過程
2.2.1 數(shù)據(jù)采集
數(shù)據(jù)采集過程中,設(shè)計(jì)了日夜不同場(chǎng)景、不同時(shí)段、不同高度的無人機(jī)視角停機(jī)坪照片采集計(jì)劃,并對(duì)所采集的數(shù)據(jù)進(jìn)行技術(shù)性擴(kuò)增,擴(kuò)增方法包括圖像旋轉(zhuǎn)、顏色變換、加噪、截取等方法,以增強(qiáng)數(shù)據(jù)集的魯棒性。將所采集的數(shù)據(jù)集分成測(cè)試集與驗(yàn)證集,測(cè)試數(shù)據(jù)集共有3535 張圖片,驗(yàn)證數(shù)據(jù)集有883 張圖片。
2.2.2 數(shù)據(jù)標(biāo)注
數(shù)據(jù)采集完成后,使用LabelImg開源軟件來對(duì)圖片內(nèi)目標(biāo)進(jìn)行標(biāo)注處理。數(shù)據(jù)標(biāo)注共標(biāo)識(shí)兩個(gè)類別,一個(gè)是tarmac(停機(jī)坪最外圍的圓圈),另一個(gè)是h(停機(jī)坪上的H 標(biāo)識(shí))。標(biāo)識(shí)為tarmac 與h 的目的是增強(qiáng)停機(jī)坪識(shí)別的魯棒性,在不同情況下(如遮擋)能夠更好地將停機(jī)坪識(shí)別出來。當(dāng)同時(shí)識(shí)別到tarmac 與h,可以取兩者中心平均值作為可靠中心;當(dāng)只識(shí)別到其中一個(gè)時(shí),相互成為備份;無人機(jī)在飛行過程中,在時(shí)間序列上可以多次進(jìn)行識(shí)別,可以在時(shí)間序列上對(duì)識(shí)別結(jié)果進(jìn)行反復(fù)多次判斷以獲得綜合性結(jié)果。
2.2.3 數(shù)據(jù)訓(xùn)練
百度飛槳是中國首個(gè)自主研發(fā)、功能完備、開源開放的產(chǎn)業(yè)級(jí)深度學(xué)習(xí)平臺(tái)。為支持國產(chǎn)信創(chuàng)事業(yè),本文采用百度飛槳框架實(shí)現(xiàn)YOLO V3,并采用了Darknet-53 的網(wǎng)絡(luò)結(jié)構(gòu)。為減少過擬合或者欠擬合情況,本文設(shè)置學(xué)習(xí)率初始值為0.001,采用分段常數(shù)衰減學(xué)習(xí)率策略PiecewiseDecay 以及學(xué)習(xí)率優(yōu)化策略-線性學(xué)習(xí)率熱身LinearWarmup 對(duì)學(xué)習(xí)率進(jìn)行初步調(diào)整。同時(shí)采用Momentum 動(dòng)量?jī)?yōu)化法對(duì)訓(xùn)練過程中梯度下降方向進(jìn)行優(yōu)化,以加快收斂并且減少動(dòng)蕩。PiecewiseDecay 是階梯式下降學(xué)習(xí)率,可以使得每N 次迭代學(xué)習(xí)率下降到原來的1/K,其中N 和K 可以自行設(shè)定。LinearWarmup 可以在正常調(diào)整學(xué)習(xí)率之前,先按設(shè)計(jì)的公式逐步增大學(xué)習(xí)率,當(dāng)達(dá)到熱身步數(shù)值時(shí),恢復(fù)成原設(shè)定的學(xué)習(xí)率。
如圖2 所示,橫軸是訓(xùn)練輪數(shù),縱軸是訓(xùn)練損失loss,損失越小說明訓(xùn)練效果越好,當(dāng)損失穩(wěn)定在一定的小范圍內(nèi)后,說明訓(xùn)練基本收斂。在經(jīng)過2000 次訓(xùn)練輪數(shù)后,該模型的損失基本在10 左右小范圍變化。在本次實(shí)驗(yàn)中,2000次訓(xùn)練即可收斂獲得較好結(jié)果,原因在于無人機(jī)視角下所拍攝的停機(jī)坪圖案清晰、穩(wěn)定,數(shù)據(jù)樣本較好;同時(shí)所選擇的模型、訓(xùn)練參數(shù)設(shè)置符合樣本數(shù)據(jù)集特點(diǎn)。
圖2: 模型訓(xùn)練損失與訓(xùn)練輪數(shù)關(guān)系圖
2.2.4 精度評(píng)估
可采用mAP 衡量訓(xùn)練好的模型精度,mAP 的計(jì)算方法如公式(1)至(4)所示,其中TP 是檢測(cè)框交并比>0.5的檢測(cè)框數(shù)量,F(xiàn)P 是檢測(cè)框交并比<=0.5 的檢測(cè)框數(shù)量,Precision 是查準(zhǔn)率,Recall 是查全率,AP 是某一類別的識(shí)別結(jié)果精度評(píng)估(即Precision-Recall 曲線下面積),則mAP 是所有類別識(shí)別結(jié)果精度評(píng)估。
其中r1,r2,…,ri 是按升序排列的Precison 插值段的第一個(gè)插值點(diǎn)所對(duì)應(yīng)的Recall 的值。如圖3 所示,橫軸為某一輪訓(xùn)練的迭代次數(shù),可見在該輪訓(xùn)練中,隨著迭代次數(shù)的增加,驗(yàn)證集的mAP 在不斷提升至97%左右。無人機(jī)在飛行過程中可以采用同一位置多個(gè)時(shí)間點(diǎn)的結(jié)果進(jìn)行綜合決策判斷,因此當(dāng)前mAP 為97%可以在實(shí)際應(yīng)用中使用并能保證綜合決策準(zhǔn)確。
圖3: 一輪訓(xùn)練下mAP 與迭代次數(shù)的變化關(guān)系
訓(xùn)練結(jié)束后,通過調(diào)用執(zhí)行代碼可以執(zhí)行推理代碼進(jìn)行真實(shí)圖像的識(shí)別,如圖4 所示,無人機(jī)視角下的停機(jī)坪(綠色方框)與停機(jī)坪中的H(紅色方框)可以很好的標(biāo)記和識(shí)別出來。
圖4: 無人機(jī)視角下的停機(jī)坪識(shí)別結(jié)果
無人機(jī)的控制軟件一般加載在arm 或者Android 設(shè)備中,最常見的是Android 設(shè)備。該類設(shè)備由于自身計(jì)算與存儲(chǔ)資源限制原因,需要小型化、輕量級(jí)的AI 算法,否則無法有效運(yùn)行。因此需要對(duì)原始模型進(jìn)行輕量級(jí)轉(zhuǎn)化,并將轉(zhuǎn)化好的模型封裝成為Android 設(shè)備可調(diào)用的SDK。百度飛槳模型轉(zhuǎn)換工具Paddle Lite是一個(gè)高性能、輕量級(jí)、靈活性強(qiáng)且易于擴(kuò)展的深度學(xué)習(xí)推理框架,定位于支持包括移動(dòng)端、嵌入式以及服務(wù)器端在內(nèi)的多硬件平臺(tái)。
使用百度飛槳模型轉(zhuǎn)換工具Paddle Lite 可將訓(xùn)練好的模型轉(zhuǎn)換為適用于Android CPU 架構(gòu)的模型文件;使用C++代碼調(diào)用模型文件對(duì)待處理圖像進(jìn)行預(yù)測(cè)并輸出結(jié)果;使用Java 代碼通過NDK 調(diào)用封裝好的C++代碼并接收結(jié)果,將此項(xiàng)目打包為aar 格式的可供調(diào)用的安卓SDK。無人機(jī)安卓控制終端(普通安卓平板)在獲取無人機(jī)視角的圖像后,可調(diào)用該SDK 將圖像傳入即可獲得停機(jī)坪識(shí)別結(jié)果。經(jīng)在普通安卓平臺(tái)上進(jìn)行測(cè)試,處理一張無人機(jī)視角圖片獲取停機(jī)坪識(shí)別結(jié)果的耗時(shí)在200ms-600ms 之間,處理耗時(shí)接近于實(shí)時(shí),完全滿足實(shí)際應(yīng)用場(chǎng)景要求。
本文通過對(duì)無人機(jī)進(jìn)行一系列操作來對(duì)停機(jī)坪進(jìn)行實(shí)際拍攝,并在不同的時(shí)間段、地點(diǎn)和距離等對(duì)停機(jī)坪進(jìn)行拍攝采集數(shù)據(jù),形成兩個(gè)類別的訓(xùn)練集和測(cè)試集。在訓(xùn)練之前,對(duì)圖片進(jìn)行預(yù)處理,使用LabelImg 來對(duì)圖片進(jìn)行標(biāo)注處理。建立YOLO V3 模型,將數(shù)據(jù)傳入模型中進(jìn)行訓(xùn)練。當(dāng)訓(xùn)練的損失與精度達(dá)到要求時(shí),調(diào)用執(zhí)行推理代碼可獲得無人機(jī)視角下圖像中停機(jī)坪與停機(jī)坪H 字符的識(shí)別方框結(jié)果。最后通過輕量級(jí)封裝即可供無人機(jī)安卓控制終端直接調(diào)用和使用,實(shí)現(xiàn)停機(jī)坪精準(zhǔn)識(shí)別。
本文識(shí)別停機(jī)坪的目的在于為無人機(jī)提供精準(zhǔn)降落的地面信息。所識(shí)別的停機(jī)坪圖案是國內(nèi)外通用的停機(jī)坪圖案,可以適用于絕大多數(shù)場(chǎng)景,無需額外繪制二維碼、繪制其他圖案。結(jié)合無人機(jī)攝像頭視場(chǎng)角、無人機(jī)自身傳感獲取的飛行高度,可以建立以無人機(jī)為中心的三維坐標(biāo)系,通過幾何關(guān)系計(jì)算出無人機(jī)與停機(jī)坪的相對(duì)位置關(guān)系;當(dāng)無人機(jī)中心與停機(jī)坪中心位置關(guān)系滿足降落條件時(shí),可以進(jìn)行垂直降落,否則根據(jù)位置關(guān)系進(jìn)行自動(dòng)控制移動(dòng)直至滿足條件為止。由于夜間無人機(jī)自身照射系統(tǒng)能夠?yàn)槠湟暯窍路侥繕?biāo)進(jìn)行清晰補(bǔ)光,因此本文所實(shí)現(xiàn)的停機(jī)坪識(shí)別算法功能能很好地適應(yīng)不同光線下的應(yīng)用場(chǎng)景。除此之外,輕量級(jí)算法處理耗時(shí)接近實(shí)時(shí),可根據(jù)實(shí)際應(yīng)用需求進(jìn)行抽樣或者連續(xù)識(shí)別。綜上所述,本文所實(shí)現(xiàn)內(nèi)容為無人機(jī)精準(zhǔn)降落打下堅(jiān)實(shí)的技術(shù)基礎(chǔ)。