国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

改進(jìn)YOLOv5的復(fù)雜道路目標(biāo)檢測算法

2022-09-06 11:08:08王鵬飛黃漢明王夢琪
計算機(jī)工程與應(yīng)用 2022年17期
關(guān)鍵詞:注意力精度特征

王鵬飛,黃漢明,王夢琪

廣西師范大學(xué) 計算機(jī)科學(xué)與工程學(xué)院,廣西 桂林 541004

隨著經(jīng)濟(jì)的發(fā)展和社會的進(jìn)步,人們對高質(zhì)量生活的追求不斷提高,汽車成為了人們不可或缺的交通工具。數(shù)據(jù)顯示,截至2021 年12 月27 日,中國機(jī)動車保有量將近4億輛,其中汽車保有量超過3億輛,每年新車注冊數(shù)量超過3 000 萬,總量和增幅均居世界首位。汽車保有量的快速增加方便了人們的出行,有效促進(jìn)了中國經(jīng)濟(jì)的發(fā)展,但也隨之加劇了道路擁堵、交通事故傷亡等道路交通問題。為了解決這些問題,國家制定了相關(guān)的法律法規(guī),加強(qiáng)了道路交通管理,加大了對道路建設(shè)的投入,并對人們進(jìn)行交通安全教育的普及等,這些措施頗有成效但是解決道路交通問題依舊任重道遠(yuǎn)。

近年來,人工智能快速發(fā)展,汽車自動駕駛技術(shù)成為解決傳統(tǒng)汽車道路交通問題的重要技術(shù),受到了許多國家及企業(yè)的廣泛關(guān)注[1]。目標(biāo)檢測算法是汽車自動駕駛系統(tǒng)的基礎(chǔ)和重要組成部分,總的來說,可以分為傳統(tǒng)的目標(biāo)檢測算法以及基于深度學(xué)習(xí)的目標(biāo)檢測算法,傳統(tǒng)的目標(biāo)檢測算法是把人工獲取的目標(biāo)特征信息[2-5]與機(jī)器學(xué)習(xí)分類器[6-7]結(jié)合實現(xiàn)目標(biāo)檢測,由于該類方法太過依賴人為提取特征,因此檢測精度和速度都無法滿足要求?;谏疃葘W(xué)習(xí)的目標(biāo)檢測算法又可以分為兩階段(Two Stage)算法和一階段(One Stage)算法[8]。兩階段算法首先生成可能包含待檢測目標(biāo)的候選區(qū)域,然后對生成的候選區(qū)域進(jìn)行分類并進(jìn)行位置校準(zhǔn)得到最終的檢測結(jié)果,代表算法主要有R-CNN[9]、Fast R-CNN[10]、Faster R-CNN[11];一階段算法不再提取候選區(qū)域,而是將目標(biāo)檢測的整個過程轉(zhuǎn)化成一個回歸問題,從而實現(xiàn)對輸入圖像進(jìn)行一次處理就能夠得到目標(biāo)物體的類別與位置信息,網(wǎng)絡(luò)結(jié)構(gòu)簡單并且減少了大量冗余的計算,代表算法主要有YOLO[12]、SSD[13]、YOLOv2[14]、YOLOv3[15]、YOLOv4[16]、YOLOv5。YOLOv4 之前,兩階段目標(biāo)檢測算法的精度較高,但實時性不理想,一階段目標(biāo)檢測算法在速度上有一定優(yōu)勢,但檢測精度有所欠缺,而YOLOv4以及緊隨其后的YOLOv5的提出,使得一階段目標(biāo)檢測算法無論是檢測精度還是檢測速度都大幅超越兩階段目標(biāo)檢測算法。

道路背景下的目標(biāo)檢測算法需要快速且準(zhǔn)確地識別并定位目標(biāo),在一般的道路背景下,現(xiàn)有的目標(biāo)檢測算法已經(jīng)可以勝任,但在復(fù)雜的道路背景下,由于目標(biāo)多而雜,且距離和角度變化大,會存在著密集目標(biāo)的遮擋問題以及小目標(biāo)的檢測問題,容易造成誤檢和漏檢,大大影響算法的檢測精度[17],從而會對人們的生命財產(chǎn)安全造成威脅。因此,解決復(fù)雜道路背景下的密集目標(biāo)遮擋問題以及小目標(biāo)的檢測問題具有重要意義[18]。

Cai 等人[19]引入級聯(lián)分類器,對重疊率(intersection over union,IoU)的閾值進(jìn)行了調(diào)整,提出了Cascade RCNN,該算法對檢測框存在的噪聲干擾問題進(jìn)行了優(yōu)化,有效提高了密集遮擋目標(biāo)以及小目標(biāo)的檢測精度。陳幻杰等人[20]選擇分類處理不同尺寸的目標(biāo),當(dāng)檢測中等目標(biāo)時,加深網(wǎng)絡(luò)的深度,可以提取到更多的語義特征,當(dāng)檢測小目標(biāo)時,則引入反卷積和區(qū)域映射,以獲得更高分辨率的特征圖,大幅提升了中小目標(biāo)的檢測精度。李軒等人[21]為了解決密集目標(biāo)的遮擋問題,提出了Occlusion Loss,通過提高預(yù)測框和真實框的匹配程度以使定位更加準(zhǔn)確,與此同時,一個檢測框?qū)?yīng)多個目標(biāo)的問題得到改善,目標(biāo)漏檢情況也相應(yīng)減少,檢測精度得到大幅提升。Chu等人[22]提出了EMD Loss損失函數(shù)以及Set NMS 非極大值抑制算法,在密集目標(biāo)檢測數(shù)據(jù)集中表現(xiàn)極佳。Li等人[23]提出Quality Focal Loss,將分類得分與預(yù)測的質(zhì)量得分關(guān)聯(lián)起來,并能夠處理0到1之間的連續(xù)標(biāo)簽值,有效避免了之后進(jìn)行非極大值抑制(non-maximum suppression,NMS)操作時出現(xiàn)錯誤抑制,提高了檢測精度??梢钥闯觯鉀Q密集目標(biāo)的遮擋問題和小目標(biāo)檢測問題主要通過改進(jìn)回歸損失函數(shù)、使用多尺度檢測、改進(jìn)非極大值抑制等方式。在現(xiàn)階段,復(fù)雜背景下的目標(biāo)檢測還存在很多挑戰(zhàn),現(xiàn)有的方法尚無法滿足現(xiàn)實需要,還需要更加深入的研究[24]。

針對復(fù)雜道路背景下的密集遮擋目標(biāo)和小目標(biāo)導(dǎo)致的誤檢、漏檢問題,本文以YOLOv5 4.0 版本中最小體積的YOLOv5s 算法為基礎(chǔ)進(jìn)行相關(guān)研究改進(jìn),具體概述如下:

(1)為了提升YOLOv5s 在復(fù)雜道路背景下對密集遮擋目標(biāo)的檢測能力,引入Quality Focal Loss 回歸損失函數(shù)來代替原始的Focal Loss[25],將定位目標(biāo)與分類得分相關(guān)聯(lián),并能夠處理連續(xù)的標(biāo)簽值,使得之后做NMS操作時更加合理有效。

(2)為了提升YOLOv5s 在復(fù)雜道路背景下對小目標(biāo)的檢測能力,增加一層淺層檢測層來檢測更小的目標(biāo),將原網(wǎng)絡(luò)的三尺度檢測改為四尺度檢測,特征融合部分也作相應(yīng)改進(jìn),增強(qiáng)網(wǎng)絡(luò)對小目標(biāo)的學(xué)習(xí)能力。

(3)為了彌補原始YOLOv5s 算法中特征金字塔網(wǎng)絡(luò)[26(]feature pyramid networks,F(xiàn)PN)+PAN[27]特征融合結(jié)構(gòu)缺少原始信息的缺點,借鑒BiFPN[28]的特征融合思想,提出了去權(quán)重的BiFPN,充分利用深層、淺層以及原始特征的信息,加強(qiáng)了不同部分之間的特征融合,減少了卷積過程中特征信息的丟失,提升了算法的檢測精度。

(4)為了進(jìn)一步提升YOLOv5s 算法在復(fù)雜道路背景下檢測時的特征提取能力,引入CBAM[29]注意力機(jī)制,通過實驗探究,將CBAM注意力模塊嵌入至算法的檢測頭前,增強(qiáng)算法的特征學(xué)習(xí)能力,讓算法更關(guān)注有用的信息。

1 YOLOv5目標(biāo)檢測算法

YOLOv5是Ultralytics團(tuán)隊在2020年6月提出的一種典型的One Stage 目標(biāo)檢測算法,該算法匯集了很多深度學(xué)習(xí)目標(biāo)檢測框架的優(yōu)點,并且從提出至今,一直在更新迭代版本,本文使用的是4.0版本,其根據(jù)網(wǎng)絡(luò)結(jié)構(gòu)的深度和寬度不同,分為了YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四個體量不同的版本,其中s最小,x 最大,本文以YOLOv5s 為基礎(chǔ)進(jìn)行相關(guān)改進(jìn),目前作者只公開了源代碼,網(wǎng)址為https://github.com/ultralytics/yolov5,還未發(fā)表相應(yīng)學(xué)術(shù)論文。YOLOv5 的網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示,可知主要分為輸入端、Backbone、Neck、輸出端四部分。

圖1 YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.1 YOLOv5 network structure

1.1 輸入端

YOLOv5的輸入端采用了Mosaic數(shù)據(jù)增強(qiáng)方式,使用隨機(jī)縮放、隨機(jī)裁剪、隨機(jī)排布的方式進(jìn)行拼接,豐富了數(shù)據(jù)集,提升了小目標(biāo)檢測的效果,也增強(qiáng)了算法的魯棒性。Anchor方面,YOLOv5可以針對不同的數(shù)據(jù)集,自適應(yīng)地計算不同訓(xùn)練集中的最佳錨框值。YOLOv5還使用了自適應(yīng)圖片縮放,簡單的改進(jìn)使得計算量大大減少,推理速度得到了37%的提升。

1.2 Backbone

YOLOv5 的Backbone 部分使用Focus 模塊實現(xiàn)了快速下采樣,該模塊能夠在沒有信息丟失的情況下將信息集中到通道上,使接下來的特征提取更加充分。Backbone 部分還使用了C3 模塊,即有3 次卷積的CSPBottleneck模塊,增強(qiáng)了算法的學(xué)習(xí)能力,并且能夠在保持算法檢測精度的同時實現(xiàn)輕量化。SPP 模塊的使用則提高了圖像的尺度不變性,有效增加了主干特征的接收范圍,更容易使網(wǎng)絡(luò)收斂,提高了準(zhǔn)確率。

1.3 Neck

YOLOv5 的Neck 部分使用FPN 和PAN 結(jié)合的結(jié)構(gòu)。眾所周知,深層特征圖具有更強(qiáng)的語義信息,而定位信息較弱,淺層特征圖具有更強(qiáng)的位置信息,而語義信息較弱。FPN 實現(xiàn)了語義信息從深層特征圖到淺層特征圖的傳遞,PAN則實現(xiàn)了定位信息從淺層特征層到深層特征層的傳遞,F(xiàn)PN 與PAN 組合,從不同的主干層對不同的檢測層進(jìn)行參數(shù)聚合,大大加強(qiáng)了網(wǎng)絡(luò)的特征融合能力。

1.4 輸出端

輸出端的邊界框回歸損失函數(shù)采用CIOU_Loss,其充分考慮到了重疊面積、中心點距離、長寬比三個重要幾何因素,對一些遮擋重疊的目標(biāo)有所改進(jìn),大幅提升了預(yù)測框回歸的速度和精度。檢測層使用了Sigmoid激活函數(shù),連續(xù)且平滑,便于求導(dǎo)。

YOLOv5 目標(biāo)檢測算法通過匯集各個算法網(wǎng)絡(luò)的優(yōu)點,使得檢測速度和精度都達(dá)到了較高的水平,并且格式轉(zhuǎn)換容易,更易部署。但是由于YOLOv5的實驗主要是基于MS COCO 數(shù)據(jù)集[30]的,目標(biāo)較為寬泛,在遮擋目標(biāo)和小目標(biāo)檢測方面還有待改進(jìn),為此,本文選擇使用YOLOv5系列中最小體積的YOLOv5s作為基礎(chǔ)算法,通過一系列實驗優(yōu)化,從而得到更加適用于復(fù)雜道路的目標(biāo)檢測算法。

2 YOLOv5改進(jìn)

2.1 Focal Loss的改進(jìn)

(1)Focal Loss存在的問題

在目標(biāo)檢測算法中,輸入一張圖像會產(chǎn)生非常多的候選框,但這些候選框中只有很少一部分包含著目標(biāo)物體,這就存在著類別不均衡問題。類別不均衡問題就是有大量負(fù)樣本,這些負(fù)樣本占總loss 的比重較大,并且大多比較容易分類,這就會使得算法的整體學(xué)習(xí)方向跑偏,遠(yuǎn)離人們的期望。Focal Loss的提出就是為了解決樣本的類別不均衡問題,函數(shù)公式如下:

其中,y是真實標(biāo)簽值,p是經(jīng)過激活函數(shù)的輸出,即預(yù)測樣本屬于1 的概率,α用來平衡正負(fù)樣本的權(quán)重,(1-p)γ和pγ用來調(diào)制每個樣本的權(quán)重,通過這個損失函數(shù),可以減少容易分類的樣本的權(quán)重,使得算法模型在訓(xùn)練學(xué)習(xí)時更專注于難分類的樣本,從而實現(xiàn)One Stage 目標(biāo)檢測算法在不影響原有速度的同時達(dá)到Two Stage算法的準(zhǔn)確度。但是Focal Loss存在一個問題,那就是類別得分和定位質(zhì)量得分在訓(xùn)練的時候分別進(jìn)行,而在推理的時候卻將兩者相乘作為NMS 分?jǐn)?shù)排序的依據(jù),這就使得訓(xùn)練和推理之間存在誤差缺口,導(dǎo)致有些候選框的位置預(yù)測的很準(zhǔn)但是置信度不高,之后做NMS 的時候這些框就會被抑制掉,從而導(dǎo)致最后剩下的檢測框定位精度較差,影響最終的檢測精度。

(2)Focal Loss的改進(jìn)

為了解決這個問題,首先將對位置的質(zhì)量預(yù)測與分類得分進(jìn)行合并,也就是將預(yù)測的分類得分與定位IoU(重疊率)相關(guān)聯(lián)。由于Focal Loss之前是為One Stage算法的分類分支服務(wù)的,只支持0 或者1 這樣的離散類別標(biāo)簽,而現(xiàn)在分類和質(zhì)量進(jìn)行關(guān)聯(lián)之后,標(biāo)簽變成了0~1之間的連續(xù)值,F(xiàn)ocal Loss不再適用,因此本文引入了Quality Focal Loss(QFL)。QFL 是對Focal Loss 在連續(xù)標(biāo)簽上的擴(kuò)展,首先,將交叉熵部分-lg(pt)擴(kuò)展到完全形式-( ( 1-y)lg(1-σ)+ylgσ),然后將每個樣本的縮放因子(1-pt)γ泛化為預(yù)測值和實際值之間的絕對值 |y-σ|β(β≥0 ),最終擴(kuò)展后的損失函數(shù)即為QFL。函數(shù)定義如下:

其中,y是0~1 的質(zhì)量標(biāo)簽,σ為預(yù)測。在復(fù)雜的道路背景下,當(dāng)待檢測目標(biāo)非常密集且有較多遮擋時,它們的候選框之間的交叉和重疊現(xiàn)象會有所增加,訓(xùn)練和推理之間的誤差缺口也會相應(yīng)變大,NMS 時更容易錯誤抑制,定位精度也更容易受到影響。而本文通過引入QFL,實現(xiàn)了定位質(zhì)量得分與類別概率得分的合并統(tǒng)一,有效彌補了原始Focal Loss訓(xùn)練和推理之間存在的誤差缺口,大大降低了NMS的錯誤抑制率,從而提升了對密集遮擋目標(biāo)的定位精度。

2.2 多尺度檢測的改進(jìn)

YOLOv5 系列算法的網(wǎng)絡(luò)結(jié)構(gòu)只有網(wǎng)絡(luò)深度和寬度的不同,其他都相同,都采用了多尺度檢測,輸入圖像尺寸為640×640的前提下,算法使用20×20的特征層檢測大尺寸的目標(biāo),將20×20 的特征層2 倍上采樣與40×40的特征層進(jìn)行融合檢測中等尺寸的目標(biāo),將40×40的特征層2倍上采樣與80×80的特征層進(jìn)行融合檢測小尺寸的目標(biāo)。YOLOv5 在20×20、40×40、80×80 三種尺度上實現(xiàn)了對大、中、小三種尺寸目標(biāo)的檢測,彌補了單尺度目標(biāo)檢測算法檢測目標(biāo)的尺寸范圍較小的缺點,檢測準(zhǔn)確率得到大幅提升。

而在復(fù)雜的道路背景下,很多目標(biāo)由于距離較遠(yuǎn),在圖像或視頻中占有的尺寸會非常小,原始YOLOv5用來檢測小尺寸目標(biāo)的80×80 尺度無法完全覆蓋這些更加小的目標(biāo),由于將這些更小目標(biāo)快速準(zhǔn)確地檢測出來對于道路交通安全尤為重要,所以本文在YOLOv5s 三尺度檢測的基礎(chǔ)上,增加淺層檢測層,在輸入尺寸為640×640 的前提下,增加一層160×160 尺寸的檢測層來檢測更小尺寸的目標(biāo),將原算法的三尺度檢測改為四尺度檢測。同時將原算法的特征融合部分也相應(yīng)改為四尺度特征融合,增加160×160的特征層,并將80×80的特征層2 倍上采樣與新增加的160×160 的特征層進(jìn)行融合,以供160×160的檢測層檢測更小目標(biāo)時使用。通過改進(jìn)多尺度檢測,增大了算法能夠檢測的目標(biāo)尺寸范圍,更加適用于目標(biāo)尺寸變化大的復(fù)雜道路場景,有效提高了檢測精度。算法改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)圖如圖2 所示,其中,Output 部分的紅色虛線內(nèi)是增加的第四尺度的檢測,Neck 部分的紅色虛線內(nèi)是相應(yīng)增加的第四尺度的特征融合部分。

圖2 改進(jìn)多尺度檢測后的網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.2 Network structure diagram after improved multi-scale detection

2.3 Neck部分的改進(jìn)

YOLOv5s 算法的Neck 部分使用的是FPN 和PAN結(jié)合的結(jié)構(gòu)。FPN 可以將深層特征層具有的更強(qiáng)的語義信息傳遞到淺層特征層,PAN則可以將淺層特征層具有的更強(qiáng)的定位信息傳遞到深層特征層,F(xiàn)PN與PAN組合,從不同的主干層對不同的檢測層進(jìn)行參數(shù)聚合,結(jié)構(gòu)如圖3(b)所示。

圖3 不同特征融合結(jié)構(gòu)示意圖Fig.3 Schematic diagram of different feature fusion structure

這種組合雖然有效加強(qiáng)了網(wǎng)絡(luò)的特征融合能力,但相應(yīng)地會出現(xiàn)一個問題,那就是PAN結(jié)構(gòu)的輸入全部都是經(jīng)過FPN結(jié)構(gòu)處理過的特征信息,缺少主干特征提取網(wǎng)絡(luò)部分的原始特征信息,缺少原始信息參與學(xué)習(xí)就會很容易導(dǎo)致訓(xùn)練學(xué)習(xí)出現(xiàn)偏差,影響檢測準(zhǔn)確度。為了解決這個問題,本文借鑒加權(quán)雙向特征金字塔網(wǎng)絡(luò)(BiFPN),以2.2節(jié)改進(jìn)后的算法網(wǎng)絡(luò)為基礎(chǔ)進(jìn)行改進(jìn)。

BiFPN 首先對FPN+PAN 結(jié)構(gòu)進(jìn)行簡化,去掉只有一條輸入邊和輸出邊的結(jié)點,并且如果輸入和輸出結(jié)點是同一層的,就添加一條額外的邊,結(jié)構(gòu)如圖3(c)所示。原始的BiFPN 會根據(jù)不同輸入特征的重要性設(shè)置不同的權(quán)重,同時將此結(jié)構(gòu)作為一個整體反復(fù)使用以加強(qiáng)特征融合,但本文通過實驗發(fā)現(xiàn)YOLOv5s 引入帶權(quán)重的BiFPN會增加過多參數(shù)量和計算量,并且檢測效果并不好。本文認(rèn)為檢測效果不好是因為對輸入的特征層設(shè)置權(quán)重與在特征層后添加注意力機(jī)制極其相似,而注意力機(jī)制在不同場景下嵌入至不同網(wǎng)絡(luò)的不同位置,對檢測效果的影響都不同。本文只是想要使原始算法的PAN結(jié)構(gòu)的輸入能有原始特征信息的參與,所以去掉BiFPN 的權(quán)重部分,只借鑒其特征融合方法,提出去權(quán)重的BiFPN。本文提出的去權(quán)重的BiFPN 的結(jié)構(gòu)示意圖同樣如圖3(c)所示,算法改進(jìn)后,PAN 結(jié)構(gòu)每個結(jié)點的輸入邊都有一條是來自主干特征提取網(wǎng)絡(luò)部分的原始特征層,訓(xùn)練過程有了原始特征信息的持續(xù)參與,就可以有效避免訓(xùn)練學(xué)習(xí)過程偏離人們的期望,特征融合也更加合理有效,從而使得檢測精度有所提升,同時為了保持算法的輕量化,本文只使用一次去權(quán)重的BiFPN進(jìn)行特征融合。改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。

圖4 改進(jìn)Neck部分后的網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.4 Network structure diagram after improving Neck part

2.4 融合注意力模塊

深度學(xué)習(xí)中的注意力機(jī)制(attention mechanism)在本質(zhì)上其實與人類的選擇性視覺注意力機(jī)制相似,其核心目標(biāo)也是根據(jù)當(dāng)前的任務(wù),從大量信息中篩選出更為關(guān)鍵的信息,從而使得算法模型朝著更偏向任務(wù)目標(biāo)的方向去訓(xùn)練學(xué)習(xí)。而目標(biāo)檢測算法在日益復(fù)雜的道路背景下應(yīng)用,恰恰需要算法能夠從復(fù)雜的信息中提取出有用的目標(biāo)信息,過濾掉無關(guān)信息,因此本文引入CBAM注意力模塊。

CBAM包含兩個獨立的子模塊,分別是通道注意力模塊(channel attention module,CAM)和空間注意力模塊(spartial attention module,SAM),它們相互結(jié)合,相比于SENet[31]只關(guān)注通道的注意力機(jī)制,可以取得更好的結(jié)果,結(jié)構(gòu)如圖5所示。

圖5 CBAM模塊結(jié)構(gòu)圖Fig.5 CBAM module structure diagram

其他學(xué)者已經(jīng)通過實驗證明了嵌入CBAM 模塊的卷積神經(jīng)網(wǎng)絡(luò)在圖像分類、目標(biāo)檢測任務(wù)中能夠獲得較好的性能提升。但不同的算法在不同的場景應(yīng)用,CBAM 注意力模塊具體嵌入網(wǎng)絡(luò)結(jié)構(gòu)中的哪一部分并沒有固定的理論說法。因此本文基于2.3 節(jié)改進(jìn)后的算法YOLOv5s-QFB(Quality Focal Loss+Four Layers+BiFPN),通過實驗探究CBAM注意力模塊嵌入到算法網(wǎng)絡(luò)的骨干部分(Backbone)、頸部(Neck)、檢測頭部(Head)分別對網(wǎng)絡(luò)性能的影響。由于CBAM注意力模塊是對重要的特征進(jìn)行增強(qiáng),所以本文將CBAM注意力模塊嵌入到網(wǎng)絡(luò)結(jié)構(gòu)中每一次特征融合后,即在add、concat操作之后以及檢測頭之前,從而產(chǎn)生四種新的網(wǎng)絡(luò)模型:YOLOv5s-QFB-A、YOLOv5s-QFB-B、YOLOv5s-QFB-C、YOLOv5s-QFB-D,具體位置如圖6所示。

圖6(a)是將CBAM 融入骨干部分的每個C3 結(jié)構(gòu)內(nèi)部的add和concat后,圖6(b)是將CBAM融入頸部的每個C3 結(jié)構(gòu)內(nèi)部的add 和concat 后,圖6(c)是在頸部concat后增加CBAM注意力層,圖6(d)是在每個檢測頭部前面增加CBAM注意力層。

圖6 四種嵌入CBAM模塊的YOLOv5s-QFB模型Fig.6 Four kinds of YOLOv5s-QFB models embedded in CBAM modules

2.5 改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)

后續(xù)的實驗證明,只有在檢測頭前添加CBAM 層才可以提升算法的檢測精度,因此,基于YOLOv5s 算法,通過四種方法改進(jìn)后,就得到了本文最終提出的算法YOLOv5s-QFBC(Quality Focal Loss+Four Layers+BiFPN+CBAM),其網(wǎng)絡(luò)結(jié)構(gòu)如圖7所示。

圖7 YOLOv5s-QFBC的網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.7 Network structure diagram of YOLOv5s-QFBC

3 實驗與結(jié)果分析

3.1 實驗環(huán)境

本文的實驗環(huán)境:CPU為Intel?Core?i7-10700KF CPU @ 3.80 GHz 3.79 GHz,32 GB 運行內(nèi)存,GPU 為NVIDIAGeForceRTX 3080,10 GB 顯存,Windows 10,64 位操作系統(tǒng),Pytorch 深度學(xué)習(xí)框架,編程語言為python,GPU加速軟件為CUDA11.1和CUDNN8.0.5。

3.2 實驗數(shù)據(jù)集

為了驗證本文改進(jìn)的目標(biāo)檢測算法在復(fù)雜道路背景下的有效性,本文在公開的自動駕駛數(shù)據(jù)集KITTI[32]上進(jìn)行主要實驗探究,并使用自制的騎乘人員頭盔數(shù)據(jù)集Helmet輔助實驗驗證。

(1)KITTI數(shù)據(jù)集

KITTI 數(shù)據(jù)集是目前國際上最大的自動駕駛場景下的計算機(jī)視覺算法評測數(shù)據(jù)集之一,由德國卡爾斯魯厄理工學(xué)院和豐田美國技術(shù)研究院聯(lián)合創(chuàng)辦。KITTI數(shù)據(jù)集是在高速公路、市區(qū)、鄉(xiāng)村等場景采集的真實圖像數(shù)據(jù),單張圖像中最多可達(dá)30個行人和15輛車,遠(yuǎn)處小目標(biāo)數(shù)量很多并且還有不同程度的截斷與遮擋,給目標(biāo)檢測算法帶來了很大的挑戰(zhàn)。整個數(shù)據(jù)集分為Car、Van、Truck、Tram、Pedestrian、Person_sitting、Cyclist、Misc、DontCare九類標(biāo)簽,考慮到實際情況,本文在數(shù)據(jù)預(yù)處理階段對類別進(jìn)行重新劃分,將Car、Van、Truck、Tram 合并為Car 類,將Pedestrian、Person_sitting 合并為現(xiàn)在的Pedestrian,原來的Cyclist這一類保持不變,去除Misc 和DontCare 類,即本文主要關(guān)注三種道路目標(biāo)類別:車輛(Car)、行人(Pedestrian)、騎車的人(Cyclist)。處理后各類目標(biāo)的數(shù)量如表1所示。

表1 KITTI數(shù)據(jù)集處理后各類目標(biāo)的數(shù)量Table 1 Number of targets after KITTI dataset processing

KITTI 數(shù)據(jù)集共有7 481 張帶標(biāo)注的圖像,本文將其按照8∶1∶1 的比例劃分訓(xùn)練集、驗證集和測試集,劃分后各部分圖像張數(shù)如表2 所示。實驗在訓(xùn)練集和驗證集上進(jìn)行訓(xùn)練學(xué)習(xí),在測試集上檢測效果。

表2 KITTI數(shù)據(jù)集劃分Table 2 KITTI dataset partition

(2)Helmet數(shù)據(jù)集

Helmet 騎乘人員頭盔數(shù)據(jù)集是本文為了輔助算法的實驗驗證而自制的基于復(fù)雜道路背景的數(shù)據(jù)集,對查處不按規(guī)定佩戴頭盔的交通違法行為具有積極的現(xiàn)實意義。實驗數(shù)據(jù)集包括三部分,一部分為從公開數(shù)據(jù)集MS COCO 中提取的“bicycle”和“motorcycle”類的圖片,一部分為從百度和谷歌上爬取的相關(guān)圖片,另一部分為從網(wǎng)絡(luò)上下載的其他相關(guān)數(shù)據(jù)集,共10 837 張圖片。使用labelimg軟件重新對數(shù)據(jù)進(jìn)行標(biāo)注,標(biāo)簽有佩戴頭盔(helmet)和未佩戴頭盔(nohelmet)兩類,數(shù)量如表3所示。

表3 Helmet數(shù)據(jù)集處理后各類目標(biāo)的數(shù)量Table 3 Number of targets after Helmet dataset processing

同樣將其按照8∶1∶1的比例劃分訓(xùn)練集、驗證集和測試集,劃分后各部分圖像張數(shù)如表4所示。實驗在訓(xùn)練集和驗證集上進(jìn)行訓(xùn)練學(xué)習(xí),在測試集上檢測效果。

表4 Helmet數(shù)據(jù)集劃分Table 4 Helmet dataset partition

KITTI 數(shù)據(jù)集與Helmet 數(shù)據(jù)集展示如圖8 所示,可以看出,遠(yuǎn)處小目標(biāo)較多并且有不同程度的截斷與遮擋。

圖8 數(shù)據(jù)集展示Fig.8 Dataset presentation

3.3 網(wǎng)絡(luò)訓(xùn)練與測試

本文實驗采用精度(precision,P)、召回率(recall,R)、多個類別平均精度的平均值(mean average precision,mAP)、占用存儲空間大?。▎挝唬篗B)、參數(shù)量、浮點運算次數(shù)(floating point operations,F(xiàn)LOPS)、每秒檢測幀數(shù)(frames per second,F(xiàn)PS)幾項性能指標(biāo)評判算法的性能。其中精度P、召回率R和mAP分別表示為:

式中,TP(true positives)表示被正確檢測出的目標(biāo)數(shù),F(xiàn)P(false positives)表示檢測錯誤的目標(biāo)數(shù),F(xiàn)N(false negatives)表示未被檢測出來的目標(biāo)數(shù),n表示共需要分類的類別數(shù),AP(average precision)表示某個目標(biāo)類的平均精度。

實驗設(shè)置基本采用YOLOv5的官方推薦參數(shù)設(shè)置,采用自適應(yīng)anchor,采用mosaic數(shù)據(jù)增強(qiáng),輸入圖像尺寸大小為640×640,訓(xùn)練時batchsize為16,測試時batchsize為1,epoch 為300,初始化學(xué)習(xí)率為0.01,學(xué)習(xí)率動量為0.937。

3.4 實驗結(jié)果與分析

3.4.1 改進(jìn)Focal Loss的實驗分析

為了驗證改進(jìn)Focal Loss損失函數(shù)的有效性,同時也為了與其他損失函數(shù)方法進(jìn)行全面比較,本文以YOLOv5s為基礎(chǔ),將算法中原始的Focal Loss損失函數(shù)分別改為本文引入的Quality Focal Loss以及BCEWith-LogitsLoss[33]和Varifocal Loss[34]兩種常用損失函數(shù),其余部分不做改動,改動后的算法分別稱作YOLOv5s-Q、YOLOv5s-BCE、YOLOv5s-Vari,將這三種算法與原始算法在KITTI 數(shù)據(jù)集上進(jìn)行實驗對比,實驗結(jié)果如表5所示。

表5 改進(jìn)Focal Loss驗證實驗Table 5 Improved Focal Loss verification experiment

從表5 中可以看出,將原始Focal Loss 損失函數(shù)改為BCEWithLogitsLoss和Varifocal Loss不僅無法提高檢測精度,而且降低了檢測速度,而改為本文引入的Quality Focal Loss,則可以在沒有任何損耗的情況下提高0.3個百分點的檢測精度,證明了該改進(jìn)方法的有效性。

3.4.2 改進(jìn)多尺度檢測的實驗分析

為了驗證改進(jìn)多尺度檢測的有效性,本文將原始YOLOv5s算法的三尺度檢測改為四尺度檢測,多尺度特征融合部分也相應(yīng)進(jìn)行適配改進(jìn),其余部分不變,改進(jìn)后的算法稱作YOLOv5s-F,然后將其與原始的YOLOv5s算法網(wǎng)絡(luò)在KITTI數(shù)據(jù)集上進(jìn)行實驗對比,實驗結(jié)果如表6所示。

表6 改進(jìn)多尺度檢測驗證實驗Table 6 Improved multi-scale detection verification experiment

從表6 中可以看出,通過多尺度檢測的改進(jìn),雖然算法模型的體積、參數(shù)量以及計算量都有少量增加,并且FPS有所降低,但都在可接受范圍內(nèi)并且算法仍然保持著較好的實時性,在此情況下檢測精度得到了1.2 個百分點的提升,因此證明了該改進(jìn)方法的有效性。

3.4.3 改進(jìn)Neck部分的實驗分析

為了驗證Neck 部分改進(jìn)的有效性,本文將原始YOLOv5s 算法中的FPN+PAN 結(jié)構(gòu)改為本文提出的去權(quán)重的BiFPN 結(jié)構(gòu),其余部分保持不變,改進(jìn)后的算法稱作YOLOv5s-B,然后將其與原始YOLOv5s 算法在KITTI數(shù)據(jù)集上進(jìn)行實驗對比,實驗結(jié)果如表7所示。

表7 改進(jìn)Neck部分驗證實驗Table 7 Improved Neck partial validation experiment

從表7 中可以看出,通過改進(jìn)Neck 部分,使得算法在少量增加計算量和參數(shù)量的情況下,提升了0.6 個百分點的檢測精度,檢測速度也有所加快,說明該改進(jìn)在一定程度上加強(qiáng)了Neck 部分的特征融合,證明了改進(jìn)方法的有效性。

3.4.4 融合注意力模塊的實驗分析

為了驗證融合注意力模塊的有效性以及探究應(yīng)該將注意力模塊嵌入到算法的具體哪個位置,本文以經(jīng)過了上面三種改進(jìn)方法改進(jìn)后的算法(YOLOv5s-QFB)為基礎(chǔ),將CBAM注意力模塊分別嵌入算法不同位置的add和concat操作之后以及檢測頭前,形成了2.4節(jié)中的四個新的算法,然后將改進(jìn)后的這四個算法與YOLOv5s-QFB算法在KITTI數(shù)據(jù)集上進(jìn)行實驗對比,實驗結(jié)果如表8所示。

表8 融合注意力模塊驗證實驗Table 8 Fusion attention module verification experiment

表8 中的實驗結(jié)果表明,只有YOLOv5s-QFB-D 算法即把CBAM注意力模塊嵌入到檢測頭前才能提升算法的檢測精度,并且只增加了很少的計算量就提升了0.2個百分點的檢測精度,進(jìn)一步提升了檢測效果,證明了該方法的有效性。同時,為了與其他注意力機(jī)制方法進(jìn)行更加全面的比較,本文同樣以YOLOv5s-QFB 為基礎(chǔ),分別將本文引入的CBAM 注意力,以及SE[31]、ECA[35]、CA[36]這三種常用的注意力機(jī)制嵌入至算法的檢測頭前,其他部分不做改動,在KITTI 數(shù)據(jù)集上進(jìn)行實驗對比,實驗結(jié)果如表9所示。

表9 融合不同注意力模塊對比實驗Table 9 Comparative experiment of fusing different attention modules

從表9中可以看出,算法融入四種不同的注意力模塊增加的參數(shù)量和計算量相差不大;在檢測精度方面,融合SE、ECA 注意力分別降低了0.2 個百分點和0.6 個百分點的檢測精度,融合CA注意力檢測精度沒有改變,只有融合CBAM 注意力提高了0.2 個百分點的檢測精度;在檢測速度方面,融合四種注意力都會帶來一定程度的速度損失,但融合CBAM 注意力帶來的速度損失最少。綜上所述,本文引入的CBAM 注意力相比其他常用的注意力機(jī)制,更具優(yōu)越性。

3.4.5 消融實驗

本文所提四種改進(jìn)方法分別為Q(quality focal loss)、F(四尺度檢測)、B(去權(quán)重的BiFPN)、C(CBAM注意力)。為了驗證四種不同改進(jìn)方法的有效性,本文從以下兩個方向設(shè)計消融實驗:(1)以原始YOLOv5s算法為基礎(chǔ),分別只增加一種改進(jìn)方法,以驗證每種改進(jìn)方法對原算法的改進(jìn)效果;(2)以最終YOLOv5s-QFBC算法為基礎(chǔ),分別只消除一種改進(jìn)方法,以驗證每種改進(jìn)方法對最終算法的影響程度。為了體現(xiàn)算法的泛化性,本文的消融實驗在公開的自動駕駛數(shù)據(jù)集KITTI和自制的騎乘人員頭盔數(shù)據(jù)集Helmet 上分別進(jìn)行,實驗結(jié)果如表10和表11所示。

“√”表示引入該方法,從表10和表11中可以看出,本文所提出的四個改進(jìn)方法無論是在KITTI 數(shù)據(jù)集還是Helmet數(shù)據(jù)集上,相比原始YOLOv5s算法,檢測精度都有不同程度的提升,其中改進(jìn)多尺度檢測提升效果最好,分別提升了1.2 和1.3 個百分點的檢測精度;而相比最終YOLOv5s-QFBC 算法,消除任一改進(jìn)方法都會降低算法的檢測精度,其中消除多尺度檢測的改進(jìn)對最終算法影響最大,檢測精度分別降低了1.0 和1.1 個百分點。通過消融實驗,再次證明了本文所提不同改進(jìn)方法的有效性。同時,本文提出的最終算法YOLOv5s-QFBC相較于原始YOLOv5s,在KITTI 數(shù)據(jù)集和Helmet 數(shù)據(jù)集上分別提高了1.9和2.1個百分點的檢測精度,F(xiàn)PS分別達(dá)到69 和68,都能夠在很好地保持算法的實時性的同時有著更高的檢測精度。YOLOv5s-QFBC 算法在自動駕駛場景下的車、行人、騎車的人檢測任務(wù)中以及道路騎乘場景下的頭盔佩戴檢測任務(wù)中,相較于原始YOLOv5s 算法都有更好的表現(xiàn),證明了本文所提算法具有較好的泛化性,也證明了本文所提算法能夠更好地處理復(fù)雜道路背景下的不同場景條件中的目標(biāo)檢測問題。

表10 算法在KITTI數(shù)據(jù)集上的消融實驗結(jié)果Table 10 Ablation experimental results of algorithm on KITTI dataset

表11 算法在Helmet數(shù)據(jù)集上的消融實驗結(jié)果Table 11 Ablation experimental results of algorithm on Helmet dataset

3.4.6 對比實驗

為了進(jìn)一步證明本文所提算法的有效性以及優(yōu)越性,將本文最終提出的算法模型與原YOLOv5s 算法、YOLOv5m、YOLOv5l、YOLOv5x、Faster R-CNN[11]、SSD[13]、YOLOv4-tiny、YOLOv4[16]、YOLOX-tiny[37]、YOLOX-X[37]算法在KITTI 數(shù)據(jù)集上進(jìn)行實驗對比,結(jié)果如表12所示。

表12 不同的算法模型在KITTI數(shù)據(jù)集上的性能對比Table 12 Performance comparison of different algorithm models on KITTI data set

對比表12中不同算法模型的實驗結(jié)果,可以看出,本文提出的YOLOv5s-QFBC算法相較于其他主流的算法模型,有著最高的檢測精度。其中,相較于檢測精度較為相近的YOLOv5x以及YOLOX-X算法,本文所提算法所占用的體積只有YOLOv5x的9.8%,只有YOLOX-X的4.5%,體量優(yōu)勢明顯;相較于檢測速度較為相近的YOLOv5s 算法以及YOLOv5m 算法,本文所提算法的檢測精度優(yōu)勢明顯,比YOLOv5s 高1.9 個百分點,比YOLOv5m 高1.1 個百分點,而YOLOv4-tiny 雖然有著最高的檢測速度,達(dá)到了106 FPS,但是它的檢測精度卻最低,只有66.8%,無法在復(fù)雜道路背景下應(yīng)用;相較于占用體積較為相似的YOLOv5s、YOLOv4-tiny 以及YOLOX-tiny 算法,本文所提算法的檢測精度分別高了1.9、28.1、3.7 個百分點。綜上所述,本文提出的YOLOv5s-QFBC 算法在保持輕量化的同時,有著最高的檢測精度,并且保持著較好的實時性,整體表現(xiàn)較為突出,證明了本文所提算法的優(yōu)越性。為了更加直觀地進(jìn)行評價,本文對改進(jìn)前后的效果對比進(jìn)行了展示,如圖9所示。

圖9 算法改進(jìn)前后的檢測效果對比圖Fig.9 Comparison of detection effect before and after algorithm improvement

通過對比可以看出,在復(fù)雜的道路背景下,本文提出的YOLOv5s-QFBC 算法,相比于原始的YOLOv5s 算法,對遮擋目標(biāo)以及小目標(biāo)檢測時存在的誤檢和漏檢問題都有所改進(jìn)。

4 結(jié)束語

針對復(fù)雜道路背景下的遮擋目標(biāo)和小目標(biāo)檢測導(dǎo)致的誤檢、漏檢問題,本文通過對Quality Focal Loss、增加檢測層、去權(quán)重的BiFPN、融合CBAM 注意力模塊等方法的集成,來優(yōu)化YOLOv5s這一典型的One Stage目標(biāo)檢測算法。

實驗結(jié)果證明,改進(jìn)后的算法在公開的自動駕駛數(shù)據(jù)集KITTI 和自制的騎乘人員頭盔數(shù)據(jù)集Helmet 上的檢測精度分別提高了1.9和2.1個百分點,檢測速度分別達(dá)到了69 FPS和68 FPS。本文通過改進(jìn)YOLOv5s算法模型,在保持算法速度和體量優(yōu)勢的同時獲得了更高的檢測精度,相比其他主流目標(biāo)檢測算法模型,本文改進(jìn)算法更適用于復(fù)雜道路背景下的目標(biāo)檢測。

猜你喜歡
注意力精度特征
讓注意力“飛”回來
如何表達(dá)“特征”
不忠誠的四個特征
基于DSPIC33F微處理器的采集精度的提高
電子制作(2018年11期)2018-08-04 03:25:38
抓住特征巧觀察
“揚眼”APP:讓注意力“變現(xiàn)”
傳媒評論(2017年3期)2017-06-13 09:18:10
A Beautiful Way Of Looking At Things
GPS/GLONASS/BDS組合PPP精度分析
改進(jìn)的Goldschmidt雙精度浮點除法器
線性代數(shù)的應(yīng)用特征
河南科技(2014年23期)2014-02-27 14:19:15
禹城市| 宜昌市| 石泉县| 麟游县| 青岛市| 新绛县| 乡城县| 江山市| 江川县| 宁蒗| 车致| 清徐县| 扬州市| 富源县| 甘肃省| 永年县| 平乡县| 中西区| 新昌县| 淮南市| 梓潼县| 汕头市| 玉山县| 武宁县| 通化市| 宣武区| 景宁| 南平市| 东港市| 新丰县| 介休市| 蕉岭县| 辽源市| 上思县| 张家口市| 平顶山市| 林周县| 化隆| 新平| 石泉县| 乌苏市|