?

基于YOLO v4的車輛目標檢測算法

2022-07-29 06:17殷遠齊邢遠新
計算機與現代化 2022年7期
關鍵詞:損失特征優化

殷遠齊,徐 源,邢遠新

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

0 引 言

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

近年來,深度學習的飛速發展為計算機視覺領域提供了新的解決方案,目標檢測作為計算機視覺的一個重要分支取得了重大進展,針對行人、車輛、交通指示標志等目標進行檢測的算法也得到了長足進步。

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

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

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

1 YOLO v4-ASC

1.1 網絡結構

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

圖1 YOLO v4-ASC網絡結構圖

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

因為本文檢測目標僅為車輛目標,可通過置信度直接進行判別,所以將3個YOLO Head的輸出(13,13,18)、(26,26,18)、(52,52,18)精簡為(13,13,15)、(26,26,15)、(52,52,15),從而減少了模型參數。

1.2 CBAM

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

圖2 CBAM結構圖

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

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

(1)

其中,σ代表激活操作。

圖3 CAM結構圖

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

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

(2)

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

圖4 SAM結構圖

1.3 優化方法及損失函數改進

1.3.1 優化方法改進

YOLO v4的模型在訓練過程中使用的優化方法是動量梯度下降法(Stochastic Gradient Descent with Momentum, SGDM)[23],是在隨機梯度下降法(Stochastic Gradient Descent, SGD)[24]基礎上加入了一階動量。雖然SGDM優化效果較好,但是存在著前期優化速度過慢的問題,不利于快速收斂且容易陷入局部最優點。自適應矩估計(Adaptive Moment Estimation, Adam)[25]優化算法收斂速度較快,但是在訓練后期會出現學習率太低,影響模型達到最優的問題?;诖?,本文將兩者結合,使用Adam+SGDM的優化方法,在訓練前期使用Adam使模型快速收斂,后期使用SGDM調優模型參數,得到更優模型。

1.3.2 損失函數改進

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

Loss=Lciou+Lconf

(3)

(4)

(5)

(6)

2 實驗與結果分析

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

2.1 數據集及評價指標

2.1.1 數據集

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

圖5 數據集部分樣本示例

2.1.2 評價指標

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

(7)

(8)

(9)

其中,TP(True Positive)表示正樣本被預測為正樣本的數量,FP(False Positive)表示負樣本被預測為正樣本的數量,FN(False Negative)表示正樣本被預測為負樣本的數量。以P和R分別為坐標軸建立坐標系,AP即為P-R曲線所圍成的面積。

2.2 模型訓練

2.2.1 anchor優化

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

表1 不同anchor數結果對比

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

2.2.2 損失函數優化

本文對YOLO v4中的損失函數進行優化,模型優化方法使用SGDM,將訓練損失繪制成loss曲線,實驗結果如圖6所示。

圖6 不同損失函數對比結果圖

從圖6可以看出,與原損失函數曲線相比,優化后的損失函數曲線下降速率加快,并且在第150個epoch時loss曲線斜率趨于穩定,此時模型已經收斂。實驗證明,損失函數優化后網絡模型的收斂速度有所提升。

2.2.3 模型優化

分別采用SGDM、Adam、Adam+SGDM等3種不同優化方法對模型進行訓練。首先將圖像尺寸縮放為416×416,優化方法中動量(momentum)參數設置為0.9,權重衰減(weight decay)參數設置為0.0005,初始學習率設置為0.001。Adam+SGDM在訓練的前50個epoch使用Adam優化方法快速降低損失,防止陷入局部最優點。之后將優化方法調整為SGDM,同時將學習率調整為0.01,且每經過5個epoch令其學習率變為原來的9/10,繼續訓練使模型達到最優。

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

(a) 訓練損失圖

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

2.3 不同優化方法對比

本文對使用不同優化方法的YOLO v4進行對比實驗,置信度閾值設置為0.5,非極大值抑制[29]閾值設置為0.3。預測框與目標真實框的IoU閾值設置為0.5,當IoU值大于該閾值時判定為正確預測到目標所在的位置,實驗結果如表2所示。

表2 不同優化方法結果對比

由表2可以看出,使用Adam+SGDM優化方法比使用SGDM優化方法的AP高8.53個百分點,F1-score高8個百分點;比使用Adam優化方法的AP高2.45個百分點,F1-score高2個百分點。

2.4 注意力模型對比

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

表3 注意力模型結果對比

(a) YOLO v4-AS

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

2.5 不同模型對比

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

表4 不同模型結果對比

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

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

(a) 原圖

以上實驗結果表明,本文算法在保證較高檢測速度的同時,有效提高了目標準確率。

3 結束語

本文基于YOLO v4目標檢測算法提出了一種YOLO v4-ASC算法。在YOLO v4網絡結構中加入CBAM模塊,使特征提取網絡更加關注感興趣目標,增強模型的特征表達能力;簡化了損失函數,提高算法運行速度以及模型收斂速度;改進了模型優化算法,提高模型檢測精度;使用K-Means聚類算法對數據進行聚類,得到更加合理的預設anchor尺寸。最終實驗結果表明,本文算法在數據集上達到了70.05%的平均檢測精度,檢測速度達到了45 fps,可以滿足實時檢測要求。

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

猜你喜歡
損失特征優化
根據方程特征選解法
超限高層建筑結構設計與優化思考
離散型隨機變量的分布列與數字特征
民用建筑防煙排煙設計優化探討
胖胖損失了多少元
關于優化消防安全告知承諾的一些思考
一道優化題的幾何解法
不忠誠的四個特征
玉米抽穗前倒伏怎么辦?怎么減少損失?
菜燒好了應該盡量馬上吃
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合