韓家明,楊忠,陳聰,張秋雁,張馳,賴尚祥,李宏宸,方千慧
1.南京航空航天大學(xué) 自動化學(xué)院,江蘇 南京 211106
2.貴州電網(wǎng)有限責(zé)任公司 電力科學(xué)研究院,貴州 貴陽 550002
隨著無人機技術(shù)的迅速發(fā)展及其在諸多領(lǐng)域中廣闊的應(yīng)用前景[1?4],基于視覺導(dǎo)航的無人機自主著陸技術(shù)也得到了廣泛的研究。其中,通過著陸標(biāo)識的引導(dǎo)實現(xiàn)無人機的著陸已取得了諸多成果并得到了工程應(yīng)用。文獻[5]中通過漸近式圖像搜索算法提取降落平臺各級圖案的輪廓信息,并利用航跡規(guī)劃方法完成無人機在移動平臺上的降落。文獻[6]中通過支持向量機(support vector machine,SVM)訓(xùn)練離線分類器,準(zhǔn)確識別著陸標(biāo)識,并利用改進的中值流跟蹤算法對著陸地標(biāo)進行目標(biāo)跟蹤。隨著卷積神經(jīng)網(wǎng)絡(luò)的迅速發(fā)展,基于深度學(xué)習(xí)的方法已逐漸融入到無人機視覺導(dǎo)航與自主著陸領(lǐng)域研究中。文獻[7]中通過橢圓輪廓檢測與卷積神經(jīng)網(wǎng)絡(luò),快速預(yù)測出正確的無人機著陸標(biāo)識邊界,并實現(xiàn)無人機的自主著陸。本文設(shè)計了基于深度學(xué)習(xí)的實時目標(biāo)檢測算法,并通過圖像分割算法獲取無人機著陸標(biāo)識輪廓信息,減少了環(huán)境因素干擾、降低了圖像處理的運算量,對于無人機著陸效率的提升有著十分重要的意義。
著陸標(biāo)識是基于視覺的無人機自動著陸的關(guān)鍵部分之一,著陸標(biāo)識的選取直接影響到無人機著陸的效率與成功率。著陸標(biāo)識的設(shè)計需考慮以下因素:
1)圖案簡單直觀,便于視覺系統(tǒng)快速處理;
2)具備足夠的特征,易于辨識,能和背景較好地區(qū)分開;
3)能夠提供足夠的無人機著陸所需的引導(dǎo)信息;
4)能夠間接提供位置信息,便于無人機的位姿估計。
本文中采用了一種六邊形著陸標(biāo)識,由一個六邊形、2 個直徑較大的圓、一個直徑較小的圓和一個等邊三角形組成。著陸標(biāo)識的主體顏色為紅色,識別程度較強,受光照影響較小。著陸標(biāo)識中有3 個直徑不同的同心圓,便于后續(xù)算法在無人機不同的飛行高度更好地檢測出著陸標(biāo)識中的圓和圓心,防止輪廓信息的遺失。此外,為便于后續(xù)輪廓分割,每個部分之間用白色進行隔斷[8],如圖1(a)所示。為了驗證本文中算法的魯棒性,采用一種H 型無人機著陸標(biāo)識[9],如圖1(b)所示。
圖1 本文中著陸標(biāo)識
本文選擇YOLO 系列算法[10]中的Tiny-YOLO網(wǎng)絡(luò)并進行優(yōu)化,Tiny-YOLO 擁有更少的卷積層、更快的檢測速度以及不錯的檢測精度,可以滿足無人機著陸時視覺導(dǎo)航的實時性要求。
Tiny-YOLO 主干網(wǎng)絡(luò)中有7 個3×3 卷積層,激活函數(shù)為Leaky ReLU,并通過批標(biāo)準(zhǔn)化(batch normalization,BN)層進行批歸一化處理;6 個最大池化層,前5 個為步長為2 的最大池化層,最后一個為步長為1 的最大池化層。網(wǎng)絡(luò)輸入尺寸為416×416 個像素,在經(jīng)過5 個步長為2 的最大池化層和1 個步長為1 的最大池化層后,最終得到的特征圖大小為13×13 像素。網(wǎng)絡(luò)結(jié)構(gòu)如圖2 所示。
圖2 Tiny-YOLO 結(jié)構(gòu)
圖2 中虛線框內(nèi)為Tiny-YOLO 的骨干網(wǎng)絡(luò),Conv 代表卷積層,maxpooling 代表最大池化層,Tiny-YOLO 通過在主干網(wǎng)絡(luò)后接上一定數(shù)量的卷積層和預(yù)測層構(gòu)成檢測模塊并對目標(biāo)進行預(yù)測,預(yù)測信息包括目標(biāo)的類別、置信度以及坐標(biāo)信息。
YOLO 算法中使用由維度聚類得到的先驗框,對邊界框進行預(yù)測。YOLO 中損失函數(shù)包括坐標(biāo)誤差CoodERR、IoU(intersection over union)誤差I(lǐng)oUErr 和分類誤差ClassErr 3 部分,為
本文引入GIoU[11](generalized intersection over union)損失代替YOLO 中的IoU 損失,保留了IoU 對尺度變化不敏感的優(yōu)點,同時考慮預(yù)測框與真實框之間的重疊區(qū)域和非重疊區(qū)域,更好地反映二者的重合度,提升網(wǎng)絡(luò)的精確度。在訓(xùn)練過程中,引入mixup 數(shù)據(jù)增強方法[12]構(gòu)造新的樣本數(shù)據(jù),通過數(shù)據(jù)增廣的方法進一步提升網(wǎng)絡(luò)的精確度。
3.1.1 自下而上的特征增強
本文在Tiny-YOLO 中嵌入PANet[13](path aggregation network)結(jié)構(gòu),融合了淺層的特征與高層次的語義特征對特征進行復(fù)用。PANet 中,骨干網(wǎng)絡(luò)產(chǎn)生特征圖通過卷積層減小尺寸;再與下采樣的特征圖通過側(cè)向連接進行相加操作;最后通過一個卷積層生成新的特征圖。其中,每個候選區(qū)域的特征網(wǎng)絡(luò)為新生成的特征圖上池化而生成。
通過網(wǎng)絡(luò)中具有較大的感受野和豐富的上下文信息的高層次特征與具有高定位精度的低層次特征融合,選擇有效信息并進行預(yù)測,對不同尺寸目標(biāo)檢測的魯棒性更好,進一步提升網(wǎng)絡(luò)模型的檢測精度。
為了充分利用骨干網(wǎng)絡(luò)中提取的淺層特征,本文中采用了特征塊(feature block)結(jié)構(gòu)對特征進一步提取,如圖3 所示。通過借鑒MatrixNet[14]的思想,設(shè)計了密集特征塊(dense feature block)結(jié)構(gòu),如圖4 所示。
圖3 特征塊結(jié)構(gòu)
圖4 密集特征塊結(jié)構(gòu)
通過將密集特征塊和特征塊輸出進行融合并進行自適應(yīng)池化,從骨干網(wǎng)絡(luò)中引出的第2、4、6、8、10 層卷積層作為PANet 的輸入。嵌入的PANet結(jié)構(gòu)如圖5 所示。
在Tiny-YOLO 中嵌入PANet 結(jié)構(gòu),可以彌補Tiny-YOLO 網(wǎng)絡(luò)骨干網(wǎng)絡(luò)較淺、特征提取不夠充分的問題。本文中構(gòu)造的著陸標(biāo)識檢測網(wǎng)絡(luò)Mark-YOLO 結(jié)構(gòu)如圖6 所示。
圖5 本文中PANet 結(jié)構(gòu)
圖6 Mark-YOLO 網(wǎng)絡(luò)結(jié)構(gòu)
3.1.2 網(wǎng)絡(luò)裁剪
在無人機等計算資源受限的平臺上部署深度學(xué)習(xí)網(wǎng)絡(luò)模型時,需要減少模型所需資源消耗。本文對卷積層的通道進行裁剪,獲取高效的目標(biāo)檢測模型。
網(wǎng)絡(luò)中每個卷積層后面都有一個BN 層,加速網(wǎng)絡(luò)收斂并提高網(wǎng)絡(luò)的泛化能力。BN 層使用小批量(mini-batch)處理靜態(tài)化卷積特征,BN 的計算方法為
在網(wǎng)絡(luò)模型按通道進行稀疏訓(xùn)練過程中,為將重要通道與不重要通道區(qū)分開,通過L1 正則化來進行通道稀疏性訓(xùn)練,獲得按通道的稀疏性;采用BN 層中的比例因子 γ作為通道重要性的指標(biāo),為每個通道分配一個比例因子,比例因子的絕對值與通道重要性成正比,裁剪過程中通過每個通道的比例因子決定裁剪與否。稀疏性訓(xùn)練后,引入全局閾值來確定是否裁剪特征通道,控制裁剪率。同時引入局部安全閾值,防止卷積層通道被過度裁剪,維持網(wǎng)絡(luò)結(jié)構(gòu)的完整性。如果特征通道的縮放比例小于全局閾值和本地安全閾值中的最小值,則對特征通道進行裁剪。
由于網(wǎng)絡(luò)檢測性能對通道裁剪較為敏感,因此,完成神經(jīng)網(wǎng)絡(luò)的通道裁剪后,需要對裁剪的模型執(zhí)行微調(diào)操作,使裁剪后的模型從暫時的性能下降中恢復(fù)。一般采用增量裁剪的策略,逐步對網(wǎng)絡(luò)進行裁剪,增量裁剪策略可以防止過度裁剪,避免過度裁剪可能導(dǎo)致的無法恢復(fù)的網(wǎng)絡(luò)性能的大幅下降,最后獲取最優(yōu)的網(wǎng)絡(luò)結(jié)構(gòu)與權(quán)重[15]。網(wǎng)絡(luò)裁剪的整體流程如圖7 所示。
圖7 網(wǎng)絡(luò)裁剪流程
3.2.1 灰度化與閾值分割
為減少無人機拍攝圖像處理的運算量,首先通過加權(quán)平均法對圖像進行灰度化處理。加權(quán)平均法使用不同的權(quán)值對R、G、B 3 個顏色分量進行加權(quán)平均,得到灰度圖像。加權(quán)平均法為
Gray(x,y)=0.299R(x,y)+0.578G(x,y)+0.114B(x,y)
式中:Gray(x,y)為得到的灰度圖像;R、G、B分別為3 個顏色通道的像素分布函數(shù)。
其次,通過閾值分割對灰度圖像進行處理。閾值分割使圖像中僅存在2 個灰度級,保留有用的前景目標(biāo)區(qū)域,去除無用的背景信息,同時經(jīng)過處理后的圖像數(shù)據(jù)量更少。本文使用Otsu 法[16]對圖像進行閾值分割,通過對圖像進行直方圖分析,得出差別最大的2 組像素集合,并依據(jù)此時的圖像中目標(biāo)和背景的類間方差確定閾值對圖像進行分割。
3.2.2 著陸標(biāo)識輪廓提取
著陸標(biāo)識輪廓提取分為邊緣檢測與輪廓擬合2 部分。
Canny 邊緣檢測算法[17]具有低錯誤率、定位精度良好、邊緣點響應(yīng)單一的優(yōu)點。利用Canny算法對圖像進行邊緣檢測可以分為4 個步驟:1)采用高斯濾波器對圖像進行平滑處理,濾除圖像的噪聲;2)采用Sobel 算法計算圖像中每個像素點的梯度強度和方向;3)采用NMS(non maximum suppression)算法,消除邊緣檢測帶來的雜散響應(yīng);4) 采用雙閾值檢測確定真實和潛在的邊緣,即一個高閾值和一個低閾值的雙閾值法來區(qū)分邊緣像素。
輪廓擬合中,本文采用Hough 變換對著陸標(biāo)識中的直線和圓進行檢測。Hough 變換檢測直線方法中,為避免直線斜率不存在時產(chǎn)生的參數(shù)問題,將用斜率k和截距b表示的直線方程式映射到參數(shù)空間中:
通過這種映射關(guān)系可以將每一條直線與一對參數(shù)(r,θ)相關(guān)聯(lián)。經(jīng)過Hough 變換后,平面直角坐標(biāo)系下直線的位置參數(shù)斜率k和截距b可由極坐標(biāo)系下一對參數(shù)(ri,θi)唯一確定。Hough 變換后,參數(shù)空間上中各正弦曲線都會交于同一點(rj,θj)。通過對參數(shù)空間中各正弦曲線經(jīng)過的每一點進行權(quán)值統(tǒng)計,并求取權(quán)值峰值點,即可確定平面直角坐標(biāo)系中的直線[18]。
Hough 變換圓檢測與直線檢測思想相似。平面坐標(biāo)系中的圓由圓心的橫、縱坐標(biāo)a、b,圓的半徑r3 個位置參數(shù)確定:
平面直角坐標(biāo)系中圓上任意一點(xi,yi)映射到參數(shù)空間中對應(yīng)一個通過ai、bi、ri這3 個參數(shù)確定的圓,圓心為ri。由于圓的半徑未知,坐標(biāo)(xi,yi)映射到參數(shù)坐標(biāo)系中為圓錐體。平面坐標(biāo)系中同一個圓上的點映射到三維參數(shù)坐標(biāo)系中的各圓錐體,會有共同的交點,交點的坐標(biāo)為圓的位置參數(shù)ai、bi、ri的值[19]。通過對參數(shù)空間中的圓錐體上各點進行權(quán)值統(tǒng)計,并求取權(quán)值峰值點,即可確定平面直角坐標(biāo)系中的圓。
本文在開源的深度學(xué)習(xí)框架Darknet 上搭建與訓(xùn)練Mark-YOLO 模型。訓(xùn)練中采用了圖像隨機調(diào)整曝光、飽和度、色調(diào)等方法對數(shù)據(jù)進行隨機擴充。此外,在訓(xùn)練時,每迭代10 次改變模型的輸入尺寸,使模型對于不同尺寸的圖像具有更好的檢測效果。為加快模型的收斂速度與檢測準(zhǔn)確率,本文中采用遷移學(xué)習(xí)的方式對模型進行訓(xùn)練,使用在ImageNet 上進行預(yù)訓(xùn)練的分類模型權(quán)重。
本文分別在PASCAL VOC 數(shù)據(jù)集以及無人機著陸標(biāo)識數(shù)據(jù)集上進行訓(xùn)練與驗證。其中無人機著陸標(biāo)識數(shù)據(jù)集由3 部分組成,分別為無人機在室內(nèi)場景、室外場景拍攝的圖像以及人工進行數(shù)據(jù)擴充得到的圖像。數(shù)據(jù)集中包括H 型地標(biāo)與六邊形地標(biāo)2 類,訓(xùn)練集共包含2 262 張圖片,測試集共包含618 張圖片。
本文參考文獻[20]中聚類方法進行邊界框聚類分析,考慮到Mark-YOLO 中在3 種尺度上進行跨尺度預(yù)測,選取了9 個候選框,分屬3 個檢測尺度。
分別在數(shù)據(jù)集上訓(xùn)練了YOLOv2-tiny、YOLOv3-tiny、YOLOv3-tiny-3l 與本文中提出的Mark-YOLO網(wǎng)絡(luò),并將訓(xùn)練完成的網(wǎng)絡(luò)權(quán)重在測試集上進行測試。統(tǒng)計4 種網(wǎng)絡(luò)在PASCAL VOC 數(shù)據(jù)集上的mAP(mean average precision)如表1 所示。
表1 PASCAL VOC 數(shù)據(jù)集測試結(jié)果 %
統(tǒng)計4 種網(wǎng)絡(luò)在無人機著陸地標(biāo)數(shù)據(jù)集上測試結(jié)果如表2 所示。
表2 無人機著陸標(biāo)識數(shù)據(jù)集測試結(jié)果 %
統(tǒng)計4 種網(wǎng)絡(luò)的BFLOPs(billion floating-point operations per second)和權(quán)重大小如表3所示。
表3 網(wǎng)絡(luò)的BFLOPs 和權(quán)重大小
由表1~3 中結(jié)果可得,在PASCAL VOC 數(shù)據(jù)集與無人機著陸標(biāo)識數(shù)據(jù)集上,本文中Mark-YOLO均取得了最高的mAP 值。通過自下而上的特征增強方法更加充分地利用了網(wǎng)絡(luò)的淺層特征,同時損失函數(shù)優(yōu)化以及訓(xùn)練過程中數(shù)據(jù)優(yōu)化方法的加入使得網(wǎng)絡(luò)模型的精度獲得了提升。
網(wǎng)絡(luò)裁剪過程中,首先在Darknet 框架中進行訓(xùn)練,選取最優(yōu)的網(wǎng)絡(luò)模型權(quán)重;再在pytorch 框架中進行100 個epoch 的稀疏訓(xùn)練,稀疏訓(xùn)練系數(shù)為0.000 1;稀疏訓(xùn)練完成后在pytorch 框架中進行模型的剪枝操作,選取總裁剪比例分別為0.5、0.6、0.7、0.75、0.8、0.85 對Mark-YOLO 網(wǎng)絡(luò)進行裁剪,剪枝完成后在Darknet 框架中進行網(wǎng)絡(luò)的微調(diào),補償裁剪過程中的精度損失,獲取最優(yōu)的網(wǎng)絡(luò)模型。裁剪后的網(wǎng)絡(luò)在無人機著陸地標(biāo)數(shù)據(jù)集上測試結(jié)果如表4 所示。
表4 網(wǎng)絡(luò)裁剪后測試結(jié)果 %
統(tǒng)計模型的BFLOPs 和權(quán)重大小如表5 所示。
表5 網(wǎng)絡(luò)裁剪后模型大小對比
由表4、5 中結(jié)果可知,裁剪后網(wǎng)絡(luò)模型的精度有少量的下降,但網(wǎng)絡(luò)的參數(shù)量大幅降低,權(quán)重也大幅減小。裁剪率超過0.75 后,網(wǎng)絡(luò)模型的權(quán)重大小下降已經(jīng)不再明顯,但網(wǎng)絡(luò)模型的mAP出現(xiàn)了較大的下降,說明裁剪率超過0.75 的網(wǎng)絡(luò)模型已不能很好地表征數(shù)據(jù),因此,本文中采用裁剪率為0.75 的模型作為裁剪結(jié)果。
裁剪后的模型BFLOPs 為0.933,相對于Mark-YOLO 網(wǎng)絡(luò)下降了89.0%;網(wǎng)絡(luò)模型權(quán)重大小為2.49 MB,相對于Mark-YOLO 網(wǎng)絡(luò)下降了94.6%。最終得到的網(wǎng)絡(luò)結(jié)構(gòu)如圖8 所示。原骨干網(wǎng)絡(luò)中的卷積層通道數(shù)量得到了有效的裁剪,減少了網(wǎng)絡(luò)的參數(shù)量和計算量,對于深度模型向無人機平臺的移植具有重要的意義。
圖8 裁剪后網(wǎng)絡(luò)結(jié)構(gòu)
本文中的無人機著陸標(biāo)識分割算法分為著陸標(biāo)識檢測階段與標(biāo)識分割階段。算法整體的流程如下:
1)將無人機拍攝的圖像輸入目標(biāo)檢測模型中,獲取著陸標(biāo)識的類別和預(yù)測框;
2)輸出著陸標(biāo)識預(yù)測框的坐標(biāo),將其設(shè)定為ROI(region of interest)區(qū)域;
3)在ROI 區(qū)域內(nèi)進行灰度化處理,并利用Ostu 算法對ROI 區(qū)域內(nèi)進行分割,去除背景干擾;
4)利用Canny 邊緣檢測算法與Hough 變換提取圖像的邊緣,確定著陸標(biāo)識中的直線與圓輪廓。
本文對無人機飛行情況下著陸標(biāo)識的分割效果進行驗證,在無人機不同飛行高度采集包含著陸標(biāo)識的圖像,飛行高度分別約為3、5、7、10 m,分別對應(yīng)近距離、中距離與遠(yuǎn)距離。其中,檢測出的直線輪廓用黃色標(biāo)出,檢測出的圓輪廓使用藍色標(biāo)出,圓心用黑色標(biāo)出。
由圖9~12 中的無人機著陸標(biāo)識分割結(jié)果可得,無人機飛行高度約為3 m 時,著陸標(biāo)識屬于較大目標(biāo);隨著無人機高度的變化,無人機著陸標(biāo)識在圖中的大小也發(fā)生變化,高度約為10 m 時,著陸標(biāo)識在圖中占據(jù)了很小的比例,屬于較難識別的小目標(biāo)。對于不同高度下的無人機著陸標(biāo)識,本文中提出的算法都可以很好地檢測到降落標(biāo)識,取得很好的分割結(jié)果,提取出降落標(biāo)識的圖案輪廓,有效地避免了環(huán)境因素帶來的干擾。
圖9 高度約為3 m 分割結(jié)果
圖10 高度約為5 m 分割結(jié)果
圖11 高度約為7 m 分割結(jié)果
圖12 高度約為10 m 分割結(jié)果
本文基于YOLO 目標(biāo)檢測算法,設(shè)計了無人機視覺導(dǎo)航著陸標(biāo)識的檢測與分割算法。
1)對目標(biāo)檢測算法進行了優(yōu)化,并針對無人機平臺硬件計算能力較弱的問題,對網(wǎng)絡(luò)模型進行通道裁剪,減少網(wǎng)絡(luò)模型的參數(shù)量,同時保證網(wǎng)絡(luò)較高的準(zhǔn)確率。
2)通過目標(biāo)檢測算法獲取包含著陸標(biāo)識的ROI 區(qū)域,并在ROI 區(qū)域內(nèi)進行灰度化處理、Ostu閾值分割、邊緣提取,利用Hough 變換檢測著陸標(biāo)識中的直線與圓,得到無人機著陸標(biāo)識的輪廓信息。
本文通過引入實時的目標(biāo)檢測算法,可以有效地避免復(fù)雜環(huán)境的干擾,減少后續(xù)圖像分割過程的計算量,對于搭載高分辨率圖像傳感器的無人機實現(xiàn)視覺導(dǎo)航著陸具有重要研究意義與工程實踐價值。