劉 濤,高一萌,柴 蕊,李政通
1.遼寧工程技術(shù)大學 軟件學院,遼寧省 葫蘆島 125105
2.遼寧工程技術(shù)大學 基礎教學部,遼寧省 葫蘆島 125105
目標檢測是計算機視覺中的一個重要分支,是深度學習的重要研究領域。在軍事、醫(yī)學影像、工業(yè)檢測、自動駕駛等方面存在廣泛的研究與應用價值[1-8]。一般來說,目標檢測是將感興趣的目標區(qū)域識別出來,生成錨框,完成目標定位和回歸的操作。目前,目標檢測主要分為兩種方法[9-11]:基于區(qū)域建議的兩階段(two-stage)目標檢測方法、基于回歸的一階段(one-stage)目標檢測方法。兩階段檢測方法首先對輸入圖像進行顯式的區(qū)域建議,找到感興趣的區(qū)域,再對特征進行提取、分類以及回歸操作,最后輸出結(jié)果。具有代表性的方法有:R-CNN[12]、Fast-RCNN[13]、Faster-RCNN[14]等。一階段檢測方法直接對輸入圖像進行特征提取,給出隱式的區(qū)域建議和回歸操作并輸出結(jié)果。具有代表性的方法有:SSD[15]、RetinaNet[16]、YOLO[17-20]系列等。一階段法減少了時間和空間的占用,速度有較大提升,但精度低于兩階段法。
隨著研究的不斷深入,大、中型目標的檢測方法基本上可以滿足各場景需求。但對無人機視角的小目標圖像檢測效果仍然不理想。針對小目標檢測,Zhan 等人[21]在YOLOv5網(wǎng)絡結(jié)構(gòu)上增加檢測層,用來提高檢測精度,但是卻加深了網(wǎng)絡結(jié)構(gòu),導致檢測速度下降。Song 等人[22]提出一種基于多尺度特征融合的小目標檢測方法,利用特征金字塔思想,更好地表達出淺層網(wǎng)絡的位置信息和語義特征,提升小目標檢測效果,但該方法加深了骨干網(wǎng)絡結(jié)構(gòu)。Chen 等人[23]針對VisDrone 數(shù)據(jù)集[24]特征,提出一種自適應數(shù)據(jù)擴充技術(shù),并利用分割算法確定合理粘貼位置,增加小目標數(shù)量。周華平等人[25]在YOLOv5基礎上引入通道注意力,提升了對小目標的檢測效果。李惠惠等人[26]針對無人機視角圖像中背景復雜、目標遮擋等問題,在YOLOv5[27]基礎上對錨框做出改進,并引入卷積注意力模塊,強化學習特征提升檢測精度。Gong等人[28]為解決小目標密集分布的問題,在YOLOv5 中引入自注意力機制,使小目標檢測效果有所提升。Liu等人[29]介紹了小目標檢測所面臨的問題以及如何解決。Chen 等人[30]分析了小目標的檢測難點,將小目標劃分成多尺度表征、上下文信息、圖像超分辨率以及區(qū)域候選四大類。張徐等人[31]以YOLOv7 作為基線網(wǎng)絡,用余弦注意力機制和后正則化方法改進Swin Transformer,重構(gòu)骨干網(wǎng)絡結(jié)構(gòu),雖然在小目標圖像檢測精度上有所提升,但由于基線模型過大,存在推理速度慢,遷移性弱的問題。
綜合上述文獻,針對小目標圖像背景信息復雜、目標信息較小、定位精度要求高的問題,結(jié)合無人機視角的圖像檢測場景對實時性要求,本文提出了改進YOLOv5s小目標檢測方法,在保證實時性的情況下提升檢測性能。主要工作及創(chuàng)新點概括為:(1)改進聚類算法的距離度量,采用IOU 作為評價指標,衡量錨框與真實框的匹配程度,重新聚類錨框;(2)改變現(xiàn)有檢測頭計算方式,采用兩個分支分別計算回歸與分類,增加模型的靈活性,提升模型泛化能力;(3)將C3 模塊替換為C2f 模塊,重構(gòu)骨干網(wǎng)絡結(jié)構(gòu),使模型更加輕量化,在C2f模塊中增加通道注意力機制,強化學習特征;(4)改進空間金字塔池化方式,在原模型的空間金字塔池化層基礎上引入跨階段部分連接,提升模型推理速度。
YOLOv5 是2020 年6 月發(fā)布的一階段(one-stage)目標檢測方法,與之前YOLO 系列相比,YOLOv5 包括YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x 四個不同大小模型,且隨著模型深度的加深,檢測精度有所提升,檢測速度隨之下降。本文選取的是2021年10月更新的YOLOv5s 6.0版本,其兼具檢測速度和精度優(yōu)勢。
YOLOv5s網(wǎng)絡結(jié)構(gòu)主要由骨干網(wǎng)絡(Backbone)、頸部(Neck)、檢測頭(Head)三部分組成,如圖1所示。Backbone 由封裝了三個模塊(Conv2d+BatchNormalization+SiLU,CBS)的Conv和CSPDarkNet53(C3)模塊構(gòu)成,用來提取目標特征信息。Neck由協(xié)同工作的特征金字塔(feature pyramid networks,F(xiàn)PN)和路徑聚合網(wǎng)絡(path aggregation networks,PAN)兩部分構(gòu)成。其中,F(xiàn)PN是實現(xiàn)自頂向下的特征金字塔,PAN是實現(xiàn)自底向上的路徑聚合網(wǎng)絡。兩個模塊用來增強網(wǎng)絡特征整合能力,豐富上下文語義特征。Detect 仍是FPN 結(jié)構(gòu),包括三個head,擁有不同的預測尺度,對結(jié)果進行預測,并生成對應類別預測框。每個head對應一個卷積操作,原本的通道數(shù)分別為128、256、512,經(jīng)過卷積之后的通道數(shù)為255、255、255。
對于小目標檢測,YOLOv5s 仍然存在漏檢、誤檢、檢測精度相對較低的問題。本文針對小目標圖像的特點,做出以下四點改進:(1)改進錨框聚類算法,重新聚類錨框;(2)使用SE模塊重構(gòu)骨干網(wǎng)絡結(jié)構(gòu);(3)改進空間金字塔池化層(spatial pyramid pooling fast,SPPF);(4)引入解耦檢測頭。本文方法網(wǎng)絡結(jié)構(gòu)如圖2所示。
圖2 改進YOLOv5s網(wǎng)絡結(jié)構(gòu)圖Fig.2 Structure of improved YOLOv5s network
YOLOv5s 是一個基于先驗框的檢測算法,所以生成一個準確的錨框?qū)τ赮OLOv5s目標檢測具有重要作用。YOLOv5s 網(wǎng)絡結(jié)構(gòu)中對錨框進行聚類的算法是K-Means 算法與遺傳算法,K-means 算法隨機選擇K個點作為初始聚類中心,將每個數(shù)據(jù)點分配到最近的聚類中心,根據(jù)數(shù)據(jù)點重新計算聚類中心的位置,重復上述步驟直至收斂。K個數(shù)據(jù)點一般是人為設定的,故K-Means 算法有一個需要手動調(diào)整初始聚類中心的缺點,然而不同的聚類中心可能會導致完全不同的結(jié)果,極具不確定性。為了改變K-Means 聚類算法的不確定性,本文將錨框自適應計算方法改為優(yōu)化初始聚類中心的K-Means++聚類算法,同時修改歐氏距離聚類,將IOU 作為評估指標,這里的IOU 只考慮錨框的長和寬。IOU 作為評價指標在K-means++算法中用于衡量錨框與真實目標的匹配程度,從而選擇適合目標檢測任務的錨框。K-Means++聚類算法選擇初始聚類中心的基本原則是:初始的聚類中心之間的相互距離要盡可能得遠,即首先隨機選擇一個初始聚類中心(n=1),而當選擇第n+1 個聚類中心時,保持距第n個聚類中心的距離盡可能得遠。這一原則有效地解決了K-Means 算法聚類結(jié)果不確定的問題。改進距離的K-Means++算法能夠選擇那些能夠較好地適應目標物體的尺寸和長寬比例的錨框,從而提高目標檢測的準確性。
改進距離的K-Means++算法步驟:
步驟1隨機選擇一個初始聚類中心。
步驟2采用:
計算每個樣本距離最近的聚類中心,接著計算每個樣本被選為下一聚類中心的概率:
最后,使用輪盤法選擇下一個聚類中心。
步驟3重復步驟2直到選出K個聚類中心。
步驟4針對數(shù)據(jù)集中每個樣本,計算它到K個聚類中心的距離并將其分到距離最小的聚類中心所對應的類中。
步驟5針對每個類別,重新計算它的聚類中心。
步驟6重復步驟4、步驟5,直到聚類中心的位置不再變化,輸出K個聚類中心。
YOLOv5s 原本的耦合頭(Coupled Head)借助一個1×1的卷積來調(diào)整通道數(shù),擴展后的特征通道數(shù)為:
(類別數(shù)量nc+5)×每個檢測層上的anchor數(shù)量其中,5分別對應的是預測框的中心點橫坐標、縱坐標、寬度、高度和置信度,這里的置信度表示預測框的可信度,取值范圍為(0,1),值越大說明該預測框中越有可能存在目標。每個特征層上的每個特征點都存在3 個先驗框。然而Coupled Head不能完全提取feature map中的信息,所需要的計算資源較大、參數(shù)量較大且易出現(xiàn)過擬合的情況。
解耦頭(Decoupled Head)考慮到分類和定位所關(guān)注的內(nèi)容的不同,Coupled Head將回歸和分類任務放在一起預測,Decoupled Head 使用兩個獨立分支,一個分支用于回歸預測邊界框的位置信息,另一個分支用于分類預測目標的類別概率,提高模型的靈活性;Coupled Head 的特征通道是3×3 的卷積,而Decoupled Head 使用1×1的卷積降低特征通道維度,可以降低參數(shù)量和計算復雜度。因此采用多分支檢測頭來進行運算,從而來提高檢測精度和加快網(wǎng)絡收斂,并且提升模型的泛化能力和魯棒性。YOLOX[32]是無錨框的檢測方法,其采用的Decoupled Head 不是使用預定義的錨框,而是通過網(wǎng)絡自動生成密集的候選框,每個候選框有一個對應的置信度,檢測圖像中物體的中心點位置,并根據(jù)中心點位置對每個候選框進行尺寸估計,從而得到候選框的寬和高,對每個候選框進行類別預測,得到目標類別的概率分布;而YOLOv5s是基于錨框的檢測方法,所以本文中引入的Decoupled Head 與YOLOX 原模型中使用的Decouple Head檢測方法稍有不同,依舊是基于錨框的檢測方法,令一組預定義的錨框作為基準框,針對每個錨框,Decoupled Head 會輸出目標邊界框的位置信息以及目標類別的概率分布。Dcoupled Head結(jié)構(gòu)如圖3所示。
圖3 Decoupled Head結(jié)構(gòu)圖Fig.3 Structure of Decoupled Head
無人機視角圖像的背景通常是復雜的,并且目標較小。增加注意力機制可以減少復雜背景對信息提取的干擾,有效的提升檢測精度。YOLOv5s 對小目標區(qū)域的特征信息提取不充分。
YOLOv5s 網(wǎng)絡結(jié)構(gòu)中的CSP Bottleneck(CSP)包含三個卷積塊(Conv+BN+SiLU)以及n個Bottleneck。CV1 和CV2 卷積通道數(shù)一致,CV3 的通道數(shù)是前者的兩倍。CSP Bottleneck 的主要思想是提取分流和結(jié)合殘差結(jié)構(gòu)。C3模塊主要借助CSP的提取分流和結(jié)合殘差結(jié)構(gòu)的思想,但又與CSP 結(jié)構(gòu)不同。C3 模塊主要進行殘差特征學習,首先經(jīng)過一個卷積操作之后,將它分為兩部分,一部分經(jīng)過n個bottleneck 和3 個標準卷積層,另一部分僅經(jīng)過一個卷積。C2f 模塊是在C3 模塊的基礎上進行改進,首先經(jīng)過一個卷積操作之后,將它分為兩部分,一部分經(jīng)過Bottleneck block(Bottleneck block里有n個bottleneck),另一部分直接輸出。不經(jīng)過卷積層直接輸出,降低存儲開銷和計算復雜度,使C2f 模塊更加輕量化。C2f模塊輕量化的同時保證了豐富的梯度流信息。C3模塊與C2f模塊的結(jié)構(gòu)對比如圖4所示。
圖4 C3結(jié)構(gòu)與C2f結(jié)構(gòu)對比圖Fig.4 Structure of C3 and C2f
Squeeze-and-Excitation(SE)模塊主要是擠壓(Squeeze)操作和激勵(Excitation)操作,首先對卷積得到的特征圖進行Squeeze 操作,得到通道(channel)級全局特征,然后對全局特征進行Excitation操作,學習各個channel 間的關(guān)系,同時得到不同channel 的權(quán)重,最后乘以原來的特征圖,得到最終特征。SE模塊結(jié)構(gòu)如圖5所示。
圖5 SE模塊結(jié)構(gòu)圖Fig.5 Structure of SE module
SE 學習得到不同權(quán)重,增強特征表達能力。在骨干網(wǎng)絡結(jié)構(gòu)中引入SE 注意力機制,使模型更專注于重要特征,充分捕捉目標類別信息,提升模型感知能力。
考慮到增加注意力會增大模型復雜度,為了保證充分提取信息的同時平衡模型大小,選取輕量級的C2f模塊。在C2f 模塊中加入SE 注意力機制,并將該模塊命名為SEC2f。SEC2f模塊結(jié)構(gòu)如圖6所示。
圖6 SEC2f模塊結(jié)構(gòu)圖Fig.6 Structure of SEC2f module
在CNN 結(jié)構(gòu)中,卷積層的后面是全連接層。全連接層的特征數(shù)是固定的,輸入的圖像尺寸不滿足要求時,就會被裁剪、拉伸,扭曲原始圖像。He等人[33]提出空間金字塔池化(spatial pyramid pooling,SPP),無論輸入圖像尺寸如何,經(jīng)過SPP 都可得到固定尺寸的輸出。YOLOv5中的SPP結(jié)構(gòu)只是借鑒了SPP的思想,輸入特征圖像先進行一個卷積操作,再經(jīng)過三個最大池化層和一個直接輸出拼接,最后進行一個卷積操作。受SPP結(jié)構(gòu)的啟發(fā),YOLOv5 的作者Glenn Jocher 等人在YOLOv5 6.0 版本中提出了快速空間金字塔池化(SPPFast,SPPF)結(jié)構(gòu)。依次經(jīng)過三個最大池化層,并且每個步驟都有一個分支直接輸出,拼接在一起,最后進行一個卷積操作。速度要比SPP 快很多。SPPF 結(jié)構(gòu)如圖7所示。
圖7 SPPF結(jié)構(gòu)圖Fig.7 Structure of SPPF
SPPF 通過最大池化來獲得不同感受野,旨在捕獲特征圖中的多尺度信息,使得算法適應不同的分辨率圖像。
YOLOv7[34]模型的網(wǎng)絡結(jié)構(gòu)中空間金字塔池化層采用的是在SPP基礎上增加卷積層的SPPCSPC,效果優(yōu)于SPPF。本文在SPPCSPC 結(jié)構(gòu)啟發(fā)下,將空間金字塔池化層SPPF 結(jié)構(gòu)更改為SPPFCSPC 結(jié)構(gòu),SPPFCSPC 結(jié)構(gòu)即在SPPF 的基礎上將特征圖分成兩部分,分別進行卷積操作,再將兩部分的特征圖進行連接,將不同尺度的特征進行連接以實現(xiàn)跨階段的特征交互和信息傳遞,增強特征的多尺度表示能力,進一步提升特征提取模塊的性能。保持感受野不變的同時豐富上下文信息交流,提升推理速度。SPPFCSPC結(jié)構(gòu)如圖8所示。
圖8 SPPFCSPC結(jié)構(gòu)圖Fig.8 Structure of SPPFCSPC
DOTA數(shù)據(jù)集[35]共有飛機、輪船、儲槽、網(wǎng)球場、籃球場、棒球場、田徑場、港口、橋、大交通工具、小交通工具、直升機、環(huán)島、足球場、游泳池十五個類別。大、小交通工具算一個主類,所以共有14個主類。共有2 806張航拍圖像,尺寸在800×800到4 000×4 000之間。188 282個實例。實例多,且縱橫比不一。按照8∶2劃分訓練集與測試集。
VisDrone數(shù)據(jù)集共有行人、人、自行車、汽車、貨車、三輪車、遮陽三輪車、公共汽車、卡車、轎車。選取6 471張圖像作為訓練集,548張圖像作為測試集。
實驗基于PyTorch1.7.0 框架,使用單個GPU RTX 2080 Ti顯卡。實驗具體環(huán)境配置如表1所示。
表1 實驗環(huán)境配置Table 1 Experimental environment configuration
模型訓練以YOLOv5s 原模型為基礎,使用SGD 優(yōu)化器,學習率設置為0.01,衰減到0.000 1 訓練結(jié)束,workers為6,batchsize為32,epochs為100。
目標檢測中常用均值平均精確率(mean average precision,mAP)衡量模型對于目標的類別和位置識別是否準確。準確率(Precision,P)和召回率(Recall,R)共同決定了mAP。
其中,TP是正樣本且被識別為正樣本的例子,F(xiàn)P是負樣本但被識別為正樣本的例子,F(xiàn)N是正樣本但被識別為負樣本的例子。
由于Precision和Recall是成反比的,引入由P和R的n個不同點圍成的曲線面積所表示的平均精確率(average precision,AP)作為一個衡量標準:
AP 衡量的是訓練出來的模型在每個類別上的好壞。mAP是AP的平均值,衡量的是訓練出的模型在所有類別上的好壞。
其中,k為數(shù)據(jù)集的類別數(shù)。
用mAP 衡量模型檢測的精確率的同時,還可以用每秒檢測幀數(shù)(frames per second,F(xiàn)PS)來衡量模型的檢測速度。FPS數(shù)值越大,模型檢測速度越快。
本實驗所有數(shù)據(jù)參數(shù)和環(huán)境配置嚴格一致。在DOTA數(shù)據(jù)集和VisDrone數(shù)據(jù)集上進行檢測,采用mAP和FPS作為實驗指標。本文在YOLOv5s原模型的基礎上進行改進,對于改進部分進行消融實驗。實驗結(jié)果如表2所示。
表2 消融實驗結(jié)果(mAP、FPS)Table 2 Ablation test results(mAP、FPS)
表2 中A、B、C、D 分別表示應用SEC2f 模塊、采用改進距離的K-Means++算法、添加Decoupled Head、添加SPPFCSPC 空間金字塔池化層。從表2 中可以看出,在VisDrone 數(shù)據(jù)集上單獨改進四個模塊后,mAP 分別提升0.034、0.003、0.007、0.028,數(shù)據(jù)表明各個模塊均有助于小目標圖像檢測任務,驗證了改進距離的重新聚類錨框、多分支計算以及增加局部特征捕獲能力作為優(yōu)化小目標圖像檢測任務出發(fā)點的合理性。方法1,當SEC2f模塊、改進距離的K-Means++算法以及解耦頭部結(jié)合使用時,在VisDrone 數(shù)據(jù)集上,mAP 達到0.358,提升了0.041,F(xiàn)PS達到85.47,由于添加注意力機制增加了模型計算量,F(xiàn)PS 下降了11.61。由上述數(shù)據(jù)可以看出,本文方法1改進模塊對小目標檢測效果有所提升,但推理速度有所下降。方法2,當四個模塊集成時,在VisDrone數(shù)據(jù)集上,與方法1相比,mAP達到0.369,提升了0.011,F(xiàn)PS達到88.49,提升了3.02,說明改進空間金字塔池化層可以在感受野不變的情況下有效提升推理速度。較原始模型得到了5.2%的檢測精度性能提升,驗證了所提改進方法在無人機視角的小目標檢測任務上的有效性。同樣,在DOTA數(shù)據(jù)集上單獨改進四個模塊后,性能均有一定提升,尤其是當四個模塊集成時,mAP達到0.734。表明了四個改進模塊在其他小目標任務上也具有良好效果。
表3 為YOLOv5s 方法與本文改進方法在VisDrone數(shù)據(jù)集上各個類別目標的mAP對比。由表3可以看出,本文改進方法與改進前的原始方法相比,各個類別的mAP 均有提升,方法2 較方法1 有一定提升,尤其是卡車單個類別的mAP 先后提升0.061、0.09。自行車這一特征不明顯的小目標單個類別先后提升0.008、0.031??梢姡P驮谑褂锰砑幼⒁饬Φ腃2f 模塊基礎上,再加入自適應錨框計算和解耦頭部檢測以及改進空間金字塔池化算法后對特征相對明顯的小目標類別有較好的檢測效果,在使用改變分支的空間金字塔池化層,豐富上下文信息交流后,檢測效果更好,尤其是對于特征極不明顯的小目標類別。整體上,檢測效果有較大提升,但是對于自行車、三輪車等特征點不明顯的類別檢測精度還是較低,未來還有進一步提升空間。
表3 VisDrone數(shù)據(jù)集各類別目標mAP對比Table 3 Comparison of target mAP in each category of VisDrone dataset
F1_curve 是F1_score(Precision 和Recall 之間的調(diào)和平均數(shù))與置信度之間的關(guān)系,在[0,1]上取值,0為最差,1 為最好。通過圖9 可以看出,在兩個數(shù)據(jù)集上,改進方法的各類別score均高于原模型。在DOTA數(shù)據(jù)集上,原模型所有類別的平均score為0.68,本文改進方法為0.73;在VisDrone 數(shù)據(jù)集上所有類別的平均score 為0.35,本文改進方法為0.41。說明本文改進方法的各類別檢測性能均優(yōu)于YOLOv5s。
圖9 方法2與YOLOv5s方法的F1_curve對比圖Fig.9 Comparison of F1_curve by method 2 and YOLOv5s
3.4.1 改進效果對比實驗
為了進一步證明本文改進方法的有效性,與RetinaNet、Faster-RCNN、YOLO 系列等經(jīng)典方法在DOTA 數(shù)據(jù)集和VisDrone 數(shù)據(jù)集上的mAP 和FPS 指標進行比較,如表4所示。
表4 算法對比實驗Table 4 Algorithm comparison experiment
從表4可以看出,本文改進方法在兩個小目標數(shù)據(jù)集上檢測精度均得到了最優(yōu)結(jié)果,推理速度與檢測性能最好的YOLOv8s 相比略遜一籌。兩階段法RetinaNet的mAP 值分別是0.663、0.193,F(xiàn)PS 值為16.7;Faster-RCNN的mAP值分別是0.701、0.221,F(xiàn)PS值為14.4??梢钥闯鰞呻A段法的檢測精度不夠,推理速度也有極大的提升空間。所改進YOLOv5s 方法與兩階段法相比,mAP 值有至少0.033 和0.148 的提升,推理速度也更快。一階段檢測法YOLOv3 的mAP 值分別是0.592、0.236,F(xiàn)PS 值為63.7,與Faster-RCNN 相比,推理速度有較大提升,但是依舊有提升空間,且檢測精度在兩個數(shù)據(jù)集上的表現(xiàn)有所差異,通用性較差;YOLOv4 的mAP值分別是0.704、0.273,F(xiàn)PS 值為67.4,可以看出,在DOTA數(shù)據(jù)集上效果明顯優(yōu)于YOLOv5s,但在VisDrone數(shù)據(jù)集上效果較差,說明YOLOv4與YOLOv3同樣的通用性較差;YOLOX 的mAP 值分別是0.718、0.321,F(xiàn)PS值為71.9,相比于YOLOv5s 檢測精度雖然有所提升,但是推理速度相對較慢,不利于工程部署;Gong 等人提出的SHP-YOLOv5 的mAP 值在DOTA 數(shù)據(jù)集上與YOLOX的mAP值相當,但是推理速度在一階段檢測法中最低;YOLOv5s的mAP值分別是0.673、0.317,F(xiàn)PS值為97.08,雖然推理速度最快,但是檢測精度依舊有提升空間;YOLOv8s作為目前較為先進的目標檢測算法,它的mAP 值分別達到0.729、0.366,F(xiàn)PS 值達到89.29。所改進方法與比較具有代表性的一階段檢測法YOLO 系列中檢測效果最好的YOLOv8s 相比,mAP 值有所提升。與推理速度最快的YOLOv5s 相比,由于模型中添加了通道注意力機制和用于提取不明顯特征的解耦檢測頭加深了模型結(jié)構(gòu),F(xiàn)PS值達到88.49,雖下降8.59,但不影響模型的實時性檢測效果。綜合上述分析,小幅度犧牲推理速度來提升檢測精度是可取的,本文改進方法在小目標檢測性能上取得了良好的效果。
3.4.2 通用性對比實驗
為驗證所提方法的適用性和準確性,使用VOC2007+2012數(shù)據(jù)集,在參數(shù)相同的情況下,訓練100個epoch。改進方法與YOLOv5s、YOLOv8s、PSSD 算法在mAP、Precision、FPS三個方面進行對比分析。實驗結(jié)果如表5所示。
表5 通用性對比實驗Table 5 Comparison experiment of universality
改進算法與YOLOv5s 相比,mAP 值從0.804 到0.824 提升0.02,Precision 值從0.801 到0.811 提升0.01,F(xiàn)PS 下降13.39;相比于YOLOv8s,mAP 值提升0.009,Precision 值提升0.003,F(xiàn)PS 下降6.39;與PSSD 相比,mAP 值下降0.004,F(xiàn)PS 提高76.86。結(jié)果表明,本文改進算法不僅適用于無人機視角的小目標數(shù)據(jù)集,也適用于其他場景下的目標檢測任務,具有通用性。
為了更直觀地表明本文改進方法的有效性,將方法2 與YOLOv5s 做可視化展示。圖10 展示的是方法2 的預測框中心點熱力圖,由圖可以看出,貨車感知區(qū)域的置信度高達0.93;簡單背景下的轎車感知區(qū)域置信度高達0.94,復雜背景下的轎車感知區(qū)域置信度達到0.83;卡車感知區(qū)域置信度達到0.89;三輪車這一極小類別的感知區(qū)域置信度達到0.72,驗證了本文改進方法添加注意力機制后感知區(qū)域更為準確。
圖10 方法2在VisDrone數(shù)據(jù)集上預測中心點熱力圖Fig.10 Center point heat map predicted by method 2 on VisDrone dataset
圖11 展示的是本文改進方法與原方法的結(jié)果對比。通過圖11(a)(b)和(c)(d)可以看出本文改進方法分別在DOTA 數(shù)據(jù)集和VisDrone 數(shù)據(jù)集上的Precision和Recall 明顯高于YOLOv5s,并且邊界框回歸損失(box_loss)、置信度損失(obj_loss)、分類損失(cls_loss)明顯低于YOLOv5s,尤其是在VisDrone 數(shù)據(jù)集上,obj_loss振動幅度較大,使用本文改進方法后,振動明顯緩解。通過對比發(fā)現(xiàn),本文改進方法的收斂速度較原方法更快。
圖11 YOLOv5s與方法2的結(jié)果對比圖Fig.11 Comparison of tresults by method 2 and YOLOv5s
YOLOv5s 與本文改進方法在VisDrone 數(shù)據(jù)集上的可視化對比,左側(cè)為YOLOv5s 原方法、右側(cè)為本文改進方法2,如圖12 所示??梢钥闯鲈诠饩€較暗的場景下,行人在原模型上被誤檢成人,改進后的方法能夠正確識別行人這一類別,檢出率明顯提升;在光線充足,但背景復雜的場景下,原模型未檢出被樹遮擋的轎車,改進方法有效檢出,并且原模型將三輪車這一極小類別誤檢成轎車,改正方法正確檢出。驗證了本文改進方法的檢測性能優(yōu)于YOLOv5s,尤其是在一些被部分遮擋的物體和容易被誤檢、漏檢的小目標的類別上。
圖12 在VisDrone數(shù)據(jù)集上的可視化對比圖Fig.12 Visual comparison plots on VisDrone dataset
本文在YOLOv5s 方法基礎上提出了一種改進方法。改進K-Means聚類算法,采用計算框之間的IOU作為距離度量減少錨框與目標匹配誤差,重新聚類錨框,提高目標檢出率;重構(gòu)網(wǎng)絡主干結(jié)構(gòu),引入添加通道注意力機制的C2f 模塊,提高特征提取能力;改進空間金字塔池化層,將多個池化層并聯(lián)轉(zhuǎn)化為多池化層串聯(lián),減少支路,提升推理速度;添加解耦檢測頭,采用分支處理的方式增強模型的泛化能力,以針對小目標圖像檢測任務。最終,在無人機視角的小目標圖像數(shù)據(jù)集VisDrone 上mAP 值得到5.2%的提升、在小目標圖像數(shù)據(jù)集DOTA 上mAP 值得到6.1%的提升,以及在數(shù)據(jù)集VOC2007+2012上得到了2%的提升。實驗結(jié)果表明了改進方法在小目標圖像檢測任務上的有效性和通用性。改進后的方法在檢測精度上有一定提升,為工業(yè)應用提供了良好的參考價值。未來將從提高實時性入手進一步研究探索,在提升檢測精度的同時提升推理速度。