杜祥宇
(1. 北京市測繪設計研究院, 北京100038; 2. 城市空間信息工程北京市重點實驗室, 北京 100038;)
無人機平臺相對于光學遙感衛星而言更具有高時效性、低成本等優勢,因而在區域測量,電力巡檢,城市規劃,以及應急測繪等應用場景下選擇利用無人機采集區域內的影像并進行目標檢測與提取是更高效的解決方案?;跓o人機影像進行目標的檢測與識別一直以來都是熱點研究內容。早在2015年,張辰等[1]就提出了以無人機視頻為基礎,在目標感興趣區域(Reign of Interest,ROI)內使用Shi-Tomasi算法進行角點提取,然后通過金字塔Lucas-Kanade進行目標檢測跟蹤的方法,結果表明其結果魯棒性強且易于實現;湯軼等[2]提出了一種利用加速穩健特征(Speeded Up Robust Features, SURF)和隨機抽樣一致算法(Random Sample Consensus, RANSAC)算子對背景運動補償,并基于卡爾曼濾波的目標檢測跟蹤算法,經實驗證明該算法具有很好的實時性與準確性;2018年,李大偉等[3]在場景感知的基礎上采用ROI外加融合梯度響應的顯著性目標檢測方法,該方法在公路場景下可以達到80.43%的準確率。
深度學習技術的興起為很多傳統行業帶來了技術性的變革。在無人機影像目標檢測領域,卷積神經網絡模型因其在檢測精度方面的優勢得到快速的推廣使用。2019年,裴偉等[4]基于改進(Single Shot MultiBox Detector, SSD)算法對航拍目標實施檢測,該算法最高可以取得87.8%的準確率;同年,李喆等[5]提出了一種基于候選區域的無人機偵察影像目標檢測算法;郭敬東等[6]提出了一種基于 (You Only Look Once, YOLO)算法的無人機電力巡檢圖像檢測算法,在實際的測試中取得了很高的精度與實時性;2020年,曾荻清等[7]以無人機航拍數據為基礎利用(You Only Look Once v3,YOLOv3)算法和相鄰角度平均算法進行車輛及車道線的檢測,進而實現對車輛壓線行駛行為的探測,其實驗結果相比傳統方法具有更高的精度。目前,基于深度學習的無人機影像多目標檢測方法已經在精度方面遠高于基于人工檢測算子以及機器學習的傳統手段。因此,本文基于深度學習理論提出了由端到端卷積神經網絡構建的多目標檢測方法,然后以開源無人機影像數據集VisDrone2019-DET為數據源,利用直方圖均衡化等算法進行圖像增強處理,制作了增強的無人機目標檢測數據集,并以此數據集對所提出的算法及幾種對比算法進行訓練,在同一測試集上對所有算法進行測試,并采用精度均值(Average Precision, AP),平均精度均值(mean Average Precision, mAP)以及檢測速度每秒傳輸幀數(Frames Per Second, FPS)對所提出方法的整體性能進行綜合評價。
本文所提出方法采用基于回歸的網絡結構設計構建了高分辨率遙感影像檢測網絡。基于回歸的目標檢測網絡采用端到端的設計思想,即網絡的一端輸入原始影像,另一端直接輸出檢測框的位置與類別信息。相比基于候選區域的網絡模型,該結構的網絡更為簡單,因此在檢測速度及算力需求方面均優于前者[8]?;诨貧w的網絡結構由特征提取模塊、特征增強模塊以及檢測頭三部分組成。其中特征提取骨干網絡負責將輸入網絡的影像進行逐層下采樣,輸出不同尺寸和通道數的特征圖,特征強化模塊的作用是通過對小尺寸特征圖進行上采樣和特征圖拼接來增強原始特征圖中的語義信息,檢測頭則負責輸出最終的檢測結果。
特征提取骨干網絡由負責特征提取的卷積核及下采樣的操作層采用自上而下的結構拼接而成,本文所提出方法采用一個3×3和1×1的卷積核來實現特征提取和通道操作功能,其中3×3的卷積核位于上層,對每個由上層輸入的特征圖采用卷積步長為1的操作進行特征提取來生成新的特征圖,然后由大小為1×1的卷積核同樣采用步長為1的操作進行通道擴張。為避免使用池化層進行下采樣操作而產生的特征信息過度丟失,因此采用3×3的卷積核進行步長為2的卷積操作對圖像進行2倍下采樣。為了減弱由網絡層數過深而導致的內部協變量偏移(Internal Covariate Shift,ICS)問題[9],在每個特征提取層后面添加一個批量再規范化層(Batch Renormalization,BRN)來保證模型在訓練過程中不因為上層的輸入數據分布不均勻而產生發散,同時也保證了模型在訓練和測試的極端可以基于單個樣本而非整個minibatch而生成同樣的輸出。為了增強輸出特征的非線性映射能力,使用擴展指數線性單元(Scaled Exponential Linear Unit, SELU)作為激活函數,具體如公式1所示:
(1)
式中,x為上層輸入值;α=1.05和β=1.67均為經驗參數。
在傳統的前饋結構基礎上,本文所提出方法在骨干網絡中額外添加了密集連接來進一步強化不同特征層之間的信息流通,密集連接的方式具體如公式(2)所示:
xi=Hi[x0,x1,x2,…,xi-1]
(2)
式中,xi表示第i層的輸出;Hi表示第i層的卷積變換。最終的骨干網絡層數為49層。
為了獲得語義信息更為豐富的特征圖,在特征提取骨干網絡的末端連接特征增強模塊。
根據目標在無人機影像中的大小特點,本文所提出方法設計了一個四層的特征增強模塊,采用子下而上的特征圖金字塔結構[10],每層的操作均為步長為2的上采樣層。在進行四次上采樣的同時,還采取兩種不同的路徑來豐富特征圖中的語義信息。首先是橫向連接,即采用add連接的方式將上采樣后的特征圖與特征提取骨干網絡中的圖像進行拼接,其次是密集連接,在特征增強模塊中同樣采用Concatenate連接將不同上采樣層的特征圖進行連接。最終輸入到四個不同的檢測末端進行檢測,在獲得多個近似結果后,采用非極大值抑制(Non-Maximum Suppression, NMS)算法獲取唯一的最佳檢測框。
模型的訓練損失函數由目標框定位損失函數以及類別判斷損失函數,具體如公式(3)所示:

(3)

為驗證本文所提出方法在精度方面的優勢,本文將在同一數據集上分別對YOLOv3,SSD,R-FCN算法以及本文提出方法進行訓練和測試,并使用AP,mAP與FPS三種指標對模型的檢測精度于檢測速度進行客觀評價。
本文以開源數據集VisDrone2019-DET為基礎進行模型的訓練與測試。為了讓訓練后的模型泛化能力更強,有必要采用數字圖像處理手段對圖像進一步進行增強處理。本文所提出方法采用直方圖均衡化算法等算法對原始數據集中的影像進行強化處理,結果如圖1所示。處理后的數據集共有3 615張影像,其中3 268張為訓練數據集,347張為測試集,數據集中目標的類別及數量情況如圖2所示。

圖1 數據集增強處理

圖2 訓練數據集樣本數量分布圖
本文所提出方法使用Pytorch作為深度學習框架來實現具體模型的構建,為了進行客觀評價,訓練與測試均在同一環境下進行,具體的配置環境如表1所示。在訓練過程中模型迭代次數為5 000次,所采用具體的訓練參數如表2所示。

表1 訓練環境配置表

表2 訓練參數表
隨著訓練迭代次數的增加,對應的損失曲線如圖3所示。從圖中可以看出,在初始損失制較大的情況下,本文所提出方法在訓練過程中能迅速收斂并在整個訓練過程中保持損失下降趨勢。

圖3 迭代損失曲線示意圖
在測試集上的部分檢測結果如圖4所示。在相同的運算環境下使用訓練數據集分別對YOLOv3,R-FCN,SSD模型進行訓練,然后采用每一類目標的AP以及三種模型的平均精度均值對模型檢測精度進行評價,最終結果如表3所示。
從圖4中可以看出,本文所提出方法對于影像中不同分布位置,不同類別以及不同大小的目標均有比較好的檢測效果。

圖4 檢測結果示意圖
根據表3的中評價結果可以看出,本文所提出方法在精度均值方面最高可以達到93.52%,對于在影像中分布較為稀疏的小個體行人目標也能夠達到89.75%的檢測精度,并且平均精度均值可以達到89.57%,相比YOLOv3在綜合檢測精度方面提高了6.53%,相比基于候選區域機制的R-FCN方法在精度方面提高了3.11%,并且在所有類別的檢測精度上均優于其余對比算法。說明本文所提出的方法在精度方面具有一定的優勢。在檢測速度方面,本文所提出方法在測試環境下可以達到每秒27幀的檢測速度,雖然相比傳統的快速檢測算法YOLOv3要低,但是仍然能夠滿足大部分檢測任務對于速度的需求。

表3 檢測精度及評價表
針對以無人機航拍影像為對象實施多目標檢測時存在的漏檢率較高以及泛化能力較差等問題,基于回歸結構設計并搭建了卷積神經網絡來進行目標的分類與識別,通過在特征提取骨干網絡中添加密集連接結構來增強網絡不同層次特征的溝通能力,然后利用四層的特征金字塔作為特征增強模塊來強化模型對小目標的檢測能力。以開源數據集VisDrone2019-DET為基礎進行數據強化后,來提高訓練后模型的泛化能力。將本文所提出方法與SSD及YOLOv3網絡的檢測結果對比,得出以下結論:
(1)對于無人機影像中大小不同,分布不均的多種目標,本文所提出方法均能夠實施高精度、快速地檢測,并且最終的平均精度均值能夠達到89.57%,相比的經典的快速檢測算YOLOv3和基于候選區域的R-FCN算法在檢測精度方面有了明顯的提高。
(2)在測試硬件環境下網絡的檢測速度也可以達到每秒27幀,可以滿足大部分實際場景下檢測任務對于檢測速度方面的需求。