彭勁松
(湖南環境生物職業技術學院 園林學院, 湖南 衡陽 421005)
無人機輕便靈活,操作簡單,能夠快速獲取大范圍內的高清影像,是當代測繪工作的主要數據生產工具之一[1- 2]。然而如何從海量的無人機影像數據中快速精準地提取出有效的建筑房屋信息,具有重要的科學研究的價值與意義。隨著深度學習技術的興起,由卷積神經網絡所構建的目標檢測網絡在人臉識別、工業零件檢測等多個物體檢測領域取得了很好的應用。早在2017年,陳睿敏等[3]就提出了基于卷積神經網絡紅外遙感圖像目標提取網絡,該網絡能夠對紅外遙感圖像上的不同種類地物有較高的分類精度;2019年,周蘇等[4]針對交通標志檢測以小目標為主的特點提出了改進的PVANet (Performance vs Accuracy Network),并在TT100K(Tsinghua-Tencent 100K)數據集上取得了最高84.1%mAP的檢測精度;同年,盧飛宇[5]提出了一種基于改進的多任務級聯卷積神經網絡的交通標志檢測網絡,在實際測試場景下能夠對道路交通標志得到較高的檢出率;同年,崔文靚等[6]提出了一種基于YOLOv3網絡的改進模型,并將該網絡應用于公路車道線檢測任務上,取得了95%全類平均精度(mean Average Precision, mAP)均值的精度,相比原始網絡在精度方面有了11%的提高;2020年,孔方方等[7]提出了基于YOLOv3的交通監控目標檢測模型,在大型汽車、小型汽車、騎行摩托車、騎行自行車和行人等5類目標中可以取得84.49% mAP的精度以及98.18%的召回率。無人機影像中的房屋以中小型目標為主,且不同房屋間的形狀差異較大,因此,有必要針對性地構建一款深度學習的模型來實現對無人機遙感影像中的房屋實施快速、精準檢測。單階段卷積神經網絡兼具了檢測精度與速度方面的優勢[8-9],本文通過構建單階段卷積神經網絡來實現對無人機影像中的建筑進行快速精準檢測,并對訓練數據集進行了一系列增強處理,來提高訓練后模型的泛化能力。
TensorFlow是谷歌公司于2015年9月開源的一款機器學習計算框架。TensorFlow框架使用數據流圖(Graph)來表示完整的運算過程。流圖中的張量(Tensor)表示參與運算的多維數組,節點(Node)表示圖中具體使用的數學過程。由于具有出色的靈活性以及高度的可移植性,TensorFlow被很多科研機構和生產廠商使用來構建深度學習網絡模型[10]。本文使用TensorFlow2.0版本的框架來搭建卷積神經網絡模型。
單階段卷積神經網絡由特征提取骨干、多尺度特征強化網絡以及檢測頭三部分組成[11-12]。其中特征提取骨干使用不同層次和深度的卷積核,從原始圖像中提取出內不同層次目標的特征紋理信息。特征強化網絡是連接在特征提取骨干之后的結構,通過上采樣以及特征圖拼接等措施來增強圖中的問題信息豐富程度,便于提高后續的檢測精度。檢測頭是整個網絡的末端結構,其輸出結果即是圖中目標的位置坐標以及類別信息。
本文使用3×3與1×1的小卷積核來構建特征提取骨干。特征提取骨干分為特征提取和尺寸下采樣兩部分,其中特征提取由3×3和1×1的卷積核組成,這兩種不同卷積核在卷積過程中的操作步長均為1 px,3×3的卷積核負責對圖像進行特征提取,而1×1的卷積核來實現對圖像通道的擴張。網絡采用了全卷積神經網絡結構,下采樣部分均由3×3的卷積核來組成,其操作步長為2 px。特征提取骨干采用隨機糾正線性單元帶泄露隨機線性整流(Randomized Leaky ReLU,RReLU)作為激活函數來提高網絡對于非線性特征的擬合能力,具體函數如式(1)所示。
(1)
式中,UR代表RReLU;i代表第i層特征提取層;ai是屬于(0,1)范圍內的隨機值,在每次的訓練過程中隨機選取。特征強化網絡的層數越深對最終的檢測精度提高效果就越明顯,然而過深的層數也會帶來大量的參數與計算量,導致網絡運行效率降低。綜合考慮網絡的計算量和復雜程度,選擇在特征提取骨干后構建一個四層的特征強化網絡來實現特征圖的紋理信息強化。在其基礎上,將骨干網絡與特征強化網絡中輸出的相同尺寸的特征圖采用padding=same的方式進行橫向拼接,來獲取紋理信息更為豐富的特征圖用來實施最終的檢測,并采用非極大值抑制(Non Maximum Suppression,NMS)來獲取最優的檢測結果。
單階段的目標檢測網絡使用一組基于訓練數據得出的固定寬高的錨點框(Anchor box)對目標進行位置檢測和分類。錨點框的獲取主要依靠人工經驗設計、聚類等幾種方式。本文采用K-means++算法從訓練集中聚類獲得錨點框。K-means++聚類算法首先在所有數據點中選取一個聚類中心,然后根據剩余數據點到該中心的距離D(x)來計算出該樣本被選作下個聚類中心的概率P,最后按照輪盤法,依次選出所有的聚類中心,并根據D(x)反復迭代計算每個聚類簇的中心,直到結果收斂,具體的公式如式(2)~(3)所示:
D(x)=1-UIO
(2)
(3)
式中,D(x)代表距離;UIO代表預測框與實際框之間的交并比。由于圖像中的不同建筑尺度跨度較大,為了在保證檢測效率的同時盡可能對不同尺度的目標實施檢測,選擇生成12個候選框來實施后續的網絡訓練和結果檢測,最終得到的Anchor Box如下所示(26,27),(29,75),(38,40),(48,48),(54,143),(54,54),(59,62),(69,70),(78,80),(97,96),(112,114),(146,172)。將所有的Anchor Box按照尺寸大小分為四組并分配給四個不同層的預測框,以便對不同尺寸的目標進行檢測輸出。
本文基于德國開源數據集德國宇航中心(Deutsches Zentrum für Luft-und Raumfahrt, DLR) 3K Vehicle對網絡模型進行訓練和測試。為了提高訓練后模型的泛化能力,對原始數據集進行一系列增強處理。原始數據集中的圖像尺寸為5 166×3 744,為了便于網絡訓練,使用大小為608×608的網格對圖像進行裁剪,并剔除所有裁剪后寬高不均勻以及不包含建筑目標的網格區域。對裁剪后的數據采用銳化、亮度變換、放射變換與透視變換等方式來處理,以獲取不同場景及不同拍攝角度下的目標。經過處理后的圖像總共400張,其中300張用來對網絡進行訓練,100張用來構建測試數據集。使用labelmg工具制作視覺對象類(Visual Object Classes,VOC)格式的訓練數據標簽,部分訓練數據樣本如圖1所示。

圖1 部分訓練數據示意圖
本文的訓練和測試基于配置為GPU NVIDA RTX 1080TI,內存16G,UBUNTU16.04,CUDA10.0的硬件平臺上來完成。為了使模型在訓練的過程中快速收斂,使用了動態學習率機制,在設置最大迭代次數的前提下,讓模型的學習率隨著模型的迭代次數的階段性增加而逐步變化。在本次實驗中,模型的總訓練次數為30 000次,初始學習率設置為0.005,每當模型分別迭代到10 000次和20 000次時,使學習率衰減0.1倍,訓練的batch設置為32,動量參數設置為0.8。損失函數由邊界定位損失函數Smooth L1和多類別損失函數SoftMax組成,具體如公式(4)所示:
(4)
式中,N為Anchor Box的個數;?為權重參數,一般設置為1;g代表實際邊界框與結果的中心點坐標差;c為目標類別個數。
隨著訓練迭代次數的不斷增加,模型的損失在不斷地收斂,模型在訓練過程中的損失收斂情況如圖2所示。

圖2 模型損失收斂情況圖
由圖2可以看出,網絡在訓練的前2 000次時存在較大的損失誤差,但隨著模型的訓練迭代次數的不斷增加,損失曲線逐步降低,最終達到穩定收斂。
使用測試數據集在同一硬件平臺上對訓練后的網絡進行測試,部分結果如圖3所示。為客觀評估網絡的性能,使用訓練后的單激發多盒探測器(Single Shot Multi-Box Detector, SSD)和YOLOv3網絡在統一數據集和硬件環境下進行測試,并采用精度均值(Average Precision, AP)和每秒傳輸幀數(Frames Per Second, FPS)對網絡的檢測精度和檢測速度進行評價。
圖3和表1分別為使用本文在測試數據中的檢測結果以及不同網絡之間的檢測精度及速度對比。測試圖像中存在著分布不均勻、形狀不統一的房屋,而本文構建的目標檢測網絡對以上房屋均能夠實現很好地檢出。根據表1中的評價結果可以看出,本文所構建的網絡在檢測精度方面可以達到91.3%,相比SSD網絡的79.8%和YOLOv3的83.0%都有了明顯的提高。但是在檢測速度方面,在測試硬件環境下本文所有構建的網絡可以達到21FPS的檢測速度,略低于SSD和YOLOv3的檢測速度,但相比其余網絡模型本文所構建的單階段目標檢測模型在精度、速度兩方面的達到了較好的均衡。

圖3 部分測試結果示意圖

表1 檢測精度與速度評價表
針對使用無人機影像實施房屋檢測中存在的錯檢漏檢率高的問題,構建了一個適用的單階段卷積神經網絡,使用K-means++算法對聚類分析訓練數據得到合適的Anchor Box,并對訓練圖像數據進行增強處理。將本文構建網絡與SSD及YOLOv3網絡的檢測結果對比,得出以下結論:
(1)本文構建的網絡能夠快速檢測地面中不同大小的房屋目標,其檢測精度也可以達到91.3%的水平,相比的SSD和YOLOv3在檢測精度方面有了明顯的提高。
(2)同時在測試硬件環境下網絡的檢測速度也可以達到每秒傳輸幀數21 m·s-1,實現了在一定硬件條件下的快速檢測。