韓家明,楊忠,陳聰,張秋雁,張馳,賴尚祥,李宏宸,方千慧
1.南京航空航天大學 自動化學院,江蘇 南京 211106
2.貴州電網有限責任公司 電力科學研究院,貴州 貴陽 550002
隨著無人機技術的迅速發展及其在諸多領域中廣闊的應用前景[1?4],基于視覺導航的無人機自主著陸技術也得到了廣泛的研究。其中,通過著陸標識的引導實現無人機的著陸已取得了諸多成果并得到了工程應用。文獻[5]中通過漸近式圖像搜索算法提取降落平臺各級圖案的輪廓信息,并利用航跡規劃方法完成無人機在移動平臺上的降落。文獻[6]中通過支持向量機(support vector machine,SVM)訓練離線分類器,準確識別著陸標識,并利用改進的中值流跟蹤算法對著陸地標進行目標跟蹤。隨著卷積神經網絡的迅速發展,基于深度學習的方法已逐漸融入到無人機視覺導航與自主著陸領域研究中。文獻[7]中通過橢圓輪廓檢測與卷積神經網絡,快速預測出正確的無人機著陸標識邊界,并實現無人機的自主著陸。本文設計了基于深度學習的實時目標檢測算法,并通過圖像分割算法獲取無人機著陸標識輪廓信息,減少了環境因素干擾、降低了圖像處理的運算量,對于無人機著陸效率的提升有著十分重要的意義。
著陸標識是基于視覺的無人機自動著陸的關鍵部分之一,著陸標識的選取直接影響到無人機著陸的效率與成功率。著陸標識的設計需考慮以下因素:
1)圖案簡單直觀,便于視覺系統快速處理;
2)具備足夠的特征,易于辨識,能和背景較好地區分開;
3)能夠提供足夠的無人機著陸所需的引導信息;
4)能夠間接提供位置信息,便于無人機的位姿估計。
本文中采用了一種六邊形著陸標識,由一個六邊形、2 個直徑較大的圓、一個直徑較小的圓和一個等邊三角形組成。著陸標識的主體顏色為紅色,識別程度較強,受光照影響較小。著陸標識中有3 個直徑不同的同心圓,便于后續算法在無人機不同的飛行高度更好地檢測出著陸標識中的圓和圓心,防止輪廓信息的遺失。此外,為便于后續輪廓分割,每個部分之間用白色進行隔斷[8],如圖1(a)所示。為了驗證本文中算法的魯棒性,采用一種H 型無人機著陸標識[9],如圖1(b)所示。

圖1 本文中著陸標識
本文選擇YOLO 系列算法[10]中的Tiny-YOLO網絡并進行優化,Tiny-YOLO 擁有更少的卷積層、更快的檢測速度以及不錯的檢測精度,可以滿足無人機著陸時視覺導航的實時性要求。
Tiny-YOLO 主干網絡中有7 個3×3 卷積層,激活函數為Leaky ReLU,并通過批標準化(batch normalization,BN)層進行批歸一化處理;6 個最大池化層,前5 個為步長為2 的最大池化層,最后一個為步長為1 的最大池化層。網絡輸入尺寸為416×416 個像素,在經過5 個步長為2 的最大池化層和1 個步長為1 的最大池化層后,最終得到的特征圖大小為13×13 像素。網絡結構如圖2 所示。

圖2 Tiny-YOLO 結構
圖2 中虛線框內為Tiny-YOLO 的骨干網絡,Conv 代表卷積層,maxpooling 代表最大池化層,Tiny-YOLO 通過在主干網絡后接上一定數量的卷積層和預測層構成檢測模塊并對目標進行預測,預測信息包括目標的類別、置信度以及坐標信息。
YOLO 算法中使用由維度聚類得到的先驗框,對邊界框進行預測。YOLO 中損失函數包括坐標誤差CoodERR、IoU(intersection over union)誤差IoUErr 和分類誤差ClassErr 3 部分,為

本文引入GIoU[11](generalized intersection over union)損失代替YOLO 中的IoU 損失,保留了IoU 對尺度變化不敏感的優點,同時考慮預測框與真實框之間的重疊區域和非重疊區域,更好地反映二者的重合度,提升網絡的精確度。在訓練過程中,引入mixup 數據增強方法[12]構造新的樣本數據,通過數據增廣的方法進一步提升網絡的精確度。
3.1.1 自下而上的特征增強
本文在Tiny-YOLO 中嵌入PANet[13](path aggregation network)結構,融合了淺層的特征與高層次的語義特征對特征進行復用。PANet 中,骨干網絡產生特征圖通過卷積層減小尺寸;再與下采樣的特征圖通過側向連接進行相加操作;最后通過一個卷積層生成新的特征圖。其中,每個候選區域的特征網絡為新生成的特征圖上池化而生成。
通過網絡中具有較大的感受野和豐富的上下文信息的高層次特征與具有高定位精度的低層次特征融合,選擇有效信息并進行預測,對不同尺寸目標檢測的魯棒性更好,進一步提升網絡模型的檢測精度。
為了充分利用骨干網絡中提取的淺層特征,本文中采用了特征塊(feature block)結構對特征進一步提取,如圖3 所示。通過借鑒MatrixNet[14]的思想,設計了密集特征塊(dense feature block)結構,如圖4 所示。

圖3 特征塊結構

圖4 密集特征塊結構
通過將密集特征塊和特征塊輸出進行融合并進行自適應池化,從骨干網絡中引出的第2、4、6、8、10 層卷積層作為PANet 的輸入。嵌入的PANet結構如圖5 所示。
在Tiny-YOLO 中嵌入PANet 結構,可以彌補Tiny-YOLO 網絡骨干網絡較淺、特征提取不夠充分的問題。本文中構造的著陸標識檢測網絡Mark-YOLO 結構如圖6 所示。

圖5 本文中PANet 結構

圖6 Mark-YOLO 網絡結構
3.1.2 網絡裁剪
在無人機等計算資源受限的平臺上部署深度學習網絡模型時,需要減少模型所需資源消耗。本文對卷積層的通道進行裁剪,獲取高效的目標檢測模型。
網絡中每個卷積層后面都有一個BN 層,加速網絡收斂并提高網絡的泛化能力。BN 層使用小批量(mini-batch)處理靜態化卷積特征,BN 的計算方法為

在網絡模型按通道進行稀疏訓練過程中,為將重要通道與不重要通道區分開,通過L1 正則化來進行通道稀疏性訓練,獲得按通道的稀疏性;采用BN 層中的比例因子 γ作為通道重要性的指標,為每個通道分配一個比例因子,比例因子的絕對值與通道重要性成正比,裁剪過程中通過每個通道的比例因子決定裁剪與否。稀疏性訓練后,引入全局閾值來確定是否裁剪特征通道,控制裁剪率。同時引入局部安全閾值,防止卷積層通道被過度裁剪,維持網絡結構的完整性。如果特征通道的縮放比例小于全局閾值和本地安全閾值中的最小值,則對特征通道進行裁剪。
由于網絡檢測性能對通道裁剪較為敏感,因此,完成神經網絡的通道裁剪后,需要對裁剪的模型執行微調操作,使裁剪后的模型從暫時的性能下降中恢復。一般采用增量裁剪的策略,逐步對網絡進行裁剪,增量裁剪策略可以防止過度裁剪,避免過度裁剪可能導致的無法恢復的網絡性能的大幅下降,最后獲取最優的網絡結構與權重[15]。網絡裁剪的整體流程如圖7 所示。

圖7 網絡裁剪流程
3.2.1 灰度化與閾值分割
為減少無人機拍攝圖像處理的運算量,首先通過加權平均法對圖像進行灰度化處理。加權平均法使用不同的權值對R、G、B 3 個顏色分量進行加權平均,得到灰度圖像。加權平均法為
Gray(x,y)=0.299R(x,y)+0.578G(x,y)+0.114B(x,y)
式中:Gray(x,y)為得到的灰度圖像;R、G、B分別為3 個顏色通道的像素分布函數。
其次,通過閾值分割對灰度圖像進行處理。閾值分割使圖像中僅存在2 個灰度級,保留有用的前景目標區域,去除無用的背景信息,同時經過處理后的圖像數據量更少。本文使用Otsu 法[16]對圖像進行閾值分割,通過對圖像進行直方圖分析,得出差別最大的2 組像素集合,并依據此時的圖像中目標和背景的類間方差確定閾值對圖像進行分割。
3.2.2 著陸標識輪廓提取
著陸標識輪廓提取分為邊緣檢測與輪廓擬合2 部分。
Canny 邊緣檢測算法[17]具有低錯誤率、定位精度良好、邊緣點響應單一的優點。利用Canny算法對圖像進行邊緣檢測可以分為4 個步驟:1)采用高斯濾波器對圖像進行平滑處理,濾除圖像的噪聲;2)采用Sobel 算法計算圖像中每個像素點的梯度強度和方向;3)采用NMS(non maximum suppression)算法,消除邊緣檢測帶來的雜散響應;4) 采用雙閾值檢測確定真實和潛在的邊緣,即一個高閾值和一個低閾值的雙閾值法來區分邊緣像素。
輪廓擬合中,本文采用Hough 變換對著陸標識中的直線和圓進行檢測。Hough 變換檢測直線方法中,為避免直線斜率不存在時產生的參數問題,將用斜率k和截距b表示的直線方程式映射到參數空間中:

通過這種映射關系可以將每一條直線與一對參數(r,θ)相關聯。經過Hough 變換后,平面直角坐標系下直線的位置參數斜率k和截距b可由極坐標系下一對參數(ri,θi)唯一確定。Hough 變換后,參數空間上中各正弦曲線都會交于同一點(rj,θj)。通過對參數空間中各正弦曲線經過的每一點進行權值統計,并求取權值峰值點,即可確定平面直角坐標系中的直線[18]。
Hough 變換圓檢測與直線檢測思想相似。平面坐標系中的圓由圓心的橫、縱坐標a、b,圓的半徑r3 個位置參數確定:

平面直角坐標系中圓上任意一點(xi,yi)映射到參數空間中對應一個通過ai、bi、ri這3 個參數確定的圓,圓心為ri。由于圓的半徑未知,坐標(xi,yi)映射到參數坐標系中為圓錐體。平面坐標系中同一個圓上的點映射到三維參數坐標系中的各圓錐體,會有共同的交點,交點的坐標為圓的位置參數ai、bi、ri的值[19]。通過對參數空間中的圓錐體上各點進行權值統計,并求取權值峰值點,即可確定平面直角坐標系中的圓。
本文在開源的深度學習框架Darknet 上搭建與訓練Mark-YOLO 模型。訓練中采用了圖像隨機調整曝光、飽和度、色調等方法對數據進行隨機擴充。此外,在訓練時,每迭代10 次改變模型的輸入尺寸,使模型對于不同尺寸的圖像具有更好的檢測效果。為加快模型的收斂速度與檢測準確率,本文中采用遷移學習的方式對模型進行訓練,使用在ImageNet 上進行預訓練的分類模型權重。
本文分別在PASCAL VOC 數據集以及無人機著陸標識數據集上進行訓練與驗證。其中無人機著陸標識數據集由3 部分組成,分別為無人機在室內場景、室外場景拍攝的圖像以及人工進行數據擴充得到的圖像。數據集中包括H 型地標與六邊形地標2 類,訓練集共包含2 262 張圖片,測試集共包含618 張圖片。
本文參考文獻[20]中聚類方法進行邊界框聚類分析,考慮到Mark-YOLO 中在3 種尺度上進行跨尺度預測,選取了9 個候選框,分屬3 個檢測尺度。
分別在數據集上訓練了YOLOv2-tiny、YOLOv3-tiny、YOLOv3-tiny-3l 與本文中提出的Mark-YOLO網絡,并將訓練完成的網絡權重在測試集上進行測試。統計4 種網絡在PASCAL VOC 數據集上的mAP(mean average precision)如表1 所示。

表1 PASCAL VOC 數據集測試結果 %
統計4 種網絡在無人機著陸地標數據集上測試結果如表2 所示。

表2 無人機著陸標識數據集測試結果 %
統計4 種網絡的BFLOPs(billion floating-point operations per second)和權重大小如表3所示。

表3 網絡的BFLOPs 和權重大小
由表1~3 中結果可得,在PASCAL VOC 數據集與無人機著陸標識數據集上,本文中Mark-YOLO均取得了最高的mAP 值。通過自下而上的特征增強方法更加充分地利用了網絡的淺層特征,同時損失函數優化以及訓練過程中數據優化方法的加入使得網絡模型的精度獲得了提升。
網絡裁剪過程中,首先在Darknet 框架中進行訓練,選取最優的網絡模型權重;再在pytorch 框架中進行100 個epoch 的稀疏訓練,稀疏訓練系數為0.000 1;稀疏訓練完成后在pytorch 框架中進行模型的剪枝操作,選取總裁剪比例分別為0.5、0.6、0.7、0.75、0.8、0.85 對Mark-YOLO 網絡進行裁剪,剪枝完成后在Darknet 框架中進行網絡的微調,補償裁剪過程中的精度損失,獲取最優的網絡模型。裁剪后的網絡在無人機著陸地標數據集上測試結果如表4 所示。

表4 網絡裁剪后測試結果 %
統計模型的BFLOPs 和權重大小如表5 所示。

表5 網絡裁剪后模型大小對比
由表4、5 中結果可知,裁剪后網絡模型的精度有少量的下降,但網絡的參數量大幅降低,權重也大幅減小。裁剪率超過0.75 后,網絡模型的權重大小下降已經不再明顯,但網絡模型的mAP出現了較大的下降,說明裁剪率超過0.75 的網絡模型已不能很好地表征數據,因此,本文中采用裁剪率為0.75 的模型作為裁剪結果。
裁剪后的模型BFLOPs 為0.933,相對于Mark-YOLO 網絡下降了89.0%;網絡模型權重大小為2.49 MB,相對于Mark-YOLO 網絡下降了94.6%。最終得到的網絡結構如圖8 所示。原骨干網絡中的卷積層通道數量得到了有效的裁剪,減少了網絡的參數量和計算量,對于深度模型向無人機平臺的移植具有重要的意義。

圖8 裁剪后網絡結構
本文中的無人機著陸標識分割算法分為著陸標識檢測階段與標識分割階段。算法整體的流程如下:
1)將無人機拍攝的圖像輸入目標檢測模型中,獲取著陸標識的類別和預測框;
2)輸出著陸標識預測框的坐標,將其設定為ROI(region of interest)區域;
3)在ROI 區域內進行灰度化處理,并利用Ostu 算法對ROI 區域內進行分割,去除背景干擾;
4)利用Canny 邊緣檢測算法與Hough 變換提取圖像的邊緣,確定著陸標識中的直線與圓輪廓。
本文對無人機飛行情況下著陸標識的分割效果進行驗證,在無人機不同飛行高度采集包含著陸標識的圖像,飛行高度分別約為3、5、7、10 m,分別對應近距離、中距離與遠距離。其中,檢測出的直線輪廓用黃色標出,檢測出的圓輪廓使用藍色標出,圓心用黑色標出。
由圖9~12 中的無人機著陸標識分割結果可得,無人機飛行高度約為3 m 時,著陸標識屬于較大目標;隨著無人機高度的變化,無人機著陸標識在圖中的大小也發生變化,高度約為10 m 時,著陸標識在圖中占據了很小的比例,屬于較難識別的小目標。對于不同高度下的無人機著陸標識,本文中提出的算法都可以很好地檢測到降落標識,取得很好的分割結果,提取出降落標識的圖案輪廓,有效地避免了環境因素帶來的干擾。

圖9 高度約為3 m 分割結果

圖10 高度約為5 m 分割結果

圖11 高度約為7 m 分割結果

圖12 高度約為10 m 分割結果
本文基于YOLO 目標檢測算法,設計了無人機視覺導航著陸標識的檢測與分割算法。
1)對目標檢測算法進行了優化,并針對無人機平臺硬件計算能力較弱的問題,對網絡模型進行通道裁剪,減少網絡模型的參數量,同時保證網絡較高的準確率。
2)通過目標檢測算法獲取包含著陸標識的ROI 區域,并在ROI 區域內進行灰度化處理、Ostu閾值分割、邊緣提取,利用Hough 變換檢測著陸標識中的直線與圓,得到無人機著陸標識的輪廓信息。
本文通過引入實時的目標檢測算法,可以有效地避免復雜環境的干擾,減少后續圖像分割過程的計算量,對于搭載高分辨率圖像傳感器的無人機實現視覺導航著陸具有重要研究意義與工程實踐價值。