劉家豪, 陸玉芳
(桂林理工大學(xué)信息科學(xué)與工程學(xué)院,廣西桂林 541004)
目標(biāo)檢測是計(jì)算機(jī)視覺領(lǐng)域的重要研究課題之一,其研究內(nèi)容就是識(shí)別和定位圖像中想要關(guān)注的內(nèi)容[1]。大部分深度學(xué)習(xí)目標(biāo)檢測算法雖然在傳統(tǒng)目標(biāo)檢測中擁有較高的識(shí)別精度和準(zhǔn)確率,但在小目標(biāo)檢測方面,特征信息較少,分辨率也較低,目前人工智能領(lǐng)域?qū)τ诙ㄎ痪鹊囊蟾?,給小目標(biāo)檢測任務(wù)也提出了更高的要求。
目前已有很多學(xué)者對(duì)小目標(biāo)檢測進(jìn)行了相關(guān)的研究。在端到端的單級(jí)目標(biāo)檢測中,Liu 等[2]提出一種兼顧檢測速度和檢測精度的多框檢測算法(Single Shot MultiBox Detector,SSD)算法,該算法在圖像特征信息的提取上不夠充分,對(duì)小目標(biāo)檢測,識(shí)別效果仍然有提升空間;Redmon 等[3]提出了基于深度神經(jīng)網(wǎng)絡(luò)的對(duì)象識(shí)別和定位算法(You Only Look Once,YOLO)進(jìn)行目標(biāo)檢測,其中YOLOv2 主要使用了批標(biāo)準(zhǔn)化(batch normalization,BN)技術(shù),并且引入錨框機(jī)制,YOLOv3采用darknet-53 作為骨干網(wǎng)絡(luò)和3 種不同大小的錨框;趙鵬飛等[4]提出一種融合注意力機(jī)制的深層次小目標(biāo)檢測算法,該算法通過替換主骨干網(wǎng)絡(luò)結(jié)構(gòu)的連接并且結(jié)合不同通道的特征信息提高視覺感受區(qū)域的大小,在多尺度檢測方面進(jìn)行了特征增強(qiáng)和通道注意力機(jī)制融合不同特征層,使淺層特征語義信息更加充足。目前YOLOv5 結(jié)合前幾個(gè)版本的優(yōu)點(diǎn),在檢測精度和速度上都有所提高,但在小目標(biāo)檢測上仍然有改進(jìn)和提升的空間。
本文對(duì)于相關(guān)的課題研究與文獻(xiàn)進(jìn)行分析,在此基礎(chǔ)上提出了一種基于YOLOv5 的小目標(biāo)檢測改進(jìn)算法。在圖像中小目標(biāo)的特征信息很容易被忽略,引入雙向特征金字塔網(wǎng)絡(luò)模塊(Bidirectional Feature Pyramid Network,Bi-FPN)加權(quán)的結(jié)構(gòu),避免以往平等對(duì)待不同尺度特征的情況;針對(duì)小目標(biāo)包含特征信息少以及定位精度高的問題,加入一種卷積注意力模塊(Convolutional block attention module,CBAM)機(jī)制,可更多地識(shí)別原圖像更詳細(xì)的特征信息,分析表明,改進(jìn)后的算法和原算法相比檢測精度更高,并且提升了小目標(biāo)的檢測能力。
YOLO系列是目前目標(biāo)檢測中效果較好的網(wǎng)絡(luò)框架。YOLO算法就是直接在輸入圖像上獲取目標(biāo)對(duì)象的相關(guān)信息,使檢測速度更快[5]。YOLOv1 算法的核心思想就是將整張圖像作為網(wǎng)絡(luò)的輸入,直接在網(wǎng)絡(luò)的輸出層輸出目標(biāo)物體的類別和對(duì)應(yīng)的具體位置[6]。YOLOv2 決定在加入BN層的同時(shí),將預(yù)訓(xùn)練網(wǎng)絡(luò)變?yōu)镈arknet-19 網(wǎng)絡(luò),提出一種聯(lián)合訓(xùn)練的新算法,使用一種分層的觀點(diǎn)對(duì)物體進(jìn)行分類,用巨量的分類數(shù)據(jù)集數(shù)據(jù)來擴(kuò)充檢測數(shù)據(jù)集[7]。YOLOv3 算法的網(wǎng)絡(luò)結(jié)構(gòu)則變得更加復(fù)雜,與YOLOv2 網(wǎng)絡(luò)相比,YOLOv3 在多尺度預(yù)測和取消softmax 作為候選框分類上都有所改進(jìn),Darknet53 網(wǎng)絡(luò)結(jié)構(gòu)也更復(fù)雜,使得YOLOv3 的速度和準(zhǔn)確率有所提升。YOLOv4 網(wǎng)絡(luò)能適應(yīng)不同大小的輸入,在特征融合方面還加入了PAN-Net 結(jié)構(gòu),能夠更準(zhǔn)確地保存空間信息。
YOLOv5 是由Glenn Jocher 等基于YOLO 優(yōu)化改進(jìn)而來。YOLOv5 算法主要分為4 個(gè)部分,網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示。第1 部分為輸入端,輸入端主要用于處理數(shù)據(jù),增強(qiáng)圖像的處理能力,自適應(yīng)完成錨框計(jì)算和圖片縮放,在數(shù)據(jù)處理上采用了Mosaic數(shù)據(jù)增強(qiáng);第2部分為主干網(wǎng)絡(luò)(Backbone),由Focus 結(jié)構(gòu)和CSP 結(jié)構(gòu)組成,主要用于提取目標(biāo)特征;第3 部分為頸部網(wǎng)絡(luò)(Neck),由特征金字塔FPN和路徑聚合網(wǎng)絡(luò)結(jié)構(gòu)PAN組成,用于收集組合目標(biāo)特征;第4 部分為檢測層(Prediction),由損失函數(shù)和預(yù)測框篩選函數(shù)組成,可在大小不同的特征圖上預(yù)測不同尺寸的目標(biāo)[8]。
圖1 YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)
本文基于YOLOv5 算法提出一種結(jié)合CBAM 和Bi-FPN結(jié)構(gòu)模塊的改進(jìn)YOLOv5 算法,該算法將原網(wǎng)絡(luò)結(jié)構(gòu)的PAN-Net模塊替換成Bi-FPN模塊,在改進(jìn)網(wǎng)絡(luò)的基礎(chǔ)上引入CBAM。和原網(wǎng)絡(luò)相比主要有以下兩方面改進(jìn):
引入Bi-FPN網(wǎng)絡(luò)結(jié)構(gòu)代替原來的PAN-Net,實(shí)現(xiàn)了更高效的多尺度融合方式,對(duì)每個(gè)尺度的特征進(jìn)行權(quán)重分配,不同尺度之間的特征信息有了更好地平衡,讓網(wǎng)絡(luò)更加關(guān)注重要的層次,減少一些不必要的層的結(jié)點(diǎn)連接。
引入CBAM 通過在空間和通道二個(gè)維度上對(duì)圖像信息進(jìn)行注意力特征融合,提高各個(gè)特征在通道和空間上的聯(lián)系,更加有效地提取圖像小目標(biāo)的特征信息。
目標(biāo)檢測中對(duì)小物體檢測很困難,大物體的像素點(diǎn)多,小物體的像素點(diǎn)少,隨著卷積的深入,大物體的特征容易被保留,小物體的特征越往后越容易被忽略。所以產(chǎn)生了FPN結(jié)構(gòu),如圖2 所示。
圖2 FPN結(jié)構(gòu)
其對(duì)特征點(diǎn)先進(jìn)行下采樣,在有了一些具有高語義內(nèi)容的特征層后,重新進(jìn)行上采樣,使特征層的長寬面積變大,用大size 的feature map 去檢測小目標(biāo)。在上采樣的同時(shí)可將下采樣中與上采樣中長寬相同的特征層進(jìn)行堆疊,可保證小目標(biāo)的特征與信息和U-net結(jié)構(gòu)相似,但多了堆疊的過程。
Bi-FPN是在EfficientDet 中提出的一種加權(quán)雙向特征金字塔網(wǎng)絡(luò),它允許簡單和快速的多尺度特征融合。其目的主要是為追求更高效的多尺度融合方式,以往的特征融合是平等地對(duì)待不同尺度特征,在Bi-FPN中引入了權(quán)重,類似于attention,能更好地平衡不同尺度的特征信息。
如圖3 所示,PAN-FPN在FPN的基礎(chǔ)上引入了一條自底向上的通道來融合特征,Bi-FPN若輸入和輸出結(jié)點(diǎn)是同一水平的,則添加一條額外的邊,在不增加額外成本的同時(shí)可融合更多的特征信息。Bi-FPN 給不同特征層賦予不同的權(quán)重,讓網(wǎng)絡(luò)更加關(guān)注重要的層次,對(duì)圖像中的小目標(biāo)有更加詳細(xì)的輸出信息。
圖3 PAN-FPN與Bi-FPN特征信息對(duì)比
注意力機(jī)制主要來自對(duì)于人類視覺的研究,當(dāng)人類在觀察外界事物時(shí),一般不會(huì)整體性地看待眼前的事物,更傾向于選擇性地獲取被觀察事物的一些重要信息[9-10]。注意力機(jī)制可以幫助網(wǎng)絡(luò)模型對(duì)輸入圖像的每個(gè)部分賦予不同的權(quán)重,使模型做出更加準(zhǔn)確的識(shí)別與判定[11-12]。
目前計(jì)算機(jī)視覺中常用的注意力機(jī)制有空間注意力機(jī)制和通道注意力機(jī)制兩種[13],空間注意力機(jī)制通過調(diào)整不同通道上所有像素點(diǎn)的權(quán)重以增強(qiáng)網(wǎng)絡(luò)特征提取能力,更注重不同通道上各個(gè)像素的重要程度;通道注意力機(jī)制則調(diào)整每個(gè)通道的權(quán)重,更加注重卷積層中每個(gè)通道的重要程度。
CBAM注意力機(jī)制特點(diǎn)為輕便有效,是一種適用于卷積神經(jīng)網(wǎng)絡(luò)的注意力模塊。如圖4 所示。給定一個(gè)中間特征圖,相應(yīng)的模塊會(huì)沿著通道和空間2 個(gè)獨(dú)立的維度依次推斷注意力圖,將注意力圖進(jìn)行相應(yīng)的處理自適應(yīng)修飾特征信息,CBAM 是輕量級(jí)的通用模塊,適用于任何CNN架構(gòu),開銷較?。?4]。如圖5 所示即為CBAM 注意力機(jī)制模塊。CBAM注意力機(jī)制分為空間注意力和通道注意力兩部分,在輸入端輸入特征圖后,圖像會(huì)優(yōu)先接觸上方通道注意力處理,進(jìn)行全局平均化和最大化,經(jīng)過多層感知器(Multi-Layer Perception,MLP)處理,再通過Sigmoid 函數(shù)獲得歸一化注意力權(quán)重,通過通道處理加權(quán)到原始特征圖,通道注意力就重新標(biāo)定了原始特征[15]。
圖4 CBAM結(jié)構(gòu)示意圖
圖5 CBAM模塊工作流程
為提升特征圖的注意力權(quán)重,需對(duì)特征圖進(jìn)行通道和空間上的標(biāo)定處理。輸入特征F 進(jìn)入通道注意力模塊時(shí),通道注意力處理特征
式中:AvgPool為全局平均池化;MaxPool 為全局最大池化;W1、W0為2 個(gè)卷積層;σ 為Sigmoid 激活函數(shù);分別為平均池化特征和最大池化特征。通過平均池化和最大池化,得到2 個(gè)空間上下文描述符,將兩個(gè)描述符傳入共享網(wǎng)絡(luò)生成通道注意力特征圖Mc,經(jīng)過共享網(wǎng)絡(luò)后得到的結(jié)果,通過元素求和并輸出特征向量。
當(dāng)特征F進(jìn)入空間注意力模塊時(shí),空間注意力
式中,f7×7為卷積核處理。首先沿著通道軸進(jìn)行平均池化Fcavg和最大池化Fcmax操作,并將它們連接起來生成一個(gè)有效特征描述符。在連通的特征描述符上,用卷積核為7 ×7 的卷積層處理生成二維空間注意圖Ms,經(jīng)Sigmoid激活函數(shù)處理,并通過編碼進(jìn)行特征的強(qiáng)調(diào)或抑制。
實(shí)驗(yàn)平臺(tái)分為硬件和軟件兩部分,硬件使用八核Inter Core i7-12700H 處理器,顯卡為NVIDIA Geforce RTX 3060 顯卡,顯存為12GB,內(nèi)存為48GB。在軟件層面上操作系統(tǒng)為Ubuntu 18.04,各項(xiàng)版本分別為Python3.8、CUDA10.2 以及Pytorch1.9.0。
為測試改進(jìn)YOLOv5 算法的可行性,實(shí)驗(yàn)將使用公開數(shù)據(jù)集(Vision Meets Drone,VisDrone)對(duì)圖片中的小目標(biāo)進(jìn)行訓(xùn)練檢測,該數(shù)據(jù)集主要分為訓(xùn)練集和測試集兩部分,本實(shí)驗(yàn)訓(xùn)練集包含6 471 張圖片,測試集包含1 610 張圖片。
本次實(shí)驗(yàn)使用的是VisDrone2019 數(shù)據(jù)集,基準(zhǔn)數(shù)據(jù)集由288 個(gè)視頻片段組成,由261 908 幀和10 209個(gè)靜態(tài)圖像組成,由各無人機(jī)安裝的攝像機(jī)捕獲,涵蓋范圍廣泛,包括位置、環(huán)境、物體和密度等[16-17]。這些框架是用超過2.6 ×106個(gè)經(jīng)常感興趣的目標(biāo)邊界框手動(dòng)注釋的,例如行人、汽車、自行車和三輪車。為更好地利用數(shù)據(jù),還提供了一些重要的屬性,包括場景可見性、對(duì)象類別和遮擋。
本文所有定量分析均采用評(píng)價(jià)指標(biāo)中的AP 值、精確率(Precision)和召回率(Recall)衡量網(wǎng)絡(luò)對(duì)測試圖片的檢測性能。精確率是指正確樣本占所有樣本的比重;召回率是指樣本中正樣本被預(yù)測正確的比重,召回率高時(shí)精確度較低,召回率低時(shí)精確度較高,因此兩者存在一定的互斥關(guān)系
式中:TP為真正例,即樣本為正,預(yù)測結(jié)果為正;FP為假正例,樣本為負(fù),預(yù)測結(jié)果為正;FN 為假負(fù)例,樣本為正,預(yù)測結(jié)果為負(fù);Psmooth(r)為召回率和準(zhǔn)確率的關(guān)系;AP值為相應(yīng)的網(wǎng)絡(luò)檢測性能。
本實(shí)驗(yàn)針對(duì)Faster-RCNN、YOLOv3 和YOLOv5 3種經(jīng)典目標(biāo)檢測模型進(jìn)行定量分析,并且它們和改進(jìn)YOLOv5 算法使用相同的測試集做實(shí)驗(yàn)對(duì)比。在訓(xùn)練前選取640 ×640 的圖像,實(shí)驗(yàn)結(jié)果見表1。
由對(duì)比數(shù)據(jù)可見,改進(jìn)后YOLOv5 小目標(biāo)檢測的結(jié)果與YOLOv5 相比,mAP@0.5 提高了2.7%,精度提高了4.1%,召回率提高了2.3%,小目標(biāo)檢測的整體效果更好。相比于Faster-RCNN和YOLOv3 的目標(biāo)檢測算法,改進(jìn)算法的檢測性能也更好,檢測速度也更快。由于在YOLOv5 的網(wǎng)絡(luò)結(jié)構(gòu)中加入了Bi-FPN,能更好獲取不同尺度的特征信息,在加入了CBAM注意力機(jī)制后,有效地提高了小目標(biāo)的信息獲取,改進(jìn)后的算法對(duì)小尺寸目標(biāo)的檢測性能及最終AP值都要優(yōu)于其他幾種算法。
為進(jìn)一步了解改進(jìn)YOLOv5 算法對(duì)小目標(biāo)的檢測情況,如圖6 所示,記錄了其訓(xùn)練過程中各項(xiàng)數(shù)據(jù)的趨勢(shì),一共進(jìn)行了200 輪測試。從圖中可見,閾值為0.5、從0.5 ~0.95 的AP值始終呈上升趨勢(shì),在50 輪左右開始收斂,精度曲線在10 輪左右有一段下降趨勢(shì),因?yàn)槭苡?xùn)練中加入了預(yù)訓(xùn)練權(quán)重所影響。精度和召回率由于相互矛盾的緣故,它們的波動(dòng)趨勢(shì)相反,但整體趨勢(shì)都呈上升。
圖6 改進(jìn)YOLOv5模型訓(xùn)練關(guān)鍵參數(shù)變化
針對(duì)Faster-RCNN、YOLOv3、傳統(tǒng)YOLOv5 算法和改進(jìn)YOLOv5 算法進(jìn)行定性分析,選擇了兩張?jiān)谛∧繕?biāo)檢測具有代表性的圖片樣張,測試結(jié)果如圖7 所示。圖7(a)上方出現(xiàn)的車輛小目標(biāo)對(duì)象,分布比較集中,在比較集中的區(qū)域傳統(tǒng)目標(biāo)檢測算法對(duì)于小目標(biāo)的特征表現(xiàn)效果較差,在深層特征的語義表達(dá)信息不夠充分,所以會(huì)出現(xiàn)檢測遺漏情況。改進(jìn)后的算法由于加入了Bi-FPN網(wǎng)絡(luò)結(jié)構(gòu)模塊,所以改進(jìn)YOLOv5 算法可通過學(xué)習(xí)權(quán)重獲取不同層次的特征信息,能更有效地得到小目標(biāo)對(duì)象在深層特征的語義表達(dá)信息,最終能更精確地檢測出圖片中的車輛小目標(biāo)對(duì)象;圖7(b)整體環(huán)境較復(fù)雜,干擾因素比較多,但小目標(biāo)主要是行人。在沒有引入注意力機(jī)制之前的傳統(tǒng)目標(biāo)檢測算法對(duì)信息提取不夠充分,不能夠關(guān)注更加重要的層次,所以會(huì)出現(xiàn)對(duì)行人的檢測不夠精確,改進(jìn)后的YOLOv5算法由于引入了CBAM注意力機(jī)制,所以無論是在特征提取能力還是定位能力上跟普通目標(biāo)檢測算法相比均有提高。
圖7 不同目標(biāo)檢測算法檢測結(jié)果對(duì)比圖
從圖像中能看出改進(jìn)后的算法也提高了圖像中行人小目標(biāo)的檢測精度。由實(shí)驗(yàn)結(jié)果可見,改進(jìn)YOLOv5 算法的檢測精度更高,也改善了檢測遺漏的情況。改進(jìn)YOLOv5 算法在小目標(biāo)檢測方面檢測能力確實(shí)更好。
由于目前小目標(biāo)在圖像中像素度較低以及背景環(huán)境等因素而出現(xiàn)的較高漏檢率,檢測精度較低的問題,本實(shí)驗(yàn)在YOLOv5 的基礎(chǔ)上,在權(quán)重參數(shù)加入Bi-FPN網(wǎng)絡(luò)模塊以及CBAM 注意力機(jī)制,在VisDrone2019 數(shù)據(jù)集的測試,測試結(jié)果表明,改進(jìn)YOLOv5 目標(biāo)檢測算法在對(duì)于小目標(biāo)的檢測方面識(shí)別效果更好,并經(jīng)各項(xiàng)客觀數(shù)據(jù)分析后可知,改進(jìn)YOLOv5 算法的精度和其他幾種目標(biāo)檢測算法相比均有所提高。改進(jìn)后的YOLOv5 算法具有較好的識(shí)別能力,更加關(guān)注小目標(biāo)特征信息,在小目標(biāo)檢測能力上有了一定的提升。改進(jìn)YOLOv5 算法在某些特殊情況上仍有提升空間,后面會(huì)繼續(xù)進(jìn)行在某些極端情況下的檢測優(yōu)化工作。