彭勁松
(湖南環(huán)境生物職業(yè)技術(shù)學(xué)院 園林學(xué)院, 湖南 衡陽 421005)
無人機(jī)輕便靈活,操作簡單,能夠快速獲取大范圍內(nèi)的高清影像,是當(dāng)代測繪工作的主要數(shù)據(jù)生產(chǎn)工具之一[1- 2]。然而如何從海量的無人機(jī)影像數(shù)據(jù)中快速精準(zhǔn)地提取出有效的建筑房屋信息,具有重要的科學(xué)研究的價值與意義。隨著深度學(xué)習(xí)技術(shù)的興起,由卷積神經(jīng)網(wǎng)絡(luò)所構(gòu)建的目標(biāo)檢測網(wǎng)絡(luò)在人臉識別、工業(yè)零件檢測等多個物體檢測領(lǐng)域取得了很好的應(yīng)用。早在2017年,陳睿敏等[3]就提出了基于卷積神經(jīng)網(wǎng)絡(luò)紅外遙感圖像目標(biāo)提取網(wǎng)絡(luò),該網(wǎng)絡(luò)能夠?qū)t外遙感圖像上的不同種類地物有較高的分類精度;2019年,周蘇等[4]針對交通標(biāo)志檢測以小目標(biāo)為主的特點提出了改進(jìn)的PVANet (Performance vs Accuracy Network),并在TT100K(Tsinghua-Tencent 100K)數(shù)據(jù)集上取得了最高84.1%mAP的檢測精度;同年,盧飛宇[5]提出了一種基于改進(jìn)的多任務(wù)級聯(lián)卷積神經(jīng)網(wǎng)絡(luò)的交通標(biāo)志檢測網(wǎng)絡(luò),在實際測試場景下能夠?qū)Φ缆方煌?biāo)志得到較高的檢出率;同年,崔文靚等[6]提出了一種基于YOLOv3網(wǎng)絡(luò)的改進(jìn)模型,并將該網(wǎng)絡(luò)應(yīng)用于公路車道線檢測任務(wù)上,取得了95%全類平均精度(mean Average Precision, mAP)均值的精度,相比原始網(wǎng)絡(luò)在精度方面有了11%的提高;2020年,孔方方等[7]提出了基于YOLOv3的交通監(jiān)控目標(biāo)檢測模型,在大型汽車、小型汽車、騎行摩托車、騎行自行車和行人等5類目標(biāo)中可以取得84.49% mAP的精度以及98.18%的召回率。無人機(jī)影像中的房屋以中小型目標(biāo)為主,且不同房屋間的形狀差異較大,因此,有必要針對性地構(gòu)建一款深度學(xué)習(xí)的模型來實現(xiàn)對無人機(jī)遙感影像中的房屋實施快速、精準(zhǔn)檢測。單階段卷積神經(jīng)網(wǎng)絡(luò)兼具了檢測精度與速度方面的優(yōu)勢[8-9],本文通過構(gòu)建單階段卷積神經(jīng)網(wǎng)絡(luò)來實現(xiàn)對無人機(jī)影像中的建筑進(jìn)行快速精準(zhǔn)檢測,并對訓(xùn)練數(shù)據(jù)集進(jìn)行了一系列增強(qiáng)處理,來提高訓(xùn)練后模型的泛化能力。
TensorFlow是谷歌公司于2015年9月開源的一款機(jī)器學(xué)習(xí)計算框架。TensorFlow框架使用數(shù)據(jù)流圖(Graph)來表示完整的運算過程。流圖中的張量(Tensor)表示參與運算的多維數(shù)組,節(jié)點(Node)表示圖中具體使用的數(shù)學(xué)過程。由于具有出色的靈活性以及高度的可移植性,TensorFlow被很多科研機(jī)構(gòu)和生產(chǎn)廠商使用來構(gòu)建深度學(xué)習(xí)網(wǎng)絡(luò)模型[10]。本文使用TensorFlow2.0版本的框架來搭建卷積神經(jīng)網(wǎng)絡(luò)模型。
單階段卷積神經(jīng)網(wǎng)絡(luò)由特征提取骨干、多尺度特征強(qiáng)化網(wǎng)絡(luò)以及檢測頭三部分組成[11-12]。其中特征提取骨干使用不同層次和深度的卷積核,從原始圖像中提取出內(nèi)不同層次目標(biāo)的特征紋理信息。特征強(qiáng)化網(wǎng)絡(luò)是連接在特征提取骨干之后的結(jié)構(gòu),通過上采樣以及特征圖拼接等措施來增強(qiáng)圖中的問題信息豐富程度,便于提高后續(xù)的檢測精度。檢測頭是整個網(wǎng)絡(luò)的末端結(jié)構(gòu),其輸出結(jié)果即是圖中目標(biāo)的位置坐標(biāo)以及類別信息。
本文使用3×3與1×1的小卷積核來構(gòu)建特征提取骨干。特征提取骨干分為特征提取和尺寸下采樣兩部分,其中特征提取由3×3和1×1的卷積核組成,這兩種不同卷積核在卷積過程中的操作步長均為1 px,3×3的卷積核負(fù)責(zé)對圖像進(jìn)行特征提取,而1×1的卷積核來實現(xiàn)對圖像通道的擴(kuò)張。網(wǎng)絡(luò)采用了全卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),下采樣部分均由3×3的卷積核來組成,其操作步長為2 px。特征提取骨干采用隨機(jī)糾正線性單元帶泄露隨機(jī)線性整流(Randomized Leaky ReLU,RReLU)作為激活函數(shù)來提高網(wǎng)絡(luò)對于非線性特征的擬合能力,具體函數(shù)如式(1)所示。
(1)
式中,UR代表RReLU;i代表第i層特征提取層;ai是屬于(0,1)范圍內(nèi)的隨機(jī)值,在每次的訓(xùn)練過程中隨機(jī)選取。特征強(qiáng)化網(wǎng)絡(luò)的層數(shù)越深對最終的檢測精度提高效果就越明顯,然而過深的層數(shù)也會帶來大量的參數(shù)與計算量,導(dǎo)致網(wǎng)絡(luò)運行效率降低。綜合考慮網(wǎng)絡(luò)的計算量和復(fù)雜程度,選擇在特征提取骨干后構(gòu)建一個四層的特征強(qiáng)化網(wǎng)絡(luò)來實現(xiàn)特征圖的紋理信息強(qiáng)化。在其基礎(chǔ)上,將骨干網(wǎng)絡(luò)與特征強(qiáng)化網(wǎng)絡(luò)中輸出的相同尺寸的特征圖采用padding=same的方式進(jìn)行橫向拼接,來獲取紋理信息更為豐富的特征圖用來實施最終的檢測,并采用非極大值抑制(Non Maximum Suppression,NMS)來獲取最優(yōu)的檢測結(jié)果。
單階段的目標(biāo)檢測網(wǎng)絡(luò)使用一組基于訓(xùn)練數(shù)據(jù)得出的固定寬高的錨點框(Anchor box)對目標(biāo)進(jìn)行位置檢測和分類。錨點框的獲取主要依靠人工經(jīng)驗設(shè)計、聚類等幾種方式。本文采用K-means++算法從訓(xùn)練集中聚類獲得錨點框。K-means++聚類算法首先在所有數(shù)據(jù)點中選取一個聚類中心,然后根據(jù)剩余數(shù)據(jù)點到該中心的距離D(x)來計算出該樣本被選作下個聚類中心的概率P,最后按照輪盤法,依次選出所有的聚類中心,并根據(jù)D(x)反復(fù)迭代計算每個聚類簇的中心,直到結(jié)果收斂,具體的公式如式(2)~(3)所示:
D(x)=1-UIO
(2)
(3)
式中,D(x)代表距離;UIO代表預(yù)測框與實際框之間的交并比。由于圖像中的不同建筑尺度跨度較大,為了在保證檢測效率的同時盡可能對不同尺度的目標(biāo)實施檢測,選擇生成12個候選框來實施后續(xù)的網(wǎng)絡(luò)訓(xùn)練和結(jié)果檢測,最終得到的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按照尺寸大小分為四組并分配給四個不同層的預(yù)測框,以便對不同尺寸的目標(biāo)進(jìn)行檢測輸出。
本文基于德國開源數(shù)據(jù)集德國宇航中心(Deutsches Zentrum für Luft-und Raumfahrt, DLR) 3K Vehicle對網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練和測試。為了提高訓(xùn)練后模型的泛化能力,對原始數(shù)據(jù)集進(jìn)行一系列增強(qiáng)處理。原始數(shù)據(jù)集中的圖像尺寸為5 166×3 744,為了便于網(wǎng)絡(luò)訓(xùn)練,使用大小為608×608的網(wǎng)格對圖像進(jìn)行裁剪,并剔除所有裁剪后寬高不均勻以及不包含建筑目標(biāo)的網(wǎng)格區(qū)域。對裁剪后的數(shù)據(jù)采用銳化、亮度變換、放射變換與透視變換等方式來處理,以獲取不同場景及不同拍攝角度下的目標(biāo)。經(jīng)過處理后的圖像總共400張,其中300張用來對網(wǎng)絡(luò)進(jìn)行訓(xùn)練,100張用來構(gòu)建測試數(shù)據(jù)集。使用labelmg工具制作視覺對象類(Visual Object Classes,VOC)格式的訓(xùn)練數(shù)據(jù)標(biāo)簽,部分訓(xùn)練數(shù)據(jù)樣本如圖1所示。
圖1 部分訓(xùn)練數(shù)據(jù)示意圖
本文的訓(xùn)練和測試基于配置為GPU NVIDA RTX 1080TI,內(nèi)存16G,UBUNTU16.04,CUDA10.0的硬件平臺上來完成。為了使模型在訓(xùn)練的過程中快速收斂,使用了動態(tài)學(xué)習(xí)率機(jī)制,在設(shè)置最大迭代次數(shù)的前提下,讓模型的學(xué)習(xí)率隨著模型的迭代次數(shù)的階段性增加而逐步變化。在本次實驗中,模型的總訓(xùn)練次數(shù)為30 000次,初始學(xué)習(xí)率設(shè)置為0.005,每當(dāng)模型分別迭代到10 000次和20 000次時,使學(xué)習(xí)率衰減0.1倍,訓(xùn)練的batch設(shè)置為32,動量參數(shù)設(shè)置為0.8。損失函數(shù)由邊界定位損失函數(shù)Smooth L1和多類別損失函數(shù)SoftMax組成,具體如公式(4)所示:
(4)
式中,N為Anchor Box的個數(shù);?為權(quán)重參數(shù),一般設(shè)置為1;g代表實際邊界框與結(jié)果的中心點坐標(biāo)差;c為目標(biāo)類別個數(shù)。
隨著訓(xùn)練迭代次數(shù)的不斷增加,模型的損失在不斷地收斂,模型在訓(xùn)練過程中的損失收斂情況如圖2所示。
圖2 模型損失收斂情況圖
由圖2可以看出,網(wǎng)絡(luò)在訓(xùn)練的前2 000次時存在較大的損失誤差,但隨著模型的訓(xùn)練迭代次數(shù)的不斷增加,損失曲線逐步降低,最終達(dá)到穩(wěn)定收斂。
使用測試數(shù)據(jù)集在同一硬件平臺上對訓(xùn)練后的網(wǎng)絡(luò)進(jìn)行測試,部分結(jié)果如圖3所示。為客觀評估網(wǎng)絡(luò)的性能,使用訓(xùn)練后的單激發(fā)多盒探測器(Single Shot Multi-Box Detector, SSD)和YOLOv3網(wǎng)絡(luò)在統(tǒng)一數(shù)據(jù)集和硬件環(huán)境下進(jìn)行測試,并采用精度均值(Average Precision, AP)和每秒傳輸幀數(shù)(Frames Per Second, FPS)對網(wǎng)絡(luò)的檢測精度和檢測速度進(jìn)行評價。
圖3和表1分別為使用本文在測試數(shù)據(jù)中的檢測結(jié)果以及不同網(wǎng)絡(luò)之間的檢測精度及速度對比。測試圖像中存在著分布不均勻、形狀不統(tǒng)一的房屋,而本文構(gòu)建的目標(biāo)檢測網(wǎng)絡(luò)對以上房屋均能夠?qū)崿F(xiàn)很好地檢出。根據(jù)表1中的評價結(jié)果可以看出,本文所構(gòu)建的網(wǎng)絡(luò)在檢測精度方面可以達(dá)到91.3%,相比SSD網(wǎng)絡(luò)的79.8%和YOLOv3的83.0%都有了明顯的提高。但是在檢測速度方面,在測試硬件環(huán)境下本文所有構(gòu)建的網(wǎng)絡(luò)可以達(dá)到21FPS的檢測速度,略低于SSD和YOLOv3的檢測速度,但相比其余網(wǎng)絡(luò)模型本文所構(gòu)建的單階段目標(biāo)檢測模型在精度、速度兩方面的達(dá)到了較好的均衡。
圖3 部分測試結(jié)果示意圖
表1 檢測精度與速度評價表
針對使用無人機(jī)影像實施房屋檢測中存在的錯檢漏檢率高的問題,構(gòu)建了一個適用的單階段卷積神經(jīng)網(wǎng)絡(luò),使用K-means++算法對聚類分析訓(xùn)練數(shù)據(jù)得到合適的Anchor Box,并對訓(xùn)練圖像數(shù)據(jù)進(jìn)行增強(qiáng)處理。將本文構(gòu)建網(wǎng)絡(luò)與SSD及YOLOv3網(wǎng)絡(luò)的檢測結(jié)果對比,得出以下結(jié)論:
(1)本文構(gòu)建的網(wǎng)絡(luò)能夠快速檢測地面中不同大小的房屋目標(biāo),其檢測精度也可以達(dá)到91.3%的水平,相比的SSD和YOLOv3在檢測精度方面有了明顯的提高。
(2)同時在測試硬件環(huán)境下網(wǎng)絡(luò)的檢測速度也可以達(dá)到每秒傳輸幀數(shù)21 m·s-1,實現(xiàn)了在一定硬件條件下的快速檢測。