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

?

基于YOLO v4的車輛目標(biāo)檢測算法

2022-07-29 06:17殷遠(yuǎn)齊邢遠(yuǎn)新
關(guān)鍵詞:損失特征優(yōu)化

殷遠(yuǎn)齊,徐 源,邢遠(yuǎn)新

(長安大學(xué)信息工程學(xué)院,陜西 西安 710064)

0 引 言

車輛目標(biāo)檢測是智能交通的重要組成部分,同時也是目標(biāo)檢測領(lǐng)域的一個重要研究方向。傳統(tǒng)的車輛目標(biāo)檢測算法[1]主要分為3類:1)幀間差分法[2],主要是利用視頻序列中相鄰2幀圖片的差分運(yùn)算結(jié)果獲取目標(biāo),但是該算法需要設(shè)置合理的時間間隔,并且對于變化場景效果很差;2)背景差分法[3],主要是利用當(dāng)前幀的圖像與背景模型進(jìn)行比較得到目標(biāo)物體,不適用于復(fù)雜道路場景的檢測;3)光流法[4],主要是利用視頻前后幀圖像之間像素的差異以及相鄰2幀之間的關(guān)系來得到物體信息,該方法受光照影響較大且不同場景下的檢測效果有較大差距。上述傳統(tǒng)方法都存在魯棒性差、泛化能力弱等缺陷。

近年來,深度學(xué)習(xí)的飛速發(fā)展為計(jì)算機(jī)視覺領(lǐng)域提供了新的解決方案,目標(biāo)檢測作為計(jì)算機(jī)視覺的一個重要分支取得了重大進(jìn)展,針對行人、車輛、交通指示標(biāo)志等目標(biāo)進(jìn)行檢測的算法也得到了長足進(jìn)步。

基于卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測算法主要分為單階段(one stage)和兩階段(two stage)2類。其中,R-CNN[5]是基于Region Proposal的檢測算法,是two stage算法的代表。該方法先利用圖像分割算法得到目標(biāo)候選區(qū)域,再通過卷積神經(jīng)網(wǎng)絡(luò)對圖像進(jìn)行分類以及回歸操作。Fast R-CNN[6]解決了R-CNN提取特征時間過長的問題,但在實(shí)際預(yù)測過程中候選框的選定依然占用了較多時間。在Fast R-CNN基礎(chǔ)上,F(xiàn)aster R-CNN[7]中提出了錨框(anchor)的概念,并且加入了一個區(qū)域預(yù)測網(wǎng)絡(luò),可以直接產(chǎn)生候選區(qū)域,提升檢測的精度和速度。上述two stage檢測方法雖然可以充分提取圖像特征,但都存在檢測速度過慢的問題。YOLO系列[8-11]算法是端到端的檢測算法,是one stage的代表性方法。這類方法直接將目標(biāo)的分類及定位轉(zhuǎn)化為回歸問題,算法速度快,但檢測準(zhǔn)確率相對two stage算法較低。其中YOLO v4通過對YOLO v3主干特征提取網(wǎng)絡(luò)、激活函數(shù)及損失函數(shù)的優(yōu)化改進(jìn),是現(xiàn)階段精度和速度表現(xiàn)都十分優(yōu)異的目標(biāo)檢測算法之一。

本文主要研究交通場景中的運(yùn)動車輛的檢測問題,對檢測速度有較高要求,所以選用端到端的YOLO系列算法。

使用YOLO系列算法對交通場景中的運(yùn)動車輛進(jìn)行檢測,存在目標(biāo)檢測精度不高的問題,特別是對遮擋目標(biāo)及小目標(biāo)的檢測準(zhǔn)確率較差。針對該問題,本文提出一種改進(jìn)的YOLO v4車輛目標(biāo)檢測算法YOLO v4-ASC(YOLO v4-Adam SGDM CBAM)。在CSPDarkNet53特征提取網(wǎng)絡(luò)的尾端加入卷積塊注意力模塊(Convolutional Block Attention Module, CBAM)[12],對感興趣目標(biāo)特征賦予高權(quán)重,側(cè)重提取有用特征信息,以提高模型對特征的表達(dá)能力;刪除網(wǎng)絡(luò)預(yù)測頭(YOLO Head)中的類別信息,減少模型參數(shù),從而減少計(jì)算時間。利用Adam+SGDM優(yōu)化算法調(diào)優(yōu)模型,避免模型陷入局部最優(yōu)點(diǎn)并且提升模型收斂速度;刪除模型分類損失,進(jìn)一步優(yōu)化模型。此外,本文利用K-Means聚類算法[13]對目標(biāo)候選框進(jìn)行聚類分析,得出更加合理的初始anchor設(shè)置。實(shí)驗(yàn)結(jié)果表明,本文方法獲得了更高的檢測精度。

1 YOLO v4-ASC

1.1 網(wǎng)絡(luò)結(jié)構(gòu)

本文的YOLO v4-ASC網(wǎng)絡(luò)主要包括CSPDarkNet53主干特征提取網(wǎng)絡(luò)、SPP模塊(Spatial Pyramid Pooling Module)[14]、PANet(Path Aggregation Network)[15]、網(wǎng)絡(luò)預(yù)測頭YOLO Head和CBAM模塊,模型結(jié)構(gòu)如圖1所示。

圖1 YOLO v4-ASC網(wǎng)絡(luò)結(jié)構(gòu)圖

CSPDarkNet53主干特征提取網(wǎng)絡(luò)首先對輸入的圖像進(jìn)行卷積[16]、批歸一化[17]以及Mish函數(shù)[18]激活處理,然后經(jīng)過5個R-n殘差模塊[19]得到輸出特征。SPP模塊主要是將CSPDarkNet53網(wǎng)絡(luò)的輸出特征進(jìn)行4個不同池化核大小的最大池化操作,池化核大小分別為1×1、5×5、9×9、13×13。特征進(jìn)行池化后進(jìn)行堆疊得到新特征。上述操作能夠有效增加特征的感受野,顯著分離上下文特征。PANet主要是將SPP模塊的輸出特征進(jìn)行多次上采樣并與CSPDarkNet53的輸出特征進(jìn)行融合,提升模型的特征提取能力。在每個檢測尺度都會得到一個YOLO Head,主要包括預(yù)測框中心點(diǎn)相對于網(wǎng)格單元左上角點(diǎn)的相對位置坐標(biāo)、預(yù)測框的寬高、網(wǎng)格單元中存在目標(biāo)的置信度以及對應(yīng)多個目標(biāo)類別的概率。

因?yàn)楸疚臋z測目標(biāo)僅為車輛目標(biāo),可通過置信度直接進(jìn)行判別,所以將3個YOLO Head的輸出(13,13,18)、(26,26,18)、(52,52,18)精簡為(13,13,15)、(26,26,15)、(52,52,15),從而減少了模型參數(shù)。

1.2 CBAM

由于卷積操作對不同特征圖的每個通道賦予相同的權(quán)重,故缺乏對顯著特征的描述能力。CBAM在訓(xùn)練過程中會壓縮輸入特征圖的空間維數(shù),分別通過通道注意力和空間注意力2個方面增強(qiáng)特征圖中的有用特征。本文在CSPDarkNet53的3個輸出后加入CBAM,以更精準(zhǔn)地提取特征信息,弱化不感興趣的特征信息,從而提升檢測準(zhǔn)確性。CBAM結(jié)構(gòu)圖如圖2所示,其中?代表逐元素相乘。輸入特征圖F經(jīng)過通道注意力模塊(Channel Attention Module, CAM)得到注意力特征圖Mc,將Mc和F做逐元素相乘操作,生成F′;F′再經(jīng)過SAM模塊得到空間注意力特征圖Ms,最后將Ms和輸入特征F′做逐元素相乘,生成特征F″。

圖2 CBAM結(jié)構(gòu)圖

CAM結(jié)構(gòu)如圖3所示。將輸入的特征圖F,分別經(jīng)過全局最大池化(Global Max Pooling, GMP)[20]和全局平均池化(Global Average Pooling, GAP)[21],然后經(jīng)過多層感知器(Multi Layer Perception, MLP)[22],將MLP的輸出進(jìn)行逐元素相乘并相加,再經(jīng)過激活操作生成通道注意力特征圖Mc。即:

Mc=σ(MLP(GAP(F))+MLP(GMP(F)))

(1)

其中,σ代表激活操作。

圖3 CAM結(jié)構(gòu)圖

SAM結(jié)構(gòu)如圖4所示。將F′做基于通道的GMP和GAP操作,然后將這2個結(jié)果基于通道數(shù)做連接操作,再通過卷積操作,將通道數(shù)降為1,最后經(jīng)過激活操作生成空間注意力特征圖Ms。即:

Ms=σ(f7×7([GAP(F);GMP(F)]))

(2)

其中,f7×7代表7×7卷積。

圖4 SAM結(jié)構(gòu)圖

1.3 優(yōu)化方法及損失函數(shù)改進(jìn)

1.3.1 優(yōu)化方法改進(jìn)

YOLO v4的模型在訓(xùn)練過程中使用的優(yōu)化方法是動量梯度下降法(Stochastic Gradient Descent with Momentum, SGDM)[23],是在隨機(jī)梯度下降法(Stochastic Gradient Descent, SGD)[24]基礎(chǔ)上加入了一階動量。雖然SGDM優(yōu)化效果較好,但是存在著前期優(yōu)化速度過慢的問題,不利于快速收斂且容易陷入局部最優(yōu)點(diǎn)。自適應(yīng)矩估計(jì)(Adaptive Moment Estimation, Adam)[25]優(yōu)化算法收斂速度較快,但是在訓(xùn)練后期會出現(xiàn)學(xué)習(xí)率太低,影響模型達(dá)到最優(yōu)的問題?;诖耍疚膶烧呓Y(jié)合,使用Adam+SGDM的優(yōu)化方法,在訓(xùn)練前期使用Adam使模型快速收斂,后期使用SGDM調(diào)優(yōu)模型參數(shù),得到更優(yōu)模型。

1.3.2 損失函數(shù)改進(jìn)

YOLO v4的損失主要由3個部分組成:置信度損失Lconf、回歸損失Lciou和分類損失Lcls。本文基于行車場景,車輛目標(biāo)可以視作同種類別,所以本文將問題簡化為目標(biāo)和背景的二分類問題。因此,本文損失不包含分類損失,新的損失函數(shù)具體表示為:

Loss=Lciou+Lconf

(3)

(4)

(5)

(6)

2 實(shí)驗(yàn)與結(jié)果分析

本文實(shí)驗(yàn)配置為操作系統(tǒng)Windows10,CPU型號Intel(R)Core(TM)i7-10700K @3.80 GHz,RAM內(nèi)存大小為32 GB,顯卡型號NVDIA GeForce RTX 3070,CUDA版本為11.1.1,使用Pycharm2021.2、Python3.7搭配Pytorch1.9.0(GPU)框架進(jìn)行實(shí)驗(yàn)。

2.1 數(shù)據(jù)集及評價指標(biāo)

2.1.1 數(shù)據(jù)集

BDD100K是目前發(fā)布的最大規(guī)模的自動駕駛數(shù)據(jù)集之一[28],該數(shù)據(jù)集包括晴天、雨天、白天及黑夜等多種場景中采集的圖像樣本。本文提取不同場景的樣本共4000張,訓(xùn)練集、測試集和驗(yàn)證集的比例為8∶1∶1。提取出truck、car、bus標(biāo)簽對應(yīng)的數(shù)據(jù)組成新的數(shù)據(jù)集BDD100K-Vehicle,其中數(shù)據(jù)集目標(biāo)真值共計(jì)43661個,平均每張圖像含有約11個目標(biāo),數(shù)據(jù)集部分樣本如圖5所示。

圖5 數(shù)據(jù)集部分樣本示例

2.1.2 評價指標(biāo)

針對車輛目標(biāo)檢測問題,本文主要使用平均檢測精度(Average Precision, AP)、每秒的傳輸幀數(shù)(Frame Per Second, FPS)及常用于二分類問題的衡量標(biāo)準(zhǔn)F1-score對檢測結(jié)果進(jìn)行評價。AP和F1-score結(jié)果與準(zhǔn)確率(Precision, P)以及召回率(Recall, R)數(shù)值相關(guān)。

(7)

(8)

(9)

其中,TP(True Positive)表示正樣本被預(yù)測為正樣本的數(shù)量,F(xiàn)P(False Positive)表示負(fù)樣本被預(yù)測為正樣本的數(shù)量,F(xiàn)N(False Negative)表示正樣本被預(yù)測為負(fù)樣本的數(shù)量。以P和R分別為坐標(biāo)軸建立坐標(biāo)系,AP即為P-R曲線所圍成的面積。

2.2 模型訓(xùn)練

2.2.1 anchor優(yōu)化

YOLO v4中使用9個錨框(anchor)預(yù)測3個不同尺度大小的Bounding Box,Bounding Box的準(zhǔn)確度影響最終的目標(biāo)檢測結(jié)果。原anchor的尺寸和數(shù)據(jù)集中目標(biāo)的尺寸差異較大會導(dǎo)致檢測模型的精度不高,而K-Means算法可以通過找尋聚類中心的方式得出合理的anchor位置信息。所以本文使用K-Means算法優(yōu)化先驗(yàn)框尺寸大小。使用K-Means算法預(yù)測不同anchor數(shù)的目標(biāo)檢測準(zhǔn)確率和參數(shù)量結(jié)果如表1所示。

表1 不同anchor數(shù)結(jié)果對比

由表1可以看出,anchor數(shù)為9時模型參數(shù)量較低且AP值最高,達(dá)到了70.05%,結(jié)合預(yù)測的Bounding Box數(shù)量及YOLO Head數(shù)量,最終確定anchor數(shù)目為9。通過K-Means算法對數(shù)據(jù)集中的車輛進(jìn)行聚類,得出9個大小尺寸不同的anchor,其大小分別為(3,6)、(4,12)、(6,24)、(7,8)、(10,14)、(13,23)、(24,32)、(42,57)、(91,127)。

2.2.2 損失函數(shù)優(yōu)化

本文對YOLO v4中的損失函數(shù)進(jìn)行優(yōu)化,模型優(yōu)化方法使用SGDM,將訓(xùn)練損失繪制成loss曲線,實(shí)驗(yàn)結(jié)果如圖6所示。

圖6 不同損失函數(shù)對比結(jié)果圖

從圖6可以看出,與原損失函數(shù)曲線相比,優(yōu)化后的損失函數(shù)曲線下降速率加快,并且在第150個epoch時loss曲線斜率趨于穩(wěn)定,此時模型已經(jīng)收斂。實(shí)驗(yàn)證明,損失函數(shù)優(yōu)化后網(wǎng)絡(luò)模型的收斂速度有所提升。

2.2.3 模型優(yōu)化

分別采用SGDM、Adam、Adam+SGDM等3種不同優(yōu)化方法對模型進(jìn)行訓(xùn)練。首先將圖像尺寸縮放為416×416,優(yōu)化方法中動量(momentum)參數(shù)設(shè)置為0.9,權(quán)重衰減(weight decay)參數(shù)設(shè)置為0.0005,初始學(xué)習(xí)率設(shè)置為0.001。Adam+SGDM在訓(xùn)練的前50個epoch使用Adam優(yōu)化方法快速降低損失,防止陷入局部最優(yōu)點(diǎn)。之后將優(yōu)化方法調(diào)整為SGDM,同時將學(xué)習(xí)率調(diào)整為0.01,且每經(jīng)過5個epoch令其學(xué)習(xí)率變?yōu)樵瓉淼?/10,繼續(xù)訓(xùn)練使模型達(dá)到最優(yōu)。

訓(xùn)練損失(train loss)是訓(xùn)練過程中模型是否收斂的一個重要指數(shù)。模型損失越小,精度就越高,同時檢測準(zhǔn)確率也就越高。將不同優(yōu)化方法的train loss繪制成loss曲線,結(jié)果如圖7所示。

(a) 訓(xùn)練損失圖

圖7(a)為3種不同優(yōu)化方法下得到的損失函數(shù)曲線,其中SGDM最終損失為3.45,Adam最終損失為1.72,Adam+SGDM最終損失為1.45。圖7(b)顯示的是圖7(a)中的方框區(qū)域,可以更加直觀地顯示Adam+SGDM優(yōu)化算法相較于其它2種優(yōu)化方法的優(yōu)勢,第50至150 epoch的結(jié)果顯示,在損失降到區(qū)間(1,2)時,Adam+SGDM仍比Adam低0.27,實(shí)驗(yàn)證明本文改進(jìn)方法有明顯提升。

2.3 不同優(yōu)化方法對比

本文對使用不同優(yōu)化方法的YOLO v4進(jìn)行對比實(shí)驗(yàn),置信度閾值設(shè)置為0.5,非極大值抑制[29]閾值設(shè)置為0.3。預(yù)測框與目標(biāo)真實(shí)框的IoU閾值設(shè)置為0.5,當(dāng)IoU值大于該閾值時判定為正確預(yù)測到目標(biāo)所在的位置,實(shí)驗(yàn)結(jié)果如表2所示。

表2 不同優(yōu)化方法結(jié)果對比

由表2可以看出,使用Adam+SGDM優(yōu)化方法比使用SGDM優(yōu)化方法的AP高8.53個百分點(diǎn),F(xiàn)1-score高8個百分點(diǎn);比使用Adam優(yōu)化方法的AP高2.45個百分點(diǎn),F(xiàn)1-score高2個百分點(diǎn)。

2.4 注意力模型對比

為了驗(yàn)證卷積注意力模塊的有效性,將本文算法分別與未加入注意力機(jī)制的算法及加入SE[30]注意力機(jī)制的算法進(jìn)行對比,將僅使用Adam+SGDM優(yōu)化方法的YOLO v4記為YOLO v4-AS(YOLO v4-Adam SGDM),同時置信度閾值設(shè)置為0.5,非極大值抑制閾值設(shè)置為0.3,實(shí)驗(yàn)結(jié)果如表3所示。為更加直觀地展示對比實(shí)驗(yàn)結(jié)果,將實(shí)驗(yàn)結(jié)果繪制成AP曲線,如圖8所示。

表3 注意力模型結(jié)果對比

(a) YOLO v4-AS

圖8(a)、圖8(b)、圖8(c)分別為YOLO-AS實(shí)驗(yàn)結(jié)果圖、加入SE的實(shí)驗(yàn)結(jié)果圖、加入CBAM的實(shí)驗(yàn)結(jié)果圖??梢钥闯?,與YOLO v4-AS相比,加入SE后AP提升了0.68個百分點(diǎn),在YOLO v4-AS基礎(chǔ)上加入CBAM后AP較YOLO v4-AS提升了1.39個百分點(diǎn),較加入SE的YOLO v4-AS提升了0.71個百分點(diǎn)。上述實(shí)驗(yàn)結(jié)果表明,加入CBAM后算法檢測精確度有所提升。

2.5 不同模型對比

為了驗(yàn)證本文提出模型的有效性,將本文算法分別與YOLO v4-tiny、YOLO v4、Faster R-CNN以及SSD[31]檢測算法進(jìn)行對比。置信度閾值設(shè)置為0.5,非極大值抑制閾值設(shè)置為0.3,實(shí)驗(yàn)結(jié)果如表4所示。

表4 不同模型結(jié)果對比

由表4可以看出,在檢測精度方面,本文算法與2種輕量化算法SSD及YOLO v4-tiny相比,AP分別提升了11.08個百分點(diǎn)和24.95個百分點(diǎn);F1-score分別提升了19個百分點(diǎn)和17個百分點(diǎn);與Faster R-CNN及YOLO v4相比,AP分別提升了20.56個百分點(diǎn)和9.92個百分點(diǎn);F1-score分別提升了30個百分點(diǎn)和9個百分點(diǎn)。雖然FPS不如YOLO v4-tiny和SSD這2種輕量級算法,但是本文算法的FPS達(dá)到了45,可以滿足車輛目標(biāo)檢測的實(shí)時性要求。

使用YOLO v4-tiny、Faster R-CNN、SSD、YOLO v4及本文算法分別對數(shù)據(jù)集中不同天氣不同場景下的目標(biāo)進(jìn)行檢測,結(jié)果如圖9所示。其中預(yù)測框中包含目標(biāo)類別信息及置信度分?jǐn)?shù)信息。可以看出,YOLO v4-tiny的檢測結(jié)果受光照交通場景影響最嚴(yán)重,目標(biāo)檢測效果最差;使用Faster R-CNN得到的結(jié)果出現(xiàn)了對同一目標(biāo)重復(fù)檢測及目標(biāo)錯檢的問題;使用SSD得到的結(jié)果雖然優(yōu)于Faster R-CNN,但也存在部分目標(biāo)漏檢的問題;使用YOLO v4得到的結(jié)果改正了SSD的漏檢問題,但同時存在對小目標(biāo)的檢測效果較差且置信度分?jǐn)?shù)較低的問題。YOLO v4-ASC對于場景中的目標(biāo)均能準(zhǔn)確識別和定位,能夠不受光照變化及場景變換的影響,有效解決小目標(biāo)和部分遮擋目標(biāo)的漏檢及錯檢問題,而且置信度分?jǐn)?shù)相較于其它算法更高。

(a) 原圖

以上實(shí)驗(yàn)結(jié)果表明,本文算法在保證較高檢測速度的同時,有效提高了目標(biāo)準(zhǔn)確率。

3 結(jié)束語

本文基于YOLO v4目標(biāo)檢測算法提出了一種YOLO v4-ASC算法。在YOLO v4網(wǎng)絡(luò)結(jié)構(gòu)中加入CBAM模塊,使特征提取網(wǎng)絡(luò)更加關(guān)注感興趣目標(biāo),增強(qiáng)模型的特征表達(dá)能力;簡化了損失函數(shù),提高算法運(yùn)行速度以及模型收斂速度;改進(jìn)了模型優(yōu)化算法,提高模型檢測精度;使用K-Means聚類算法對數(shù)據(jù)進(jìn)行聚類,得到更加合理的預(yù)設(shè)anchor尺寸。最終實(shí)驗(yàn)結(jié)果表明,本文算法在數(shù)據(jù)集上達(dá)到了70.05%的平均檢測精度,檢測速度達(dá)到了45 fps,可以滿足實(shí)時檢測要求。

后續(xù)工作也將圍繞降低模型大小以及提升檢測速度等方向展開,不斷提高模型的泛化能力,提升模型在復(fù)雜場景中的性能。

猜你喜歡
損失特征優(yōu)化
根據(jù)方程特征選解法
超限高層建筑結(jié)構(gòu)設(shè)計(jì)與優(yōu)化思考
離散型隨機(jī)變量的分布列與數(shù)字特征
民用建筑防煙排煙設(shè)計(jì)優(yōu)化探討
胖胖損失了多少元
關(guān)于優(yōu)化消防安全告知承諾的一些思考
一道優(yōu)化題的幾何解法
不忠誠的四個特征
玉米抽穗前倒伏怎么辦?怎么減少損失?
菜燒好了應(yīng)該盡量馬上吃
通山县| 武川县| 盐源县| 泸水县| 盐亭县| 绵阳市| 蓬莱市| 莱州市| 嘉兴市| 柞水县| 光山县| 汾阳市| 武威市| 敦化市| 弥勒县| 栾城县| 深圳市| 双江| 阜城县| 蒙城县| 句容市| 乌拉特中旗| 江孜县| 木里| 织金县| 谢通门县| 尉犁县| 肃北| 堆龙德庆县| 刚察县| 卢氏县| 浑源县| 钦州市| 通榆县| 绥宁县| 阜平县| 黄冈市| 开阳县| 墨江| 秦皇岛市| 全南县|