徐昭洪 劉 宇 全吉成
(空軍航空大學數字地球實驗室 長春 130022)
在目標檢測研究領域,傳統的目標檢測算法主要是基于匹配和分割的檢測算法,在目標識別方面高度依賴于人工設計的特征,導致始終無法提升其實效性和檢測精確度。隨著計算機硬件技術(主要是GPU、TPU)的進步和人工神經網絡技術的不斷發展,深度學習為目標檢測提供了新的思路和方法。深度學習技術在目標檢測上的重大進步主要在于其強大的特征提取能力,它的多層特征提取不但速度快,并且有利于揭示出目標類別之間的根本性特征差異,增加圖像分類的準確性,同時滿足了目標檢測任務的準確性和時效性要求。
目前,基于深度學習發展出現的目標檢測方法主要分為兩大類。第一類目標檢測方法是基于區域提名的方法,包括 R-CNN[1~3]、SPP-net[4~5]、Fast R-CNN[6~7]、Faster R-CNN[8~9]、R-FCN[10~11]等。第二類目標檢測方法是無需區域提名的一種端到端(End-to-End)的目標檢測算法,包括 YOLO[12~13]、SSD[14~15]等單次檢測器。這些端到端的目標檢測算法使用了回歸的思想,即給定輸入圖像,直接在圖像的多個位置上回歸出這個位置的目標邊框以及目標類別。曹詩雨[16]等針對傳統車輛目標檢測問題中需要不同圖像場景選擇適合特征這一問題,提出了一種基于快速區域卷積神經網絡(Fast R-CNN)的場景圖像車輛目標檢測方法,避免傳統車輛目標檢測中需要設計手工特征的問題,但是該模型的缺點是訓練時間長、預測時間長、實效性不強。龔靜[17]等提出基于YOLOv2的車輛實時檢測算法,采用小批量梯度下降法和沖量更新參數以及使用多尺度圖像輸入進行模型訓練,以提高檢測速度和準確度,但實驗結果卻表明該模型的召回率較低。Yang[18]等在RPN網絡和分類器上利用Focal Loss Function代替傳統交叉熵損失函數和使用跳躍鏈接來改進Faster R-CNN網絡,用來檢測航空圖像的車輛目標,但實驗結果表明該模型存在漏檢、誤檢率較高和F1分數較低的問題。姜尚潔[19]等利用無人機視頻數據制作訓練數據集,采用YOLOv2網絡進行航拍圖像的車輛目標檢測,利用目標框決策融合方法和目標框位置優化策略來改進實驗,實驗每幀視頻的預測時間為0.0469 s,但是虛警率為8.13%,漏檢率為7.9%,準確率為85.9%,錯誤率高達14.1%。王雪[20]等通過訓練區域卷積神經網絡用于遙感影像的車輛檢測,單張圖像處理時間為0.05 s,準確率為88%,誤檢率為1%,其準確率仍舊不高。
針對使用改進的YOLO、Faster R-CNN等網絡漏檢率、誤檢率較高的問題,本文利用基于GoogLeNet設計的DetectNet網絡進行航空圖像目標檢測,從處理粘結樣本、改進網絡結構和制定遷移學習策略這三個方面對DetectNet網絡改進并實驗。實驗結果證明改進效果明顯,得到了精度高、泛化能力強的目標檢測模型,對于檢測被建筑物或樹木遮擋的車輛目標依然具有非常高的準確率。
DetectNet網絡是NVIDIA研發團隊以GoogLeNet模型的全卷積結構為骨干網絡設計的一個用于人臉、行人和車輛等通用目標檢測的深度神經網絡。本文對其進行改進,用來實施對航空圖像中各型車輛目標的檢測。同其它目標檢測器類似,DetectNet模型卷積層學習到的特征將會被傳遞到分類器或回歸器,分別通過1×1的卷積核獲得1個輸出量和4個輸出量,用于預測目標類別和邊界框坐標。為了說明DetectNet網絡的檢測原理,假設訓練圖像的尺寸為1024×1024像素。
對于損失函數,該模型通過L1和L2損失函數的線性組合來計算總損失。L1損失函數如式(1)所示,其中N表示圖像總數,X1t、Y1t、X2t、Y2t表示目標真實邊界框的左上角點和右下角點的坐標,X1p、Y1p、X2p、Y2p表示預測邊界框的左上角點和右下角點的坐標。

L2損失函數如式(2)所示,其中N表示圖像總數,Sit表示第i張圖像的真實目標區域,Sip表示DetectNet網絡預測第i張圖像得到的目標區域,該損失值本質上是歐幾里得距離(Euclidean Distance,ED)。

DetectNet的訓練與驗證過程如圖1所示。在訓練階段,輸入層對輸入的圖像和標簽數據以一種在線擴充的方式進行數據增強,然后通過GoogLeNet全卷積部分進行特征提取,用于目標類別和邊界框的預測,最后通過L1和L2損失函數的線性組合來計算模型的總損失,進行模型優化。在驗證階段,圖像通過GoogLeNet全卷積后得到目標區域和邊界框,根據邊界框重疊閾值對不合理的邊界框進行過濾,再根據最終的預測邊界框和目標的真實邊界框來計算mAP值,用于評價模型的平均檢測精度。
在數據集制作方面,將訓練圖像尺寸分別放大至原圖像的2~5倍來尋找最適合DetectNet網絡檢測的目標尺寸(DetectNet網絡對目標的最佳檢測區間約為50×50像素至400×400像素)。此外,對于在裁剪、制作訓練數據集時產生的邊界樣本,采取對其進行不完全標注的方法,來提高訓練樣本的質量。由于本文的實驗是針對高空航拍圖像中的車輛(屬于小目標檢測),如果邊界樣本不進行標注,車輛密集區域將有大量的邊界樣本被忽略掉,模型將會把這些邊界樣本當作圖像的背景來訓練,這在小訓練樣本訓練誤差中是有一定影響的。邊界樣本的特點如圖2的黃色邊界框所示。

圖1 DetectNet的訓練與驗證

圖2 邊界樣本示意圖
在網絡結構的改進方面,用兩個3×3的串聯卷積結構代替單個5×5的卷積結構。使用兩個3×3串聯卷積結構與單個5×5卷積結構的作用是等價的,但前者在參數數量上較后者減少了28%,并且網絡更深,提高了模型的特征提取能力,可獲取更精準的分類和定位效果。同時,使用批歸一化(BN)層代替局部響應歸一化(LRN)層,加速模型收斂速度并抑制小樣本訓練過程中的過擬合現象。
在訓練策略方面,根據訓練圖像的尺寸、計算機的運行內存和顯存大小,設定批大小為2,batch accumulation為5(其作用是等價于設定批大小為10)來提高GPU的利用率,同時也能夠發揮Batch Normalization層抑制過擬合的效果,在訓練和收斂速度上達到最佳效果。學習率設為0.0001并隨著訓練過程持續進行指數遞減,防止在整個訓練過程中因為學習率過大而破壞網絡提取到的特征。利用GoogLeNet模型作為預訓練模型來遷移訓練原始的DetectNet網絡,訓練之后的模型將作為另一預訓練模型,然后利用該模型對改進網絡結構之后的DetectNet網絡進一步微調,每完成一個epoch保存對應的Caffe模型以便選取效果最佳的目標檢測模型。
本文基于DetectNet網絡的目標檢測模型通過Caffe[21]框架進行訓練。軟件方面,本實驗使用的操作系統版本為64位Ubuntu 16.04 LTS的Linux操作系統。本實驗使用的開發平臺是由NVIDIA公司發布的深度學習GPU訓練系統(DIGITS)。硬件方面,主要的機器硬件配置為六核十二線程的英特爾酷睿i7-8750H CPU,顯存為6G的 NVIDIA Ge-Force GTX 1060 GPU,運行內存為16G。
本實驗使用的航空遙感數據集為DLR 3K Munich Vehicle Aerial Image Dataset。該數據集共包括20張原始圖像,標簽文件包含了各類車輛的位置、長度和寬度。按照DetectNet網絡的數據預處理的要求,本實驗數據格式設定為
Car 0 0 0 112.42 175.76 165.54 212.32 0 0 0 0 0 0 0
其中Car表示目標的類型(即車輛目標),112.42、175.76、165.54、212.32分別為目標邊界框的左上角點和右下角點在圖像中的橫坐標與縱坐標,0在本實驗中無實際意義。
對于實驗數據集的劃分,根據機器學習對數據集的劃分準則,每一組實驗按照6:2:2的比例將數據集的所有圖像劃分成訓練集(Training Set)、驗證集(Validation Set)和測試集(Test Set)。
3.3.1 改進網絡結構后的實驗結果分析
表1是使用不同放大倍數的圖像訓練Detect-Net網絡和單獨訓練YOLOv3模型所獲得的實驗結果。
表1中,RR表示車輛目標的召回率,PR表示車輛目標預測的精確率,mAP表示車輛目標的平均檢測精度。F1Score作為模型綜合評價指標,其計算方法可表示為式(3)。

表1的實驗結果表明,訓練圖像未放大時,模型召回率和平均檢測精度較低;訓練圖像在放大2倍時,模型獲得了最高的召回率、平均檢測精度和F1Score,說明此時車輛目標的尺寸達到了Detect-Net網絡的敏感檢測尺寸,更有利于檢測車輛;訓練圖像被放大3倍時,模型的預測率和召回率同放大2倍時相比有所降低;訓練圖像被放大4倍時,模型的平均檢測精度開始明顯下降;當訓練圖像被放大5倍時,模型召回率非常低,平均檢測精度已經低于10%,表明此時模型基本不具備車輛目標檢測能力。YOLOv3模型對車輛的預測率最高,但召回率較低。

表1 不同放大比例的圖像實驗結果
3.3.2 改進網絡結構后的實驗結果分析
將訓練圖像放大2倍后,已取得較好的檢測效果,為了進一步提高mAP值,本文采用兩個3×3的串聯卷積結構代替單個5×5的卷積結構,改進網絡結構后模型的mAP指標由56.4%提高到66.4%。網絡結構改進前后的檢測效果如圖3所示,改進網絡結構后的模型的誤檢率低,對密集區域中車輛目標的預測更加準確。

圖3 網絡結構改進前后的檢測結果
3.3.3 改進模型的時效性分析
評價一個目標檢測模型的綜合性能,除了目標檢測的精確度,還有一項重要的評價指標——時效性。表2列出本文方法在DLR 3K Munich Vehicle Aerial Image Dataset上的單張圖像預測時間和目前常用的4種目標檢測算法[23]在COCO數據集上的單張圖像預測時間。除了本文的算法之外,其他算法的單張圖像預測時間均是在NVIDIA TITAN X顯卡上測試得到。

表2 不同目標檢測方法的單張圖像預測時間
本實驗在NVIDIA GeForce GTX 1060顯卡上,通過對100張320×320像素測試圖像的預測時間的總和求平均值,得到單張圖像的預測時間。DetecNet模型對單張尺寸為320×320像素的測試圖像的預測時間為0.101秒,預測速度達到了令人滿意的結果,在高級別顯卡上將可實現視頻的實時檢測。SSD網絡和R-FCN網絡在TITAN X顯卡上的測試時間與DetecNet模型相比,分別少0.05秒和0.016秒。YOLOv3檢測速度最快,在NVIDIA Ge-Force GTX 1060顯卡上,單張320×320像素的測試圖像的檢測時間僅為0.042秒,在TITAN X顯卡上的測試時間更是達到了0.022秒。此外,DetecNet模型對單張尺寸為1024×1024像素的測試圖像的預測時間為0.412秒。
針對應用YOLOv2、Faster R-CNN等方法進行航空圖像目標檢測時漏檢及誤檢現象比較嚴重等實際問題,本文提出利用基于全卷積結構設計的DetectNet網絡進行航空圖像車輛目標檢測,從合理標注邊界樣本上提高訓練數據集的質量、利用兩個3×3的串聯卷積結構代替單個5×5的卷積結構來改進網絡結構和制定合理的訓練策略這三個方面對DetectNet網絡進行模型改進。實驗結果證明了改進方案的合理性,其中最佳DetectNet檢測模型的mAP值為66.4%,單張1024×1024像素的圖像和320×320像素的圖像在NVIDIA GeForce GTX 1060顯卡上的預測時間分別為0.412秒和0.101秒。改進的實驗模型對于尺寸較小或被樹木建筑等遮擋的車輛目標,仍能達到較高的檢測精度。文中的實驗模型仍然存在進一步改進的空間,例如采用特征提取能力更強的骨干網絡、利用TensorRT等推理加速器的結構優化功能來加速模型的推理速度等,都可以作為未來的研究方向。