舒 軍,吳 柯
(湖北工業大學電氣與電子工程學院,湖北 武漢 430068)
隨著傳感器技術、深度學習和圖像處理技術的發展,航空攝影被廣泛地應用于救援追蹤、生態研究、軍事領域等方面。航空攝影圖像的分辨率大小通常超過4096×2160,而待測目標在其中的像素可小至16×10,在這樣大范圍的超高清分辨率[1]圖像中檢測識別出微小像素目標,特別是實時定位這些目標對象,仍然是一項艱巨的挑戰。
目前基于深度學習的圖像實時檢測分類算法模型主要使用SSD[2]、YOLO[3]、SqueezeDet[4]等算法框架;其中YOLOv3實時檢測識別框架[5]由Redmon,Joseph和Farhadi于2018年提出,其識別速度快,檢測精準度高,并能同時檢測多尺度分辨率的目標,適用于同一鏡頭的多目標識別領域。但該方法直接用來檢測航拍圖像中的小分辨率目標時會出現遮擋漏檢情況,對密集群體的檢測效果亦不甚良好,需要對YOLOv3算法進行改進以適應航拍圖像中的目標檢測。
YOLO(You Only Look Once)模型是第一個端到端(End-to-End)的深度學習檢測算法,其借鑒了GoogleNet[6]分類網絡結構,提取特征的過程只需要一次前向運算,并同時進行訓練和檢測,因此以檢測速度見長。YOLOv2[7]使用了VGGNet[8]的網絡結構,又稱YOLO9000,能滿足9000多種不同類別目標的快速檢測。YOLOv3借鑒了ResNet殘差網絡[9]結構,并加入了FPN[10](Feature Pyramid Networks)網絡結構,在前兩代的基礎上提升了精準度,同時保證了檢測速度。
YOLOv3模型的骨干框架使用53層卷積的殘差網絡結構,故YOLOv3神經網絡又被稱為DarkNet-53,其由一系列的3×3和1×1的卷積層組成,其中包含23個殘差模塊和檢測通道的全連接層。除訓練框架外YOLOv3還劃分三種不同柵格大小的特征檢測通道,包括52×52、26×26、13×13柵格大小的特征圖,分別對應小、中、大尺度特征的圖像檢測,因此網絡在訓練時保留了小型目標的像素特征信息,對小物體的檢測效果良好。
本文使用DOTA-v1.0數據集[11],其為武漢大學遙感國重實驗室與華中科技大學電信學院聯合制作的大型遙感開源數據集,其內包含2806張遙感圖像,分辨率800×800至4000×4000不等,共15種類別,包含了小型汽車、飛機、足球場等尺度跨越大的目標對象,因此該數據集適合作為航拍目標識別的實驗研究對象。
在使用深度學習方法對傳統目標進行訓練檢測時,其圖像的分辨率大小通常只有數百,目標在圖像中所占的比例大于10%,且同一副圖像中存在不同種類目標的數量較少;而航拍圖像在進行訓練檢測時區別較大,需要考慮其以下幾個特點。
1)超高清分辨率:原始圖像像素分辨率太大,圖像按原始尺寸輸入神經網絡造成內存不足,壓縮輸入后又導致圖像中小目標像素特征的丟失;
2)旋轉不變性:實際高空拍攝的目標包含了各個方向的朝向,但訓練的樣本圖像只包含了某部分的朝向;
3)樣本數量少:該類圖像樣本數量相對少,且一幅圖像中可能同時包含幾十上百個待測目標對象,在訓練過程中容易發生過擬合現象。
在對航拍數據集進行訓練前,需要考慮以上因素來對深度學習算法進行改進。
由于航拍圖像數據集與傳統的圖像數據集差別較大,其包含的小型和中型目標多而大型目標少,一副樣本圖像包含的范圍大,即使待測目標是一個足球場,相對整張圖片所占的比例也不超過20%,因此使用原YOLOv3網絡結構將特征圖大小劃分為52×52、26×26、13×13顯然已經不合適。
本研究劃分特征圖大小為104×104、52×52、26×26,加入了劃分更加細微的特征信息,同時刪減了大型尺度的特征。改進后的網絡整體結構如圖1,其中共包含24個殘差模塊,在淺層網絡中增加了卷積層和殘差連接結構的數量,這樣可以提升更深層網絡特征的細粒度,然后從此后部分更深層的網絡中,提取三種不同尺度的特征信息分別輸入檢測通道,深層網絡的檢測通道向淺層進行上采樣,以豐富淺層的特征信息,來提升小型目標的檢測精準度。

圖1 改進后YOLOv3網絡的整體結構
本研究在訓練DOTA-v1.0數據集前,使用K-means++[12]對DOTA-v1.0樣本圖片進行聚類,設置適合其數據集的9個大小不一的先驗框,神經網絡在訓練階段會優先使用這9個先驗框去匹配圖像中的目標,從而快速找到目標以提取像素特征信息。因此能夠提升訓練速度,縮短達到擬合的時間,聚類得到對應尺度的先驗框大小見表1。

表1 三種尺度的先驗框分辨率大小
由于改進YOLOv3使用了104×104、52×52、26×26柵格大小的特征輸入檢測通道,在訓練輸入的圖像分辨率為416×416的情況下,能夠檢測的目標最低分辨率為4×4(圖像尺寸除以柵格大小,即416/104),但對于DOTA-v1.0數據集中4000×4000分辨率的原始圖像,在以416×416分辨率輸入時,因其像素特征縮小10倍,已經無法檢測出原有的小目標,在訓練前使用一種滑窗裁剪策略,在輸入圖像前,將一張原始圖像滑窗裁剪為多張608×608分辨率的圖像,然后再經過416×416壓縮輸入,這種方法使得原始圖像中的像素特征信息得以盡可能地保留。
在滑窗裁剪時設置10%的重疊率,防止將其中的目標對象一分為二時導致像素特征信息被破壞。本實驗從DOTA-v1.0數據集中選取1869張帶目標標簽信息的圖像,裁剪后得到圖片19219張,其中4/5作為訓練集參與網絡訓練,1/5作為驗證集來分析分類檢測的效果。
本研究的實驗硬軟件環境:系統平臺為Ubuntu16.04,CPU為Intel Core i5-4590 ,GPU為GTX1080Ti,GPU加速為CUDA8.0 cuDNN6.0,編譯環境為gcc/g++5.0 OpenCV3.4.0,算法框架為改進YOLOv3-416。
在進行航拍模型訓練時,將訓練集中的原始圖像按416×416輸入,每批次訓練64張圖像,分16組輸入。每次輸入時生成±1.5倍飽和度和±1.5倍曝光量的樣本,以及±0.1比例色調的樣本,這些圖像會首先經過骨干訓練網絡,然后在多尺度訓練網絡繼續生成尺寸調整后的樣本,整體訓練流程見圖2。

圖2 模型訓練流程圖
對于訓練參數,設置最優化方法動量參數為0.9,權重衰減正則項為0.000 5,學習率0.001,迭代到45 000次時學習率降低10%,迭代到50 000次時學習率再降低10%,訓練時每1000次迭代保存一次模型,超過1000次迭代數后每10 000次保存一次模型。實驗首先迭代50 000次,后續在該基礎上繼續迭代30 000次,共迭代80 000次,總共訓練圖片5 120 000張。
訓練完畢后,從導出的log日志文件中提取關鍵詞信息,繪制出loss曲線以及IoU值統計圖像(圖3)。

(a)模型平均loss值走勢

(b)模型的IoU統計值圖3 模型的loss曲線和IoU曲線
從圖3a中可以看到,模型的loss值在前10 000次迭代中迅速降低到3左右,隨后逐漸平滑,穩定在2左右;而在迭代50 000次時loss值有明顯的起伏,這是由于實驗在進行到50 000次時暫停了訓練,后續又將這50 000次迭代模型作為初始權重模型繼續迭代了30 000次,故loss出現突然的起伏后迅速回到正常范圍,但后續的迭代過程loss值已經沒有下降的趨勢。整體來看,訓練模型迭代到80 000次時模型已經趨于穩定,最終loss值在2左右,表明模型的檢測性能良好。
從圖3b中可以看到,隨著迭代次數的增加,IoU的值逐漸達到0.6以上,并有大量值接近1.0,說明模型預測框與對象實際框的匹配度較高。
在使用改進YOLOv3網絡與原網絡進行對比時,都保留了相同的參數設置和預處理操作。在選取模型時,一般選取IoU及mAP值最高的權重模型作為對比,但訓練到80 000次時,這些指標的變化差異已經非常小,為了方便直觀地進行對比,都統一選取迭代80 000次的模型來進行對比,具體性能指標見表2。

表2 改進前后各項類別具體性能對比
從表2可以看到,兩種模型對飛機、船、網球場和港口的檢測性能較好,原因是這幾個類別的樣本數量相對較多;而小型汽車的樣本數量較多但檢測效果一般,原因是小型汽車的分辨率太小,在輸入原始圖像檢測時,一部分過小目標的像素特征變得不明顯,而大型汽車的分辨率稍大,故檢測效果比小型汽車更好。對于網球場,檢測性能基本沒有提升,這是由于網球場的分辨率本身就較大,即使將原圖壓縮后輸入訓練,提取的特征信息仍然比較完整。
整體來看,改進后的網絡對15種類別的目標都有較大提升,這是由于改進后網絡生成了更少的真實負樣本(FP)參與驗證,且樣本數量越多,檢測的準確率一般也會相應增加。

表3 改進前后綜合指標對比
從表3可以看到,改進后模型與改進前進行對比時,檢出率由64%提升到79%,提升了15.0%;召回率由66%提升至68%;F1分數提升了0.08;mAP-50從46.5%提升到57.0%,提升了10.5%;FPS由19.8提升至20.4。綜合上述,實驗證明了改進YOLOv3網絡模型對比原網絡擁有更好的實時檢測性能。
本文針對航拍目標識別提出了一種改進的YOLOv3算法,該方法加入104×104特征分辨率的檢測模塊并刪減了13×13特征分辨率的檢測模塊,同時增加了淺層網絡的層數,用于提取更加細微的像素特征;并針對DOTA-v1.0數據集樣本使用K-means++聚類,得到9個先驗框來參與模型訓練。實驗表明,改進后的YOLOv3檢測算法的檢出率提升了15.0%,mAP-50提升了10.5%,對于航拍圖像目標的實時檢測具有一定的參考意義。
由于原始航拍圖像分辨率太大,即使在訓練時保留了分辨率特征信息,但將整張圖片直接壓縮輸入后,難免會破壞原有分辨率特征,因此平均準確度不高;未來還應在保證實時檢測速度的情況下,對檢測時的圖像輸入模塊進行優化。