趙同祥,張瑞全,高樹靜,牛志剛
(青島科技大學信息科學技術學院,山東青島 266061)
隨著我國在衛星和遙感成像技術領域的飛速發展,光學遙感圖像的信息量和準確度踏上了更高的臺階。近年來卷積神經網絡廣泛應用于遙感目標檢測領域,在檢測精度不斷提高的同時,由于不斷增加網絡模型深度,導致算法模型計算量大、檢測速度慢、資源消耗大,不利于目標檢測模型在終端設備上的移植。
在遙感目標檢測中,遙感圖像往往場景多變、特征不明顯,Xu D 等[1-9]針對遙感目標分布密集、背景復雜等問題,對特征提取網絡進行了重新設計,均有效提高了模型在復雜環境背景下目標檢測的性能,但隨著算法檢測性能的不斷提高,其模型參數以及計算量的大幅增加,限制了向硬件資源有限的設備上的移植。高凡等[10-13]在YOLOv3[14]的基礎上進行了改進,利用輕量化網絡MobileNet 代替DarkNet53,減小了模型的規模和計算量。但隨著網絡模型規模的縮減,算法模型對目標特征的利用率下降,造成了檢測精度不同程度的降低。
如果能夠獲得參數量相對較少且性能較為良好的YOLOv5 網絡,這將極大地降低向存儲與運算能力有限的設備移植的限制。故改進算法在YOLOv5基礎上結合DenseNe(t密集網絡)的特點,將主干網絡部分改進的CSP 模塊進行雙密集連接,模型結構如圖1 所示;用于目標檢測的錨框(anchor)采用K-means++重新聚類以加快網絡收斂;為了適應改進網絡快速目標檢測的需求,將網絡中CBL 模塊的Leaky RelU 激活函數替換成H-swish 激活函數,達到了速度與精度之間的平衡。

圖1 DN-YOLOv5網絡結構圖
由于YOLOv5 代碼中用于自適應錨框計算的K-means 算法存在一定的局限性,其對K個初始點的選擇十分敏感,選擇的K個初始點對最后的聚類結果和運行時間都有很大的影響。因此將K-means聚類算法改進為適合于YOLOv5 的K-means++算法。該聚類算法的距離度量函數由使用歐氏距離進行分簇改進為IOU 作為衡量標準進行分簇,由一次性選擇K個初始點改進為逐個初始點輸入計算,減小原始聚類算法一次性選擇K個初始點對結果的影響程度。通過K-means++聚類算法計算輸出不同大小、不同數量的預測框,盡可能提高預測框與GT 框匹配度,縮短訓練時間。
使用K-means++算法對數據集中的目標邊框大小重新聚類,當錨框聚類數目在1~9 個時,avg_iou 大體呈上升趨勢,聚類數目在9 個之后,avg_iou 增長逐漸放緩。因此在權衡了計算效率與準確率后,選擇了9 個不同尺度的錨框分到三種尺度不等的預測分支上,如表1 所示。

表1 三種尺度的錨框
YOLOv5 引入了CSP1_X[15]和CSP2_X 結構,其 中CSP1_X 應用于Backbone 主干網絡,由于主干網絡較深,增加Resuni(t殘差結構)可以增加層與層反向傳播的梯度值,以緩解網絡較深帶來的梯度消失問題。在進一步權衡檢測精度和速度后,降低模型大小,該文將CSP1_X 結構進行調整,將原來一個分支上的卷積操作去除,從原先的雙分支結構重新設計為單分支結構,以減少卷積操作產生的參數量從而降低模型大小,如圖2 所示。

圖2 基于YOLOv5的CSP1_X模塊更改方案示意圖
由于主干網絡中改進的CSP 模塊數量較少,采用密集連接優勢不明顯,特征信息無法充分的復用,因此通過增加CSP1_X 模塊、采用密集連接的方式,充分發揮密集連接的優勢,在加強特征學習能力的同時根據DenseNet[16]自身的優勢避免大量參數的產生。另外,由于參數減少,密集連接具有正則化的效果,有利于抑制過擬合現象。改進算法的主干網絡部分采用DenseNet 密集連接的思想,每一個卷積層的輸入來自于之前卷積層的輸出,即創建從early layers 到later layers 的短路徑,這種緊密的連接方式,每層相當于直接連接了輸入和損失函數,緩解了輸入特征與梯度信息在較深的網絡中傳播而產生的梯度消失現象,使得有效的特征在密集連接的模塊之間傳輸時得以最大程度保留。
文中采用了雙密集連接,即對前兩層的CSP 結構分別進行了密集連接,后面的CSP 結構都有來自前兩層的短路徑,一方面加強對淺層小目標的提取和復用,少量的卷積核生成大量的特征,最終模型由原先的90.9 MB 壓縮為48.0 MB;另一方面避免了所有層之間密集連接造成參數增多的問題,主干網絡部分的密集連接如圖3 所示,替換原始模型的Backbone 后如圖1 所示。

圖3 DN-YOLOv5之Backbone部分改進方案示意
為了加快網絡檢測速度,該文將網絡中的Leaky RelU 激活函數改進為H-swish[17]激活函數,減少對內存的訪問次數,降低延遲。
Swish 激活函數公式如式(1)所示:
其中,1/(1+e-x)就是Sigmoid 函數。當網絡較淺時,Swish 只稍微優于Leaky ReLU 激活函數,但當網絡較深時,使用Swish 激活函數的測試準確度遠高于使用Leaky ReLU 激活函數。這主要得益于Swish 無上界有下界、非單調且平滑的特性。雖然Swish 顯著提高了神經網絡的準確性,但是在嵌入式環境中,其成本是非零的,因為在移動設備上計算Sigmoid 函數需要較大的代價。該實驗鑒于降低成本的考慮,將CBL 模塊的激活函數由Leaky ReLU 替換為Hswish,其公式如式(2)所示:
其中,ReLU6 是普通的ReLU 非線性激活函數,但是其限制最大輸出為6。Swish 與H-swish 有著很好的匹配,而且在精度上無明顯的差異。從部署角度來看,H-swish 有著明顯的優勢:第一,幾乎所有軟硬件框架都可以使用ReLU6 實現;第二,它消除了因為Sigmoid 問題引發的數值精度損失;第三,H-swish是一個分段函數,減少了對內存的訪問次數,從而降低了延遲。
實驗選用DIOR 遙感數據集[18]中4 234 張含有飛機、艦船、儲罐、車輛等十類目標的遙感圖像進行訓練和測試,按照8∶1∶1 劃分為訓練集、驗證集和測試集。
實驗采用精確率(Precision)、召回率(Recall)、平均精準度AP (Average Precision)、均值平均精度mAP(mean Average Precision)作為評價指標與原始模型測試結果進行對比。
該實驗網絡模型訓練參數設置如下:圖像尺寸(img_size)調整為640×640,初始學習率為0.01,訓練迭代數(epoch)為500,batch_size 為4,權重衰減系數(weight_decay)為0.000 5,學習率動量(momen-tum)為0.937。
原始模型與改進模型的精確度(Precision)和召回率(Recall)曲線分別如圖4(a)、(b)所示。原始模型的召回率在epoch 為100 到500 區間內維持在85%上下且波動幅度不大,改進模型的召回率也較好地維持在85%較小的波動范圍內。原始模型的精確率在迭代500 輪時穩定在76.03%左右,改進模型的精確率在迭代500 輪時穩定在74.17%左右。

圖4 原始模型和改進模型的召回率(Recall)與精確度(Precision)曲線圖
根據上述參數設置對模型進行訓練,如圖5 所示,改進模型與原始模型的訓練集總損失曲線大體趨于相似,YOLOv5 原始算法初始Loss 為0.238 4,改進算法初始Loss 為0.239 6,二者Loss 整體呈下降趨勢;當epoch等于100時,原始算法的Loss為0.080 48,改進算 法的Loss 為0.071 61;最后epoch 在500 左右時,原始算法的Loss 穩定在0.031 左右,改進算法的Loss 穩定在0.038 左右。由于改進模型加入了雙密集連接,通過K-means++重新聚類錨框使得預測框與GT 框具有更高的匹配度,因此最終的Loss 損失值也十分接近于原始算法最終的Loss。

圖5 訓練集總損失曲線
為了驗證提出的改進算法具有更好的檢測效果,在相同實驗配置的環境下,采用相同的數據集,對原始模型與改進后的模型進行對比實驗。由表2可以看出,DN-YOLOv5 相比較于原始YOLOv5 模型,大小由90.9 MB 縮減為48.0 MB,減小了約47.2%;推理時延由55.2 ms 縮減為33.8 ms,推理加速了約39%;參數量減少了約65%,計算量下降了約68.7%。相較于現階段的主流檢測算法,DN-YOLOv5 具有良好的性能,在縮減了模型大小后,檢測速度與精度之間取得了良好的平衡。原始模型與改進算法的各物體目標的AP 值如表3 所示。

表2 模型推理比較

表3 各物體目標的AP值
文中提出了一種基于DN-YOLOv5 的快速遙感目標檢測方法,對原始主干網絡部分的CSP1_X 模塊進行輕量化的改進,鑒于密集網絡具有加強特征復用、參數少的優點,在主干網絡部分進行了雙密集連接,并適當地增加了CSP1_X 模塊的數量以適應密集連接;為了提高預測框與GT 框的匹配度,加快收斂,提高檢測精度,該實驗采用K-means++聚類算法對錨框重新聚類優化;并將算法中的Leaky ReLU 激活函數改進為H-swish 激活函數,進一步了提高檢測速度。
實驗結果表明,壓縮后的模型均值平均檢測精度(mAP)僅下降1.05%,模型體積卻減少了47.2%,幀率(FPS)提高了57.44%。新的模型體積小、效率高,提高了對移動端等硬件資源有限設備的適應性。經過改進的算法,依然具有壓縮模型和提升檢測速率的空間,仍需進一步的研究改進。