王勝科,任鵬飛,呂昕,莊新發(fā)
中國海洋大學信息科學與工程學院,山東青島266100
近年來,無人機場景下的目標檢測技術在農(nóng)業(yè)監(jiān)測、海上巡航、城市校園安防等領域具有重要的應用價值,但實現(xiàn)自動化檢測仍然是一項具有挑戰(zhàn)性的任務。無人機圖像自動化目標檢測與通用目標檢測的發(fā)展息息相關。2012年以前的目標檢測算法主要通過手工提取目標特征,根據(jù)人工分析決定提取方式,雖然耗費了巨大的人力,但收效甚微,精度和速度都較差。2012年,AlexNet[1]問世,其效果遠勝于傳統(tǒng)的檢測算法,由此拉開了深度學習的序幕,也促使人們開始探索計算機的算力問題。不斷升級的計算機硬件,最終促使深度學習逐步代替了傳統(tǒng)檢測。2014年,Girshick提出了R-CNN[2],根據(jù)隨機搜索法[3]進行區(qū)域提取,再分析所提取區(qū)域的特征,最后用支持向量機(support vector machines,SVM)[4]將區(qū)域分類。這是一種將目標檢測轉(zhuǎn)化為區(qū)域分類問題的解決思路,在此基礎上相繼出現(xiàn)了SPPNet[5]、Fast R-CNN[6]、Faster R-CNN[7]等方法。2016年,Redmon等提出了直接回歸的單步目標檢測算法YOLO[8],隨后又出現(xiàn)了SSD[9]、YOLOv2[10]、YOLOv3[11]等改進算法。這類方法屬于端到端的直接處理方法,結(jié)構(gòu)簡單且速度較快。然而,無人機航拍影像可視為復雜大尺度場景下的小目標檢測,現(xiàn)有的自動化檢測方法在實際應用場景中效果較差,無法投入工業(yè)應用,主要原因如下:
1)航拍圖分辨率高
無人機圖像大多數(shù)尺寸大于等于1 920×1 080像素,對于垂直分辨率大于等于720像素的圖像則為高清圖像。常見的高分辨率圖像尺寸通常為1 280×720像素或1 920×1 080像素。相對于低分辨圖像,高分辨率意味著圖像所涵蓋的目標更多,拍攝的場景更大,從而直接影響檢測的效果。
2)無人機場景中大多為小目標
國際光學工程學會(Society of Photo-Optical Instrumentation Engineers,SPIE)定義小目標為面積占原始N×N圖像面積的0.12%以下(包含0.12%)的目標[12];MSCOCO數(shù)據(jù)集中定義像素絕對值小于等于32×32像素的目標為小目標[13]。無人機飛行的高度導致航拍圖中的目標很小,即使是低空航拍,拍攝目標的有效特征像素也很少,這給智能化檢測帶來了極大挑戰(zhàn)。
3)背景復雜干擾性強
無人機的俯視視角直接產(chǎn)生背景遮擋問題,導致漏檢情況時有發(fā)生。
鑒于以上原因,基于關鍵點的檢測算法更適合處理無人機場景下的目標檢測,具有代表性的工作有Corner Net[14]、檢測三元組的CenterNet[15]和檢測中心點的CenterNet[16]等。基于關鍵點的檢測是直接對目標進行定位和分類,而不必預定義候選區(qū)域的前置操作,從而將整個目標區(qū)域的檢測看作是對目標標志性點的檢測,再由點及面進行檢測,因此關鍵點檢測算法在精度和速度方面都具有潛力。
本文借鑒關鍵點檢測的思路,提出了基于關鍵點檢測的高分辨率航拍圖像檢測框架。針對小目標特點,將基于中心點的目標檢測方法應用于無人機場景。首先采用了滑窗裁剪的預處理方式,在冗余檢測剔除過程中提出了針對性的廣義非極大值抑制(generalized non-maximum suppression,G-NMS)方法;其次,針對航拍圖中小目標特征少而難以提取所導致的檢測精度低的問題,在CenterNet網(wǎng)絡的基礎上引入了通道注意力模塊和可變形空間注意力模塊;最后,為了在保證精度的情況下精簡模型,提高網(wǎng)絡檢測速度,本文引入了LegoNet卷積單元。
在無人機應用場景下,如果直接用已有算法框架進行檢測,就要將4 000×2 250及以上像素的圖像縮小到1 000像素以內(nèi)才能輸入框架,使小目標縮小到極小,造成檢測率降低的情況。為此,本文依據(jù)分而治之的策略提出了基于Center Net的無人機高分辨率航拍圖檢測框架。該框架包括預處理、檢測和后處理三部分,如圖1所示。
圖1 基于關鍵點檢測的高分辨率航拍圖像檢測流程Figure 1 High resolution aerial image detection process based on key point detection
首先執(zhí)行預處理操作,對原始分辨率圖像在行和列兩個方向進行有重疊的滑窗裁剪,并記錄位置信息。裁剪的尺寸需要合理設置,過大會導致小目標檢測效果差,過小則不能保證裁剪的小塊圖像包含完整的目標;此外,滑動值應該小于裁剪的尺寸,保證有重疊區(qū)域,避免缺失部分目標[17]。然后將裁剪出的小尺寸塊圖通過改進后的CenterNet網(wǎng)絡進行檢測。最后根據(jù)位置信息和本文提出的G-NMS算法來聚合檢測結(jié)果,再將結(jié)果映射回原分辨率。
對于高分辨率圖像,本文以尺寸為m×n(k≤m且k≤n)的裁剪塊圖每隔k像素進行切片,確保塊與塊之間產(chǎn)生相對的重疊部分。在使用改進的CenterNet網(wǎng)絡得到的粗糙檢測結(jié)果中,同一目標會產(chǎn)生重復檢測的現(xiàn)象,以致在全局映射后會生成多個如圖2所示的嵌套型冗余框。
圖2 原始NMS的檢測框效果Figure 2 Bounding box effect using original NMS
在這里不能采用直接的分割方式(k=m或者k=n),如果直接分割就會破壞邊緣目標的完整性,導致人為丟失信息的情況發(fā)生。因此,為了去除嵌套型冗余框,保留最準確的檢測結(jié)果,本文提出了G-NMS方法。
IoU和GIoU的計算公式如下:
式中:A和B表示兩個計算交并比的檢測框;C表示可以同時覆蓋A和B兩個檢測框的最小矩形;GIoU表示IoU的下界,既保持了IoU可以計算得到兩個檢測框的相交程度,同時也可以反映兩個檢測框的重疊方式。在圖2中,雖然IoU一致,但相交的方式不同,這樣可以有效地區(qū)分兩種重疊,避免在相同閾值條件下發(fā)生漏檢情況。
G-NMS的算法流程如下:先搜索預測框集合中置信度最高的預測框,然后借鑒NMS抑制的迭代過程遍歷剩下的該類所有預測框,并計算GIoU的值。若GIoU超過設置的G-NMS閾值,則從集合中予以剔除。這是一個迭代的過程,最后返回去除冗余的檢測結(jié)果。
檢測中心點的CenterNet網(wǎng)絡顧名思義就是只檢測中心關鍵點來定位目標,然后進行目標大小的回歸,得到最終的檢測框,從而將目標檢測問題轉(zhuǎn)化為標準的中心點估計問題。該框架省去了CornerNet等算法在關鍵點檢測后需要組合的步驟,顯著地提高了網(wǎng)絡的檢測速度。算法的具體流程如下:輸入三通道的原始檢測圖像,借助骨干網(wǎng)絡得到特征圖后用高斯核函數(shù)將關鍵點分布到特征圖上;然后在整個特征圖上選出K個預測中心點,并計算這K個中心點對應的類別置信度、偏置、對應目標的長寬值;最后根據(jù)置信度閾值篩選出符合條件的預測結(jié)果而將其余結(jié)果丟棄。這種方法在中心點沒有重疊的情況下省去了前景和背景的分類過程;根據(jù)高斯核函數(shù)得到的熱力圖可直接抽取峰值作為中心點,而無需NMS算法過濾;同時該方法的骨干網(wǎng)絡輸出的特征圖尺寸大,故不必使用多尺度的策略。
2.2.1 可變形卷積v2
在小目標檢測中,特征提取較為困難。為了能更有效地利用感受野,使卷積操作集中于目標特征區(qū)域,引入了可變形卷積??勺冃尉矸ev2[18]是對可變形卷積v1[19]的改進版,兩者都能學習額外的偏移量,使得卷積核對特征的采樣產(chǎn)生偏移,從而集中于感興趣區(qū)域并自主學習到對目標特征有用的上下文信息??勺冃尉矸e核具有不同的形態(tài),涵蓋了尺度、各向異性長寬比和旋轉(zhuǎn)等變換。
2.2.2 雙重注意力機制
同樣針對小目標特征難以提取這一問題,本文引入了雙重注意力機制。在有著復雜背景和大量小目標的場景中,同時關注不同通道的重要性和不同空間的重要性,以提升小目標特征的提取能力。雙重注意力機制[20]是從通道和空間兩個維度設計的簡單有效的注意力模塊,將注意力圖和特征圖相乘進行特征自適應學習。雙重注意力機制是一個輕量級通用模塊,可以在并不顯著增加網(wǎng)絡參數(shù)的同時提高網(wǎng)絡的表征能力。通道注意力模塊主要關注特征圖的通道信息,利用最大池化和平均池化對特征圖的空間維度進行壓縮,分別得到兩個描述值;然后通過一個共享網(wǎng)絡計算得到通道注意力圖,其中共享網(wǎng)絡由一個隱藏層的多層感知器組成??臻g注意力模塊主要關注目標特征的位置信息,利用最大池化和平均池化分別得到兩個特征描述;然后使用連接操作將兩個特征描述合并,使用普通的卷積操作將其生成空間注意力圖。
本文提出了優(yōu)化小目標的特征提取機制,其主要實現(xiàn)方式如下:以CenterNet檢測算法的DLA-34為基礎網(wǎng)絡,在底層網(wǎng)絡中嵌入包含通道注意力和空間注意力的雙重注意力機制,并在空間注意力模塊中引入可變形卷積v2進行改進,既能優(yōu)化網(wǎng)絡的特征表達能力,又可以借助自主學習的上下文信息來提升小目標特征提取的效果。
LegoNet卷積[21]是一種高效的卷積分割運算再拼合的策略,可實現(xiàn)對模型參數(shù)的壓縮,提升檢測速度。LegoNet卷積單元主要分為拆分-轉(zhuǎn)換-合并3個步驟。在拆分階段,將特征圖拆分成多個特征子圖的集合。在轉(zhuǎn)換階段,每個子圖可以作為基本的卷積分量,與每一個樂高(Lego)卷積核卷積能得到多個Lego特征子圖。這一過程為Lego卷積,相比于經(jīng)典的卷積操作,此方式分解了原始的特征圖,完成了主要的浮點運算,且操作總數(shù)量明顯減少。在合并階段,所輸出的特征圖是由多個Lego特征子圖拼接而來的,這個拼接過程就像是組裝Lego積木,因此無需更多的網(wǎng)絡參數(shù)運算。航拍圖像中小目標多且分布密集,而小目標檢測的效果與檢測網(wǎng)絡的小目標特征提取能力密不可分。本節(jié)從提高網(wǎng)絡表征能力入手,提出引入經(jīng)可變形卷積改造的雙重注意力機制,實現(xiàn)了改進CenterNet網(wǎng)絡結(jié)構(gòu)、提升小目標檢測準確率的目標。
考慮到引入雙重注意力機制后會影響網(wǎng)絡檢測的速度,遂引入LegoNet卷積單元改造網(wǎng)絡基礎卷積塊,在確保提高檢測精度的同時不增加檢測時間。對比改進前后的網(wǎng)絡結(jié)構(gòu)如圖3所示。
圖3中:黃色線代表原始的上采樣操作,用Up Node表示;紅色線代表通道注意力上采樣過程,用Ca+Up Node表示;單虛線代表原始可變形卷積過程,用Deform Conv表示;雙虛線則是代表加入LegoNet卷積單元的可變形卷積操作,用L-Deform Conv表示。圖例中通道注意力模塊簡稱Ca,可變形空間注意力模塊簡稱D-Sa,LegoNet卷積單元簡稱Lego。網(wǎng)絡延續(xù)上下采樣交替結(jié)合的方式搭建。在下采樣過程中,本文加入了3種結(jié)構(gòu)組成網(wǎng)絡的基礎塊,以層級遞進的方式對航拍圖的特征進行卷積。雙重注意力機制在兩個維度分別抓取航拍圖像中目標特征之間的場景依賴關系,使得各個通道之間產(chǎn)生全局的關聯(lián),獲得更強的目標語義響應特征。隨著下采樣的進行,特征的通道數(shù)目不斷增加。為了將航拍圖中小目標的高級語義信息和底層的細節(jié)信息更好地融合,本文在每一次上采樣過程中加入了通道注意力模塊,防止高層特征在通道降低的過程中出現(xiàn)有效語義丟失的情況。
圖3 改進前后的網(wǎng)絡結(jié)構(gòu)對比Figure 3 Comparison of network structure before and after improvement
UAV_OUC無標注數(shù)據(jù)集由大疆經(jīng)緯M100系列平臺進行采集,圖像分辨率為4 000×2 250像素,共計804幅。數(shù)據(jù)集標注類別有以下7類:人、自行車、摩托車、三輪車、小汽車、大卡車、公交車。UAV_OUC數(shù)據(jù)集中98%以上均為小目標,主要集中于小汽車、行人、摩托車這3個類別。VisDrone航拍小目標數(shù)據(jù)集于2018年提出,是為了推動無人機應用場景下的物體檢測而公開的大規(guī)模數(shù)據(jù)集,包含無人機平臺在不同高度、不同位置采集的10 209幅靜態(tài)圖像,6 471幅用于訓練,548幅用于驗證,1 610幅用于測試,1 580幅無標注。該數(shù)據(jù)集主要關注人類和車輛,并定義了10個感興趣的對象類別,包括直立行人、人(非站立狀態(tài))、小汽車、貨車、公共汽車、卡車、面包車、自行車、遮陽蓬三輪車、三輪車。本文檢測算法的可視化結(jié)果如圖4的所示。
圖4 本文檢測算法的可視化結(jié)果Figure 4 Visual results of detection algorithm in this paper
按照MS-COCO評估協(xié)議,本文以平均準確率mAP評估指標檢測算法的有效性。真正例、假正例、假反例是計算機視覺中重要的基礎指標[22]。真正例TP表示將正類正確預測為正類的數(shù)目;假正例FP表示將負類錯誤預測為正類的數(shù)目;假負例FN表示將正類錯誤預測為負類的數(shù)目;真負例TN表示將負類正確預測為負類的數(shù)目。由TP、FP、FN可計算得到查準率P和查全率R分別為
得到某一類別的檢測結(jié)果后按置信度排序,計算以各置信度為劃分閾值得到的查全率和查準率;根據(jù)不同查全率得到對應的最大查準率,然后求得某一類的平均精度AP為
求所有類別AP的平均值得到平均準確度mAP,同時本文的mAP是在多個IoU閾值間取的平均值,采用了10個以0.05為間隔從0.50到0.95的IoU閾值。傳統(tǒng)方法只計算單個IoU閾值為0.50的指標,只有當IoU>0.50時才認為預測區(qū)域正確。與傳統(tǒng)方法相比,對多個IoU閾值求平均的方法能夠更全面地檢驗檢測算法的有效性。另外,本文還將mAP和mAP75作為一組輔助參考數(shù)據(jù),而將平均最大召回率作為另一組輔助參考數(shù)據(jù),AR100表示每幅圖片中給定100個檢測結(jié)果所求得的最大召回率。
本文選擇在Ubuntu16.04服務器系統(tǒng)上搭建實驗,顯卡為Titan X 12G,軟件平臺包括CUDA 9.0和Pytorch0.4.1。本文通過裁剪后的UAV_OUC訓練集進行訓練,在UAV_OUC原始分辨率測試集上進行測試,經(jīng)過裁剪、檢測、拼合后得到了高分辨率圖像的檢測結(jié)果。Our-BasicBlock-1表示本文在網(wǎng)絡中引入可變形雙重注意力機制和LegoNet卷積單元,其中“1”表示僅在第1層基礎塊上引入改進策略;Our-BasicBlock-2表示在前兩層上引入改進策略,以此類推。在UAV_OUC原始分辨率數(shù)據(jù)集和VisDrone2019數(shù)據(jù)集上的檢測效果如表1和2所示。
表1 UAV_OUC原始分辨率數(shù)據(jù)集的檢測效果Table 1 Detection effect of UAV_OUC original resolution data set %
從表1和2中可以看到:使用原始的CenterNet檢測,在兩個數(shù)據(jù)集上得到的mAP分別為55.70%和23.33%,而采用本文提出的檢測算法得到的mAP均高于原檢測算法得到的mAP。
為了進一步驗證本文引入的各部分模塊的有效性,在原始的Center Net網(wǎng)絡中分別引入單一或組合的模塊進行訓練,得到7種不同的網(wǎng)絡模型。實驗數(shù)據(jù)為裁剪后的UAV_OUC數(shù)據(jù)集,并隨機劃分為訓練集和測試集。本實驗使用mAP75、每幅圖平均檢測時間以及訓練模型的參數(shù)來量化各模塊的作用。以mAP75衡量網(wǎng)絡檢測的精確率,以每幅圖的平均檢測時間和訓練模型的參數(shù)衡量網(wǎng)絡的精簡程度。在裁剪后的UAV_OUC測試集上,本文引入的各模塊對于檢測模型的影響效果如表3所示。表中Ca表示引入通道注意力模塊,Sa表示引入原始的空間注意力模塊,D-Sa表示引入本文改進后的可變形空間注意力模塊,Lego表示引入LegoNet卷積單元模塊。不引入任何模塊的原始網(wǎng)絡,在裁剪后UAV_OUC數(shù)據(jù)集上的檢測精度只有71.26%,且模型參數(shù)較多,網(wǎng)絡的檢測速度較慢。引入Ca、Sa、D-Sa后,網(wǎng)絡的精度將分別提升到71.35%、71.41%、72.01%,本文改進的D-Sa比原始的Sa在準確率方面提升了0.60%。因此,本文最后引入Ca和D-Sa模塊組成的可變形注意力機制來提升網(wǎng)絡對小目標的檢測精度。同時從表3中可以看到:引入的LegoNet卷積單元模塊雖然對網(wǎng)絡的檢測精度略有影響,但是大大地提高了檢測速度,如僅在原始的網(wǎng)絡中引入Lego模塊,可以將每幅圖的檢測時間大約減少20 ms。
表2 VisDrone2019數(shù)據(jù)集的檢測效果Table 2 Detection effect of Visdrone 2019 data set %
表3 不同模塊在裁剪后的UAV_OUC數(shù)據(jù)集上的實驗結(jié)果Table 3 Experimental results of different modules on clipped UAV_OUC data set
本文從實際應用出發(fā)分析航拍圖像的特點,歸納了智能化目標檢測需要克服的難點,并采用分治策略將單個復雜問題拆分、解決、合并,最終提出了針對該任務的檢測框架和檢測網(wǎng)絡,分別通過實驗在UAV_OUC高分辨率航拍數(shù)據(jù)集和VisDrone2019航拍小目標數(shù)據(jù)集上進行了分析和驗證。結(jié)果表明:本文提出的算法可以有效地提高無人機應用場景下的小目標檢測精度和速度,并為該場景下高分辨率圖像的智能化分析應用提供了解決方案。
我們將在接下來的工作中進一步擴充高分辨率航拍圖像的數(shù)據(jù)量,以更多的實際場景數(shù)據(jù)提高模型泛化性,應對不同場景在實際檢測過程中可能遇到的問題。此外,本文改進后的特征提取網(wǎng)絡對小目標的檢測有著積極的意義,并且不局限于近地無人機圖像。因此,我們將在未來的工作中積極探索本文方法在其他視覺分析任務中的應用。