劉展威,陳慈發(fā)*,董方敏
(1.三峽大學(xué) 計(jì)算機(jī)與信息學(xué)院,湖北 宜昌 443002;2.三峽大學(xué) 湖北省建筑質(zhì)量檢測裝備工程技術(shù)研究中心,湖北 宜昌 443002)
隨著基于深度學(xué)習(xí)的目標(biāo)檢測技術(shù)的快速發(fā)展,“無人機(jī)航拍+目標(biāo)檢測”方法的使用越來越普遍,如森林防火、電路巡檢和農(nóng)業(yè)監(jiān)管等。目前針對“小目標(biāo)”的定義主要有2種:一種是絕對尺寸,尺寸小于32 pixel×32 pixel的目標(biāo)被認(rèn)為是小目標(biāo);另一種是相對尺寸,根據(jù)國際光電工程學(xué)會(huì)定義,小目標(biāo)為256 pixel×256 pixel的圖像中成像面積小于80 pixel的目標(biāo),即目標(biāo)的尺寸小于原圖的0.12%則可被認(rèn)為是小目標(biāo)[1],因此研究出一個(gè)針對航拍小目標(biāo)檢測的算法模型成為關(guān)鍵的研究內(nèi)容之一。
目標(biāo)檢測從早期的傳統(tǒng)方法到如今基于深度學(xué)習(xí)的方法,發(fā)展已有21年。當(dāng)前基于深度學(xué)習(xí)的目標(biāo)檢測算法有2種:第1種是以Faster R-CNN[2]為代表的雙階段檢測算法等,利用算法生成預(yù)選框,再使用深度卷積網(wǎng)絡(luò)對預(yù)選框進(jìn)行檢測類別的分類,雙階段檢測算法的精度更高,但速度過慢,不能滿足實(shí)時(shí)性要求較高的場合;第2種是以YOLO[3]、YOLOv3[4]、YOLOv4[5]、YOLOv5以及SSD[6]為代表的單階段檢測算法,將檢測框的定位和分類任務(wù)結(jié)合,能夠快速檢測出目標(biāo)位置,通過適當(dāng)?shù)馗倪M(jìn)可同時(shí)具有更好的實(shí)時(shí)性與檢測精度。韓玉潔等[7]在YOLO上進(jìn)行數(shù)據(jù)增強(qiáng),修改激活函數(shù),添加CIoU,修改后模型精度有所提升,但模型內(nèi)存占用過大。丁田等[8]加入注意力以及CIoU,加快了模型收斂速度,增加檢測準(zhǔn)確率,但同時(shí)也增加了計(jì)算成本。肖粲俊等[9]加入注意力機(jī)制,并引入自適應(yīng)特征模塊,增強(qiáng)了網(wǎng)絡(luò)特征提取能力,但精度提升幅度較小且漏檢率過大。目前改進(jìn)方法主要通過添加模塊來提升檢測精度,但同時(shí)增加了計(jì)算成本。因此本文不局限于模塊添加,將在網(wǎng)絡(luò)結(jié)構(gòu)上進(jìn)一步改進(jìn)。
目前無人機(jī)航拍檢測任務(wù)主要有以下難題:
① 不同于普通目標(biāo)檢測,航拍所檢測對象大多數(shù)是小目標(biāo),可以提取到有用的特征過少,絕大多數(shù)算法都存在對小目標(biāo)檢測的漏檢、誤檢問題。
② 現(xiàn)實(shí)場景中目標(biāo)繁多,圖片中背景復(fù)雜,常常混雜許多其他干擾性較大的目標(biāo)。
③ 由于飛行高度問題,各個(gè)目標(biāo)之間大小不同,存在著尺度不一致的問題,導(dǎo)致檢測效果不佳。
為提高無人機(jī)航拍目標(biāo)的檢測精度,結(jié)合應(yīng)用場景的限制,本文提出一種基于YOLOv5s的航拍小目標(biāo)改進(jìn)算法VA-YOLO。該算法主要改進(jìn)與創(chuàng)新有:
① 融入模塊來重新構(gòu)建主干網(wǎng)絡(luò),提升對小目標(biāo)的檢測精度。
② 通過添加小目標(biāo)檢測層與加權(quán)雙向金字塔(Bidirectional Feature Pyramid Network,BiFPN)[10]將深層語義跟淺層語義進(jìn)行多尺度特征融合,解決尺度不一、特征信息利用不充分的問題。
③ 將損失函數(shù)改為Varifocal loss與EIoU,解決檢測精度低與背景干擾過大的問題,使得算法對小目標(biāo)取得更好的檢測效果。
YOLOv5是一種單階段的目標(biāo)檢測算法,相比較前一代,它汲取了許多優(yōu)秀網(wǎng)絡(luò)結(jié)構(gòu)的優(yōu)點(diǎn),精度更高、速度也更快,已經(jīng)能夠做到實(shí)時(shí)地檢測目標(biāo)。YOLOv5一共有4個(gè)版本:YOLOv5s、YOLOv5m、YOLOv5l和YOLOv5x四種,其網(wǎng)絡(luò)深度和寬度逐漸加大。考慮到應(yīng)用場景,相比其他3個(gè)版本,YOLOv5s的網(wǎng)絡(luò)結(jié)構(gòu)最簡潔,運(yùn)行速度最快,計(jì)算資源消耗最少,同時(shí)也更容易移植到其他平臺(tái),本研究選擇使用模型深度與寬度最淺的YOLOv5s模型。其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
YOLOv5s模型主要包括圖片輸入端、Backbone網(wǎng)絡(luò)、Neck網(wǎng)絡(luò)和Head輸出層四部分。
輸入端會(huì)對輸入的圖片進(jìn)行預(yù)處理。首先,對幾張圖片進(jìn)行隨機(jī)裁剪拼接,不僅可以充分利用數(shù)據(jù)集,還能提升訓(xùn)練速度;其次,在模型訓(xùn)練中,YOLOv5s算法根據(jù)數(shù)據(jù)集自適應(yīng)地計(jì)算出最佳錨點(diǎn)框,考慮到無人機(jī)航拍檢測對象絕大部分為小目標(biāo),本文將錨框調(diào)整為[3,4,4,8,6,6]、[6,12,12,9,11,17]、[21,11,17,22,36,18]或[26,34,54,41,100,85];最后,將圖片調(diào)整到統(tǒng)一大小后輸入到Backbone網(wǎng)絡(luò)中。
YOLOv5s(6.0)[11]的Backbone網(wǎng)絡(luò)由特征提取模塊CSP[12]、卷積模塊CBL與空間金字塔池化(Spatial Pyramid Pooling-Fast,SPPF)模塊組成。CSP結(jié)構(gòu)分為2類,如圖2所示。SPPF模塊不再使用1×1、5×5、9×9、13×13的最大池化,而是通過多個(gè)5×5的MaxPool2d取代原有的池化層,例如2個(gè)5×5卷積操作代替一個(gè)9×9的卷積操作,用以提高效率。CBL由Conv、BN歸一層和Leaky ReLU激活函數(shù)組成,如圖2所示。

圖2 CSP和CBL結(jié)構(gòu)Fig.2 Structure of CSP and CBL
Neck由特征金字塔網(wǎng)絡(luò)(Feature Pyramid Networks,FPN)[13]和路徑聚合網(wǎng)絡(luò)(Path Aggregation Network,PAN)[14]構(gòu)成。FPN自上而下用來強(qiáng)化語義特征,PAN自下而上用來強(qiáng)化位置特征,二者將不同階段特征圖進(jìn)行特征融合,提高對主干網(wǎng)絡(luò)輸出特征的利用率,從而提升對小目標(biāo)檢測精度。
Head輸出層主要是對Neck層的3個(gè)輸出進(jìn)行卷積操作,并在大小為20×20、40×40、80×80的特征圖上生成對應(yīng)的預(yù)測邊界框。
YOLOv5s具有較好的檢測效果,但其平均檢測精度(mean Average Precision,mAP)與YOLOv3、ClusDet[15]等主流算法相比仍有較大差距,因此,本文將從Backbone網(wǎng)絡(luò)、Neck網(wǎng)絡(luò)與Head輸出層、損失函數(shù)三方面對YOLOv5s進(jìn)行改進(jìn),力求在不增加運(yùn)算資源消耗的同時(shí)提高精度。
YOLOv5s在進(jìn)行航拍目標(biāo)檢測時(shí),往往檢測的對象過小,檢測過程中容易丟失特征信息,導(dǎo)致檢測效果不佳。因此本文加入Coordinate Attention(CA)[16]注意力機(jī)制,可以讓算法模型集中在需要關(guān)注的區(qū)域,有效提升對小目標(biāo)檢測的精度。與Squeeze-and-Excitation(SE)[17]注意力機(jī)制使用2D全局池化轉(zhuǎn)變成單個(gè)特征向量不同的是,CA將其分成了2個(gè)不同方向聚合特征的ID編碼,既可以獲得空間方向的長程依賴,同時(shí)也不會(huì)缺少位置信息。CA結(jié)構(gòu)如圖3所示。

圖3 CA結(jié)構(gòu)Fig.3 CA structure
首先在輸入端使用2個(gè)池化核向水平方向和豎直方向進(jìn)行池化,得到高度為h,寬度為w的輸出。然后將輸出的特征圖進(jìn)行融合拼接后使用1×1大小的卷積核進(jìn)行卷積,生成過渡特征圖。其次,將過渡特征圖分解為單獨(dú)的特征圖,再使用1×1大小的卷積核進(jìn)行卷積,得到與輸入一致的通道數(shù)量。最后使用激活函數(shù),將結(jié)果與輸入進(jìn)行相乘輸出,從而達(dá)到強(qiáng)化特征的目的。
為同時(shí)確保檢測網(wǎng)絡(luò)的大小與精度,經(jīng)過實(shí)驗(yàn),選擇在Backbone網(wǎng)絡(luò)中將原有的一個(gè)CSP模塊替換為CA模塊,不僅計(jì)算資源開銷更低效果也更為明顯,實(shí)驗(yàn)對比結(jié)果如圖4所示。圖4(a)為未更改的YOLOv5s檢測情況,圖4(b)為將CSP替換為CA的檢測效果圖。可以看到圖片下方不僅檢測出多個(gè)漏掉的行人以及摩托目標(biāo),而且準(zhǔn)確率也有所提升。實(shí)驗(yàn)結(jié)果表明,加入注意力機(jī)制后,在檢測小目標(biāo)上模型效果得到顯著提升的同時(shí)也具有較好的魯棒性。

(b)替換為CA的檢測效果圖4 檢測效果對比Fig.4 Comparison of detection effects
通常來講,無人機(jī)航拍圖像檢測都是小目標(biāo),目標(biāo)的類別以及位置尤為重要,對于較淺層分辨率較高的特征圖,往往能夠保留更加全面的小目標(biāo)位置信息;較深層的分辨率較低的特征圖,往往保留大目標(biāo)特征復(fù)雜的語義信息。因此,本文在YOLOv5s原有基礎(chǔ)上,通過添加小目標(biāo)檢測層來繼續(xù)上采樣擴(kuò)大特征圖,進(jìn)而增強(qiáng)多尺度之間的特征圖的關(guān)聯(lián),讓更為淺層的位置信息與深層的語義信息進(jìn)一步結(jié)合,提升對小目標(biāo)信息的利用率。
YOLOv5s中Neck網(wǎng)絡(luò)部分使用的是FPN+PAN結(jié)構(gòu),主要是為了解決檢測小目標(biāo)精度不佳的情況,通過FPN結(jié)構(gòu)將淺層特征圖的位置信息進(jìn)行向下的遞增,再使用PAN結(jié)構(gòu)做向上的語義信息的遞增,達(dá)到融合多層特征信息特征圖的效果。但這種方式只能進(jìn)行相同尺寸特征圖之間的融合,未利用到不同尺寸的特征圖信息。因此,本文引入了新的BiFPN特征圖融合網(wǎng)絡(luò)結(jié)構(gòu)。首先,將單個(gè)特征圖輸入的節(jié)點(diǎn)去除,由于該節(jié)點(diǎn)融合的特征信息過少,去掉可以避免不必要的運(yùn)算;其次,融合同一尺度但更淺層的特征圖,強(qiáng)化了特征圖的豐富性;最后,不限于自頂向下或者自底向上的路徑,將刪除節(jié)點(diǎn)的輸入特征圖輸出到下一級特征圖中,形成新的BiFPN結(jié)構(gòu),如圖5所示。P1、P2、P3、P4為經(jīng)過主干網(wǎng)絡(luò)的特征圖,F1、F2、F3、F4為經(jīng)過BiFPN處理后的特征圖。

圖5 BiFPN結(jié)構(gòu)Fig.5 BiFPN structure
BiFPN使用加權(quán)融合,通過權(quán)值來控制對不同特征信息的學(xué)習(xí)程度,這里BiFPN使用快速歸一化法,即:
(1)
式中:ωi為經(jīng)過網(wǎng)絡(luò)訓(xùn)練的權(quán)重,由激活函數(shù)確保其大于等于零,ε用來保持整體結(jié)果的穩(wěn)定性,為常數(shù),Ii表示輸入圖片的特征,Out表示融合結(jié)果。經(jīng)過改進(jìn)后,BiFPN從Backbone網(wǎng)絡(luò)中提取不同尺度的特征圖進(jìn)行加權(quán)特征融合。
增加小目標(biāo)檢測層后,其對應(yīng)檢測層輸出也比原有多了一個(gè),分別為160×160、80×80、40×40、20×20,其中最大的特征圖為添加的小目標(biāo)檢測層。例如,在17層過后,增加上采樣的同時(shí),在20層與Backbone層中的第2層特征圖進(jìn)行拼接融合,由此獲得更大的特征圖用以進(jìn)行小目標(biāo)檢測。
YOLOv5s的損失計(jì)算主要有矩形框損失(box_loss)、置信度損失(obj_loss)和分類損失(cls_loss)三種,YOLOv5s使用CIoU_LOSS[18]作為衡量矩形框的損失。矩形框損失函數(shù)為:
(2)
(3)
式中:IoU為預(yù)測的物體框和真實(shí)的物體框的交集的面積與并集的面積之比,b、bgt分別表示預(yù)測框和真實(shí)框的中心點(diǎn),ρ2(b,bgt)為計(jì)算2個(gè)中心點(diǎn)的歐式距離,c為能同時(shí)包含預(yù)測框和真實(shí)框的最小閉包區(qū)域的對角線距離,α為權(quán)重函數(shù),υ用來度量長寬比的相似性,w為寬,h為高,gt為真實(shí)框,p為預(yù)測框。
CIoU同時(shí)考慮了邊界框的重疊面積、中心點(diǎn)距離以及長寬比,但長寬比v是一個(gè)模糊值,并不精確,并且CIoU未能很好地平衡正負(fù)樣本的問題。所以本文選用EIoU[19]作為矩形框回歸的損失函數(shù),EIoU_Loss函數(shù)為:
(4)
式中:EIoU Loss總共包含3個(gè)損失,即重疊損失、中心距離損失和寬高損失,前半部分參數(shù)與CIoU一致,Cw與Ch為覆蓋2個(gè)邊界框的最小外接框的寬度與長度。EIoU在CIoU基礎(chǔ)上將寬高比進(jìn)一步細(xì)節(jié)化,解決了寬高比過于模糊的問題,有效提升了回歸框的精度。
YOLOv5s的置信度與分類損失使用BCEWithLogitsLoss損失函數(shù),該損失函數(shù)將sigmoid與BCELoss整合到一起,在輸入之前自動(dòng)進(jìn)行sigmoid激活操作映射到(0,1),然后再對輸出和target進(jìn)行BCELoss處理。其BCEWithLogitsLoss計(jì)算公式為:
(5)
ln=-ω[yn·lnxn+(1-yn)·ln(1-xn)],
(6)
式中:N為樣本數(shù)量,ln為第n個(gè)樣本對應(yīng)的loss,xn為對應(yīng)樣本的預(yù)測概率,由sigmoid激活處理,yn為對應(yīng)樣本類別的真實(shí)概率,取0或1,ω為超參數(shù),表示樣本真實(shí)類別。sigmoid函數(shù)為:
(7)
BCEWithLogitsLoss通常用于檢測較為明顯的樣本,但對于無人機(jī)航拍的小目標(biāo)樣本而言,存在著大量負(fù)樣本,類別極其不均衡,且占比大容易對訓(xùn)練結(jié)果產(chǎn)生影響,從而降低模型檢測目標(biāo)的精度。因此,本文引入置信度與定位精度的IoU感知分類評分(IoU-Aware Classification Score,IACS),該評分可以同時(shí)表示物體樣本置信度與位置精度,從而在密集小目標(biāo)中生成更為優(yōu)秀的檢測排序。在此基礎(chǔ)上引入了Varifocal loss,該函數(shù)由Focal Loss[20]改進(jìn)而來,Varifocal loss函數(shù)定義為:
(8)
式中:p為前景類的預(yù)測概率,q為目標(biāo)IoU得分。在訓(xùn)練的正樣本中,將p設(shè)置為生成的預(yù)測框和真實(shí)框之間的IoU;而在訓(xùn)練的負(fù)樣本中,所有類別的訓(xùn)練目標(biāo)q均為0。
本文借鑒了Focal Loss利用加權(quán)的方法解決樣本不平衡的問題,Focal Loss選擇平等地對待正負(fù)樣本,但本文選擇有所重點(diǎn)地對待它們。Varifocal loss首先預(yù)測IACS評分,再通過p的γ次方人為地降低負(fù)樣本的權(quán)重,正樣本保持不變。再通過q的IoU得分提升正樣本的權(quán)重,由此實(shí)現(xiàn)將訓(xùn)練重點(diǎn)放在高質(zhì)量的樣本上。同時(shí),為了讓正負(fù)樣本的比例更加合理,在上述公式中添加了α因子來進(jìn)行平衡。
根據(jù)上述改進(jìn)方法,可以得到本文的VA-YOLO算法,其網(wǎng)絡(luò)結(jié)構(gòu)如表1所示。
實(shí)驗(yàn)環(huán)境配置:CPU為AMD Ryzen 7 5800H with Radeon Graphics 3.20 GHz,GPU為NVIDIA RTX3060 6 GB顯存,操作系統(tǒng)為Windows 11,學(xué)習(xí)框架為Pytorch1.9.0。
本文所使用的數(shù)據(jù)集是VisDrone2019-DET[21],共包含8 599 張靜態(tài)圖像,其中6 471 張用于訓(xùn)練,548 張用于驗(yàn)證,1 580 張用于測試。類別主要包含行人、人、汽車、面包車、巴士、卡車、摩托車、自行車、遮陽棚三輪車和三輪車。
使用單類別平均精度(Average Precision,AP)、多類別mAP、精準(zhǔn)率(Precision)、模型權(quán)重和檢測速度(Frame per Second,FPS)作為評價(jià)指標(biāo)。共設(shè)置了以下幾組不同情況下的實(shí)驗(yàn):YOLOv5s、替換為CA模塊的YOLOv5s、網(wǎng)絡(luò)結(jié)構(gòu)更改后的YOLOv5s、損失函數(shù)改進(jìn)后的YOLOv5s、VA-YOLO,以此來驗(yàn)證各個(gè)模塊的提升效果。實(shí)驗(yàn)結(jié)果如表2所示。

表2 消融實(shí)驗(yàn)結(jié)果Tab.2 Results of ablation experiments
表2中的結(jié)果表明,加入CA注意力機(jī)制后,mAP提升了2.14%,模型權(quán)重減少2.2 MB,這是因?yàn)閷SP替換為更輕量化的CA后,整體網(wǎng)絡(luò)層數(shù)減少了13層,從而訓(xùn)練生成的模型權(quán)重也略微降低;結(jié)構(gòu)更改后mAP提升了5.16%,但模型權(quán)重增加0.9 MB;Varifocal loss的引入帶來精度的小幅度提升,同時(shí)不會(huì)導(dǎo)致模型體積的增加;損失函數(shù)的改進(jìn)在保證模型權(quán)重不變的情況下,mAP分別提高了1.78%、3%。綜上所述,VA-YOLO的絕大多數(shù)指標(biāo)有優(yōu)勢,其中mAP提升了6.26%,且模型權(quán)重也有所下降,僅只有PFS低于其他模型。由此可見,改進(jìn)后的算法對網(wǎng)絡(luò)性能的提升起到了明顯作用。
為了驗(yàn)證本文算法較其他算法的優(yōu)勢,本文與各種主流算法進(jìn)行對比,結(jié)果如表3所示。其中mAP相比Mixed YOLOv3-LITE提升了10.5%,相比次高位提升了6.2%。而在行人、人、汽車、面包車、巴士、摩托車和自行車這7個(gè)類別的AP都達(dá)到了最優(yōu)檢測效果,各自取得了48.2%、37.4%、81.2%、40.8%、51.4%、44.8%、14.8%。本文算法經(jīng)過改進(jìn)后對小目標(biāo)關(guān)注度更多,提升了對其特征信息的利用,同時(shí)融合多個(gè)尺度的特征圖,減少特征信息的丟失,提升了對小目標(biāo)的檢測效果。根據(jù)實(shí)驗(yàn)可知,本文算法在檢測種類繁雜、檢測對象過小時(shí),依然能夠充分利用特征圖中的小目標(biāo)信息,在進(jìn)行航拍圖像小目標(biāo)檢測時(shí)擁有更大優(yōu)勢。

表3 對比試驗(yàn)結(jié)果Tab.3 Comparative experiment results
為了進(jìn)一步驗(yàn)證本文算法在實(shí)際場景中的效果,選取測試集中具有挑戰(zhàn)性的圖片進(jìn)行可視化對比,類型分別為:密集人群小目標(biāo)、復(fù)雜干擾背景小目標(biāo)、高空車輛小目標(biāo)、遠(yuǎn)距離多尺度小目標(biāo)。檢測結(jié)果如圖6所示,左側(cè)為本文算法實(shí)驗(yàn)效果,右側(cè)為未經(jīng)更改的YOLOv5s實(shí)驗(yàn)效果。經(jīng)過改進(jìn)后的算法融合了不同尺度下小目標(biāo)的語義信息,強(qiáng)化了對小目標(biāo)的特征信息利用,同時(shí)也減少對目標(biāo)的誤檢、漏檢問題。例如在夜間密集人群環(huán)境下,本文算法能夠檢測更多行人目標(biāo)與車輛目標(biāo),且受到光照等背景因素影響的可能性也更小,有效降低了誤檢率與漏檢率。綜上所述,本文改進(jìn)后的算法對比未經(jīng)更改的YOLOv5s算法具有顯著的優(yōu)勢,檢測準(zhǔn)確率更高、抗干擾更強(qiáng),對于常見環(huán)境下密集小目標(biāo)檢測的特征信息提取均有明顯提升。





本文提出的基于YOLOv5s的無人機(jī)目標(biāo)檢測算法,針對航拍目標(biāo)對象大小不一致、類別繁多且易受背景干擾的問題,首先用CA模塊替換掉Backbone網(wǎng)絡(luò)中的一個(gè)CSP模塊,在能夠小幅提升檢測精度同時(shí),還能降低模型參數(shù)量與模型權(quán)重,并對密集小目標(biāo)更有興趣。其次更改網(wǎng)絡(luò)結(jié)構(gòu),將YOLOv5s中未被利用到的淺層特征圖與已有的深層特征圖進(jìn)行融合,并添加小目標(biāo)檢測層來對小目標(biāo)進(jìn)行針對性的檢測,有效減少語義與位置信息的丟失。接著改進(jìn)損失函數(shù),引入了Varifocal loss與EIoU函數(shù),降低負(fù)樣本權(quán)重并提高正樣本權(quán)重的同時(shí)提升回歸框的準(zhǔn)確性。最后同幾種主流算法進(jìn)行對比實(shí)驗(yàn),實(shí)驗(yàn)證明,本文算法的精度在VisDrone2019-DET數(shù)據(jù)集上同其他算法相比具有一定優(yōu)勢,但由于網(wǎng)絡(luò)結(jié)構(gòu)的更改,一定程度上增加了訓(xùn)練之后模型推理的時(shí)間開銷,因此后續(xù)工作重點(diǎn)將優(yōu)化模型參數(shù),在保證速度的同時(shí)使其能夠更好地應(yīng)用于不同環(huán)境。