雷 亮 梁明輝 尹衍偉 李小兵 和圓圓 秦蘭瑤
(重慶科技學院 智能技術與工程學院,重慶 401331)
近年來隨著人工智能技術的不斷發(fā)展,基于計算機視覺的目標檢測方法在無人駕駛、工業(yè)制造、智慧醫(yī)療等領域得到了廣泛應用,并產(chǎn)生了巨大的商業(yè)價值。無人機(UAV)是一種用無線電遙控的小型不載人飛機,具有靈活、快速、經(jīng)濟等特點,常用于安防、交通、農(nóng)業(yè)等領域[1]。無人機搭載目標檢測技術成為當前國內(nèi)外學者的研究重點,但無人機拍攝的角度和高度不固定以及機體姿態(tài)變化大,這給無人機圖像的目標檢測造成了極大的挑戰(zhàn)。
目前學術界已出現(xiàn)許多成熟的目標檢測算法,如 YOLO[2]、SSD[3]等。但基于遙感圖像的目標檢測起步較晚,早期的算法主要基于先驗知識進行特定目標檢測。Lowe、Sirmacek等人通過采用SIFT特征提取建筑物模板來進行城市建筑物檢測[4-5]。Niu等人使用幾何形變模型提取高速公路輪廓并進行車輛檢測,但只針對特定目標設計算法,在無人機遙感圖像的目標檢測中存在明顯的局限性[6]。近年來隨著機器學習技術的發(fā)展,出現(xiàn)了基于傳統(tǒng)機器學習的檢測方法。Tao等人通過提取圖像的 SIFT 特征來進行遙感飛機檢測[7]。Freund、Aytekin等人采用AdaBoost算法識別機場跑道,并根據(jù)跑道位置定位機場位置,但通常無法達到很好的效果[8-9]。如今,基于卷積網(wǎng)絡的檢測方法成為應用最廣泛的方式。Tang等人將R-CNN算法引入遙感領域并取得了不錯的效果[10]。Yang等人將One-Stage算法應用于遙感目標檢測,但其對微小目標的檢測能力較差[11]。
為了提升算法對遙感圖像中微小目標的檢測能力,本次研究基于YOLOv3算法,將公開數(shù)據(jù)集VisDrone2019[12]中的行人和車輛作為訓練和檢測的目標,調整訓練策略,進行針對性訓練。針對遙感圖像中小目標數(shù)量多、正負樣本比例失衡等問題,通過修改損失函數(shù)的權重來平衡正負樣本的數(shù)量;針對遙感圖像中目標尺度變化大等問題,通過加入多尺度訓練來提高對同一目標尺度變化的檢測能力;針對標簽之間的相關性,通過引入標簽平滑策略來提高模型的泛化能力。在VisDrone2019公開數(shù)據(jù)集中進行的實驗結果表明,該算法具備較好的檢測性能,基本能夠對遙感圖像進行實時準確的目標檢測。
YOLOv3是經(jīng)典的One-Stage目標檢測模型,采用Darknet53作為主干網(wǎng)絡(見圖1)。
圖1 YOLOv3網(wǎng)絡結構
Darknet53網(wǎng)絡由5個殘差模塊構成,每個殘差模塊由數(shù)量不等的殘差單元組成,2個 DBL 單元進行殘差連接構成基本的殘差單元(見圖2a)。其中,每個 DBL 單元由1個1×1或3×3的卷積層、歸一化層和 Leaky ReLU激活函數(shù)組成(見圖2b)。使用殘差模塊能夠在加深神經(jīng)網(wǎng)絡深度的同時有效防止信息丟失和梯度消失。Darknet53網(wǎng)絡使用5個步長為2的卷積層來縮小特征圖尺寸,并輸出最后 3個不同尺寸的特征圖進行檢測。
圖2 Darknet53網(wǎng)絡結構
設計并訓練模型后,需要通過驗證集來衡量模型的效果。模型的準確率除了與其自身有關外,還與訓練過程中的參數(shù)密切相關。好的訓練策略會大大提高模型的檢測精度。
常見的訓練策略包括:(1)訓練過程中的梯度優(yōu)化,如梯度裁剪[13]、正則化等;(2)模型學習率的優(yōu)化,如熱啟動、學習率衰減策略等;(3)模型輸入數(shù)據(jù)的優(yōu)化,如標簽平滑、多尺度訓練等[14]。
不同的模型需要不同的訓練策略,不合適的訓練策略不僅會使模型變得臃腫進而影響推理速度,而且會降低模型的檢測精度。因此,不同應用場景的模型需要不同的訓練策略[15]。
針對數(shù)據(jù)集中的小框與大框數(shù)量差距大等問題,修改YOLOv3損失函數(shù)中的坐標損失權重,以減少正負樣本不平衡帶來的影響。修改后的損失函數(shù)包括3個部分:坐標損失Lbox、置信度損失Lconf和分類損失Lcls。
損失函數(shù)L的計算公式如式(1)所示:
L=1.5(2.0-twth)Lbox+Lconf+Lcls
(1)
式中:tw——真實邊框的寬度;
th——真實邊框的高度。
坐標損失Lbox的計算公式如式(2)所示:
Lbox=Lxy+Lwh
(2)
式中:Lxy——中心坐標損失;
Lwh——寬高坐標損失。
中心坐標損失Lxy的計算公式如式(3)所示:
(3)
寬高坐標損失Lwh的計算公式如式(4)所示:
(4)
置信度損失Lconf的計算公式如式(5)所示:
(5)
分類損失Lcls的計算公式如式(6)所示:
(6)
通常情況下,機器學習的數(shù)據(jù)集中存在一些錯誤的標簽,而這些標簽會直接影響預測結果。本次研究加入標簽平滑策略,使神經(jīng)網(wǎng)絡不會“過于相信”某個標簽。標簽平滑是一種對分類器層進行正則化的機制,稱為標簽平滑正則化(LSR)。加入標簽平滑機制后,標簽取0~1的一個概率。
對于標簽yk,標簽平滑計算公式如式(7)所示:
(7)
c——權重;
μk——均勻分布變量。
在VISDrone2019數(shù)據(jù)集中,有95%是中小目標,且由于無人機拍攝位置不固定,同一目標在不同圖像中的尺度也不盡相同,這對模型檢測物體大小的魯棒性提出了更高的要求。當基礎網(wǎng)絡生成的特征圖比原圖小數(shù)十倍時,會嚴重損失小目標的特征信息,使其不易被檢測到;而當輸入圖像的尺寸變大時,特征信息保留的更多,但也會影響模型的推理速度。因此,可以引入多尺度訓練來平衡兩者之間的關系。多尺度訓練是提升精度最有效的方法之一。
多尺度訓練流程如圖3所示。本次研究在訓練過程中設定了{512,608,640,672,704,736,768,800}等8種尺度的圖像。在每個Batch的所有圖像進行訓練之前,隨機選擇1個尺度的圖像輸入模型。
圖3 多尺度訓練流程
操作系統(tǒng)為Ubuntu 18.04,深度學習框架為PaddlePaddle 2.1.2,CPU為4核,內(nèi)存為32 GiB,GPU為NVIDIA Tesla V100。
VISDrone2019是2019年ICCV研討會目標檢測挑戰(zhàn)賽提供的一個大型無人機捕獲數(shù)據(jù)集,包括10 209張圖像(7 019張用于訓練,1 610張用于驗證,1 580張用于測試),其中包含了大量的注釋信息。以訓練集為例,共包含349 163條注釋信息,平均每張圖片包含50條注釋信息。無人機拍攝的數(shù)據(jù)集中,行人和車輛等物體的標注框非常小,其中,小目標物體占61%,中目標物體占34%,大目標物體僅占5%。該數(shù)據(jù)集在多種場景下,跨越多個城市,包括晴天、陰天、白天、燈光條件不同的夜晚等情況。數(shù)據(jù)集主要檢測9個類別(見表1),不同情況下的樣本圖像如圖4所示。
表1 數(shù)據(jù)集主要檢測類別信息
圖4 數(shù)據(jù)集中不同環(huán)境下的樣本圖像
本次研究主要針對中小目標進行檢測,YOLOv3算法的錨框并不適用。因此,采用K-means聚類方法預先設定輸入網(wǎng)絡圖像大小為800×800,生成9個適用于VISDrone2019數(shù)據(jù)集的錨框:[7,14]、[11,30]、[21,20]、[19,50]、[37,34]、[36,81]、[64,55]、[79,115]、[146,168]。
分別對原YOLOv3算法和改進YOLOv3算法進行訓練,均使用Momentum優(yōu)化器,設定動量因子為0.9,加入L2權重衰減正則化,以防止過擬合,正則化系數(shù)為0.000 5。訓練階段,初始學習率為2×10-4,訓練輪數(shù)為300 epoch,每5個epoch評估 1次,學習率衰減系數(shù)為0.1,在第240 epoch和270 epoch時將學習率衰減為2×10-5和2×10-6;設置梯度裁剪策略,系數(shù)為0.1。訓練開始時設置Warm Up,在第4 000 steps時使學習率上升為2×10-4;隨機使用隨機裁剪、圖像翻轉、歸一化、隨機填充等操作對每幅圖像進行處理;原YOLOv3算法的輸入圖像尺寸為608,改進YOLOv3算法采用多尺度訓練,尺寸為{512,608,640,672,704,736,768,800}。
準確率(p)是指預測出的所有目標中正確的比例,計算公式如式(8)所示:
(8)
式中:NT——正確檢測出的目標數(shù)量;
NF——錯誤檢測出的目標數(shù)量。
本次研究主要涉及p、p50、p75等3個指標。其中,p是指在IoU為0.50~0.95、步長為0.05設置下的平均準確率;p50是指在IoU為0.50設置下的平均準確率;p75是指嚴格模式下的平均準確率。
召回率(r)是指被正確識別的目標占總目標數(shù)的比例,計算公式如式(9)所示:
(9)
式中:N0——沒有檢測出的目標數(shù)量;
r——IoU為0.50~0.95、步長為0.05下進行測試的召回率。
準確率變化曲線如圖5所示,模型在第50 epoch時開始逐漸收斂,準確率為19.9%。
圖5 準確率變化曲線
改進YOLOv3算法測試結果如圖6所示。由圖6 可知,改進YOLOv3算法在晴天、陰天及逆光條件下的傍晚和光照不充足的夜晚都可以達到較好的檢測效果,除一些極小目標和姿態(tài)嚴重變形的行人未能檢測到。
圖6 改進YOLOv3算法測試結果
原YOLOv3算法與改進YOLOv3算法結果對比如表2所示。由表2可知,改進算法的p、p50、p75分別為19.9%、37.8%、19.0%,相較于原算法分別提高了7.2%、13.5%、6.6%。另外,改進算法對中小目標檢測的準確率也有所提高,說明修改損失函數(shù)和加入訓練策略有效。
表2 算法結果對比 %
本次研究在深入了解YOLOv3算法的基礎上,對于遙感圖像中的目標檢測問題提出了具有針對性的優(yōu)化策略,通過加入多尺度訓練和標簽平滑策略來提高模型的特征提取能力和泛化能力,修改損失函數(shù)來平衡遙感圖像中的小目標數(shù)量過多等問題。訓練結果表明,改進YOLOv3算法的準確率和召回率都有顯著提高;同時,能夠基本實現(xiàn)多種復雜天氣環(huán)境下遙感圖像中的微小目標檢測。但該算法對極小目標和形變較大目標的檢測能力仍然不足,存在漏檢、誤檢等現(xiàn)象,還需針對網(wǎng)絡特征提取結果作進一步優(yōu)化。