張 漪,張美月
(1.內(nèi)蒙古自治區(qū)交通運(yùn)輸教育中心,內(nèi)蒙古 呼和浩特 010051;2.長(zhǎng)安大學(xué)信息工程學(xué)院,陜西 西安 710046)
截至2021 年5 月,公安部公布中國(guó)全國(guó)機(jī)動(dòng)車保有量達(dá)到3.8 億輛[1],全國(guó)有70 個(gè)城市汽車保有量超過(guò)100 萬(wàn)輛。日益增加的機(jī)動(dòng)車數(shù)量和落后的交通管理系統(tǒng)是導(dǎo)致城市道路交通擁堵的重要原因,在傳統(tǒng)交通系統(tǒng)之上建立全新的智能交通系統(tǒng)(Intelligent Transportation System,ITS)已經(jīng)成為未來(lái)的發(fā)展方向和研究熱點(diǎn)。交通視頻監(jiān)控作為ITS的重要數(shù)據(jù)來(lái)源,在不同等級(jí)的公路均得到廣泛應(yīng)用,特別在城市路段,監(jiān)控視頻提供的數(shù)據(jù)對(duì)緩解城市交通擁堵、提高通行效率以及合理分配交通資源等方面起到重要作用。針對(duì)交通監(jiān)控視頻進(jìn)行車輛目標(biāo)檢測(cè)是后續(xù)進(jìn)行車輛識(shí)別、車輛跟蹤的基礎(chǔ),但在城市交通擁堵路段,環(huán)境復(fù)雜,車流量高,車輛互相遮擋嚴(yán)重,對(duì)準(zhǔn)確進(jìn)行車輛目標(biāo)檢測(cè)提出了挑戰(zhàn)。
基于圖像或視頻的目標(biāo)檢測(cè)是車輛檢測(cè)的典型任務(wù)。傳統(tǒng)目標(biāo)檢測(cè)方法主要是利用人工構(gòu)建目標(biāo)特征,之后利用分類算法進(jìn)行分類,從而判斷目標(biāo)是否存在,常用分類算法有Haar+Adaboost[2]、Hog+SVM[2]、DPM[3]等。目標(biāo)檢測(cè)的傳統(tǒng)方法采用在圖像中進(jìn)行滑動(dòng)窗口操作,檢測(cè)效率低、消耗資源高,并且手工特征魯棒性低、遷移效果差。隨著機(jī)器學(xué)習(xí)和GPU 并行計(jì)算技術(shù)的不斷發(fā)展,目標(biāo)檢測(cè)算法最重要的特征提取工作逐漸由人工構(gòu)建發(fā)展為從數(shù)據(jù)中自動(dòng)學(xué)習(xí)?;诰矸e神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)逐漸發(fā)展了眾多目標(biāo)檢測(cè)算法,按網(wǎng)絡(luò)結(jié)構(gòu)主要分為兩類:One-Stage 結(jié) 構(gòu) 和Two-Stage 結(jié) 構(gòu)[4]。Two-Stage 結(jié) 構(gòu) 是 將 檢測(cè)目標(biāo)定義為一個(gè)由粗到細(xì)的過(guò)程,首先生成一系列的目標(biāo)候選區(qū)域,然后進(jìn)行目標(biāo)分類和校準(zhǔn),此結(jié)構(gòu)檢測(cè)效率低,但準(zhǔn)確率高,代表算法有R-CNN[5]、Fast RCNN[6]、Faster R-CNN[7];One-Stage結(jié)構(gòu)則是在檢測(cè)時(shí)沒(méi)有生成候選區(qū)域的步驟,而是對(duì)目標(biāo)的類別和邊界直接進(jìn)行回歸,準(zhǔn)確率相比Two-Stage 結(jié)構(gòu)稍低,但是檢測(cè) 速 度 快,代 表 算 法 有SSD[8]、RetinaNet[9]、YOLO[10-14]。YOLO 系列算法是目前最廣泛應(yīng)用的目標(biāo)檢測(cè)算法之一,并且經(jīng)過(guò)五個(gè)版本的迭代,YOLO 算法在保留檢測(cè)速度快的優(yōu)勢(shì)的同時(shí),補(bǔ)齊了檢測(cè)準(zhǔn)確率低的短板。YOLOv5 系列[10]由Ultralytics 公司發(fā)布,在COCO[15]2017測(cè)試集上的平均準(zhǔn)確率(mean Average Precision,mAP)達(dá)到72%,在GPU 為Nvidia Tesla V100 的條件下達(dá)到2ms/img的推理速度,是目前的領(lǐng)先水平。
基于YOLOv5 的性能優(yōu)勢(shì),在其基礎(chǔ)上進(jìn)行改進(jìn),以提高城市道路交通中車輛檢測(cè)的準(zhǔn)確率,同時(shí)降低誤檢和漏檢率。首先是引入SE[16]通道注意力模塊到Y(jié)OLOv5 網(wǎng)絡(luò)的Backbone 主干網(wǎng)絡(luò)、Neck 網(wǎng)絡(luò)層、Head輸出端,為測(cè)試SE 模塊在網(wǎng)絡(luò)中不同位置對(duì)結(jié)果造成的影響,在網(wǎng)絡(luò)的三個(gè)不同位置引入并進(jìn)行對(duì)比實(shí)驗(yàn)。針對(duì)One-Stage 結(jié)構(gòu)正負(fù)樣本不平衡問(wèn)題,將Focal Loss[9]作為目標(biāo)損失函數(shù)和分類損失函數(shù),以優(yōu)化訓(xùn)練過(guò)程。為提高模型魯棒性,在公開(kāi)數(shù)據(jù)集UA-DETRAC[17]的基礎(chǔ)上引入自建數(shù)據(jù)集。在UA-DETRAC數(shù)據(jù)集進(jìn)行模型訓(xùn)練和驗(yàn)證,并在自建數(shù)據(jù)集上進(jìn)行測(cè)試,結(jié)果表明提出的改進(jìn)YOLOv5算法相較原始算法在指標(biāo)精確率Precision、召回率Recall、平均準(zhǔn)確率mAP上均有所提高,并在城市交通擁堵路段降低了誤檢率和漏檢率[18-20]。
YOLOv5 系列根據(jù)模型參數(shù)(Params)和浮點(diǎn)運(yùn)算量(FLOPs)的不同分為s、m、l、x四個(gè)模型,從s到x模型Params 和FlOPs 不斷增加。針對(duì)監(jiān)控現(xiàn)場(chǎng)多為嵌入式設(shè)備,算力不高,因此采用Params和FLOPs最少的YOLOv5s 作為研究的基礎(chǔ)模型。YOLOv5s 采用One-Stage結(jié)構(gòu),由四個(gè)模塊組成,分別是Input 輸入端、Backbone主干網(wǎng)絡(luò)、Neck網(wǎng)絡(luò)層、Head輸出端,如圖1所示。
圖1 YOLOv5網(wǎng)絡(luò)模型結(jié)構(gòu)
目標(biāo)檢測(cè)模型隨著網(wǎng)絡(luò)層次的加深,提取的信息越來(lái)越抽象,對(duì)于監(jiān)控圖像中遠(yuǎn)處小目標(biāo)車輛的檢測(cè)就更加困難,對(duì)于擁堵路段的車輛遮擋問(wèn)題難以準(zhǔn)確檢測(cè)。為此文章通過(guò)在網(wǎng)絡(luò)結(jié)構(gòu)中添加注意力機(jī)制(Attention Mechanism,AM)的方法改善這一問(wèn)題。
SE-Net 是典型的通道注意力網(wǎng)絡(luò),SE 模塊的有效性在一些應(yīng)用中已經(jīng)得到驗(yàn)證,但是在具體將其嵌入網(wǎng)絡(luò)中的哪些位置更有效果,目前還沒(méi)有完整的理論說(shuō)明[21]。文章針對(duì)YOLOv5 設(shè)計(jì)了三種融合SE 模塊的網(wǎng)絡(luò)模型形成YOLOv5s。如圖1 所示,YOLOv5 包含四個(gè)模塊,Input輸入端主要進(jìn)行圖像的預(yù)處理,沒(méi)有任何提取特征的操作,因此無(wú)需引入注意力機(jī)制。由于SE注意力機(jī)制本身是對(duì)重要的特征通道進(jìn)行增強(qiáng),因此將SE 模塊分別嵌入Backbone、Neck、Head 三個(gè)網(wǎng)絡(luò)模塊中,由此產(chǎn)生的三個(gè)新的網(wǎng)絡(luò)模型分別記為SEA_YOLOv5s、SEB_YOLOv5s和SEC_YOLOv5s。
3.1.1 SEA_YOLOv5s網(wǎng)絡(luò)模型
SEA_YOLOv5s 是將SE 模塊嵌入Backbone 形成的網(wǎng)絡(luò),如圖2 所示。Backbone 在YOLOv5 中的主要作用是學(xué)習(xí)數(shù)據(jù)中的高中低不同層次的特征,其中Focus、CBL、BottleneckCSP 和SPP四個(gè)模塊主要起到特征聚合作用的是BottleneckCSP??紤]到計(jì)算量的問(wèn)題,將SE模塊嵌入BottleneckCSP結(jié)構(gòu)中。
圖2 SEA_YOLOv5s網(wǎng)絡(luò)結(jié)構(gòu)
SE 模塊在Bottleneck 具體的嵌入位置如圖3 所示。SE模塊在Concat之后,也就是在特征融合之后,可以對(duì)不同通道的特征進(jìn)行重新標(biāo)定。Backbone 中的四個(gè)SE_BottleneckCSP均為此方式。
圖3 SE_BottleneckCSP結(jié)構(gòu)
3.1.2 SEB_YOLOv5s網(wǎng)絡(luò)模型
SEB_YOLOv5s是將SE嵌入Neck形成的網(wǎng)絡(luò),如圖4 所示。Neck 網(wǎng)絡(luò)層主要包括加強(qiáng)信息傳播的PANet結(jié)構(gòu),將SE模塊嵌入到特征的融合階段,即Concat結(jié)束之后,BottleneckCSP2_1開(kāi)始之前。
圖4 SEB_YOLOv5s網(wǎng)絡(luò)結(jié)構(gòu)
3.1.3 SEC_YOLOv5s網(wǎng)絡(luò)模型
SEC_YOLOv5s是將SE嵌入Head形成的網(wǎng)絡(luò),如圖5 所示。Head 輸出端用于最終的目標(biāo)檢測(cè),將SE 模塊嵌入到模型的每一個(gè)YOLO檢測(cè)頭之前。
圖5 SEC_YOLOv5s網(wǎng)絡(luò)結(jié)構(gòu)
3.2.1 原始損失函數(shù)
原始YOLOv5 的損失函數(shù)包括目標(biāo)損失函數(shù)和分類損失函數(shù)、邊界框回歸損失函數(shù)。
①目標(biāo)損失函數(shù)和分類損失函數(shù)。YOLOv5 使用BCE With Logits作為目標(biāo)損失函數(shù)和分類損失函數(shù),二分類交叉熵?fù)p失函數(shù)的計(jì)算公式見(jiàn)公式(1)。式中,y為真實(shí)樣本標(biāo)簽;p為經(jīng)過(guò)Sigmoid函數(shù)的預(yù)測(cè)輸出,見(jiàn)公式(2),取值在[0,1]之間。
3.2.2 改進(jìn)損失函數(shù)
在原始損失函數(shù)的基礎(chǔ)上對(duì)損失函數(shù)進(jìn)行改進(jìn),提出利用權(quán)重控制不平衡樣本的損失計(jì)算方案——焦點(diǎn)損失函數(shù)Focal Loss。主要包含三個(gè)步驟。
①正負(fù)樣本的權(quán)重控制。
③兩種權(quán)重控制方法合并。
通過(guò)將兩種方法得到的公式合并得到
UA-DETRAC[17]數(shù)據(jù)集在北京和天津兩個(gè)城市不同地方進(jìn)行拍攝,拍攝照片如圖6 所示,拍攝角度和交通監(jiān)視視頻的角度一致。選用UA-DETRAC 數(shù)據(jù)集作為本文的車輛檢測(cè)數(shù)據(jù)集,文獻(xiàn)[22,23]同樣選用此數(shù)據(jù)集。UA-DETRAC數(shù)據(jù)集包含訓(xùn)練和測(cè)試集,由于訓(xùn)練集中的圖像數(shù)量已經(jīng)滿足需求并且已經(jīng)進(jìn)行標(biāo)注,因此本文僅采用訓(xùn)練集數(shù)據(jù)。去除數(shù)據(jù)集中夜間圖像,其余剩余共50051 張,其中40000 張作為網(wǎng)絡(luò)的訓(xùn)練集,剩余10051張作為驗(yàn)證集。
圖6 UA-DETRAC數(shù)據(jù)集拍攝車輛效果圖
為驗(yàn)證模型的性能,在西安市南二環(huán)文藝路天橋上再次進(jìn)行數(shù)據(jù)采集,共得到5000張圖像,作為實(shí)驗(yàn)的測(cè)試集。圖像按照UA-DETRAC的標(biāo)準(zhǔn),使用標(biāo)注工具LabelImg[24]進(jìn)行人工標(biāo)注,如圖7所示。
圖7 LabelImg標(biāo)注
實(shí)驗(yàn)所用GPU為Nvidia GeForce GTX 1660,網(wǎng)絡(luò)框架為Pytorch1.8.0。使用SGDM 優(yōu)化器,初始學(xué)習(xí)率為0.001,動(dòng)量設(shè)為0.9,衰減系數(shù)設(shè)為0.0005,batchsize 設(shè)為8,共訓(xùn)練100epochs。
4.2.1 改進(jìn)注意力機(jī)制實(shí)驗(yàn)
在不改變損失函數(shù)的條件下,將原始YOLOv5s、SEA_YOLOv5s、SEB_YOLOv5s、SEC_YOLOv5s 在UADETRAC 數(shù)據(jù)集進(jìn)行訓(xùn)練,并在自建數(shù)據(jù)集上進(jìn)行測(cè)試,檢測(cè)指標(biāo)為精確率P、召回率R 以及平均準(zhǔn)確率mAP。檢測(cè)結(jié)果見(jiàn)表1。
表1 四個(gè)模型在測(cè)試集的檢測(cè)結(jié)果
相比在Neck 和Head 引入SE 模塊,在Backbone 中的特征融合層后引入SE 可以大幅度提升YOLOv5s 對(duì)車輛目標(biāo)的檢測(cè)性能。通過(guò)對(duì)網(wǎng)絡(luò)算法的流程分析,認(rèn)為之所以會(huì)存在很大的性能差異,是因?yàn)樵贐ackbone中目標(biāo)的特征圖語(yǔ)義信息種類較多但是語(yǔ)義信息量不足,仍然保留著目標(biāo)在特征圖中的較淺層的數(shù)據(jù)紋理信息,而這些信息對(duì)于本文研究背景下的兩種特殊情況的檢測(cè)至關(guān)重要。比如車輛目標(biāo)出現(xiàn)過(guò)多或者車輛出現(xiàn)在監(jiān)控?cái)z像頭較遠(yuǎn)處時(shí),在Backbone 中嵌入SE 模塊能更好對(duì)特征圖中目標(biāo)的通道特征進(jìn)行增強(qiáng),較低層分辨率高,可以學(xué)習(xí)到較多的細(xì)節(jié)信息。
而在網(wǎng)絡(luò)更深層的Neck和Head,隨著卷積操作會(huì)縮小特征圖的尺寸,小目標(biāo)的語(yǔ)義信息到高層已經(jīng)不存在了,高層次特征圖顯示出來(lái)了更豐富的語(yǔ)義功能、更大的感受野范圍和尺度更小的特征圖,SE 難以再?gòu)倪@種特征信息高度融合的特征圖中有效地區(qū)分出重要的通道特征,導(dǎo)致檢測(cè)精度下降。
綜上所述,選擇在Backbone 主干網(wǎng)絡(luò)中引入SE 模塊的SEA_YOLOv5s 是最優(yōu)選擇,網(wǎng)絡(luò)定記為SE_YOLOv5s。
4.2.2 改進(jìn)損失函數(shù)實(shí)驗(yàn)
使用Focal Loss 改進(jìn)SE_YOLOv5s輸出端的損失函數(shù),得到的網(wǎng)絡(luò)模型記為SES_YOLOv5s。由公式(8),F(xiàn)ocal Loss 主要是通過(guò)兩個(gè)參數(shù)α 和γ協(xié)調(diào)來(lái)控制不平衡樣本的權(quán)重,為了確定一組適合本次車輛檢測(cè)任務(wù)的最優(yōu)和,選擇10 組不同的和組合進(jìn)行實(shí)驗(yàn),結(jié)果見(jiàn)表2。
表2 Focal Loss中的參數(shù)設(shè)置
圖8和圖9是SES_YOLOv5s和SE_YOLOv5s兩個(gè)網(wǎng)絡(luò)模型在訓(xùn)練和測(cè)試階段的總損失的變化曲線??梢园l(fā)現(xiàn),SES_YOLOv5s 的Total Loss 總損失總體趨勢(shì)都是低于SE_YOLOv5s。SES_YOLOv5s 網(wǎng)絡(luò)直到訓(xùn)練100 Epochs 結(jié)束,訓(xùn)練和測(cè)試階段均呈現(xiàn)出持續(xù)下降的趨勢(shì),且還存在下降空間,說(shuō)明網(wǎng)絡(luò)仍在學(xué)習(xí),檢測(cè)精度仍有上升的可能性,而實(shí)線曲線逐漸趨于穩(wěn)定,說(shuō)明網(wǎng)絡(luò)過(guò)擬合已經(jīng)沒(méi)有學(xué)習(xí)必要。
圖8 訓(xùn)練階段總損失變化曲線
圖9 測(cè)試階段總損失變化曲線
將以上兩種網(wǎng)絡(luò)與原始YOLOv5s進(jìn)行檢測(cè)性能指標(biāo)對(duì)比,結(jié)果見(jiàn)表3。由表3 可知,SES_YOLOv5s 網(wǎng)絡(luò)模型獲得比SE_YOLOv5s 高1%的精確率、高0.3%的召回率以及高0.007%的mAP,與YOLOv5s 相比獲得高0.5%的精確率、高2.5%的召回率以及高0.02%的mAP,三個(gè)指標(biāo)均有提高。
表3 三種網(wǎng)絡(luò)模型的目標(biāo)檢測(cè)性能指標(biāo)
對(duì)于本文使用的單級(jí)結(jié)構(gòu)YOLOv5s 目標(biāo)檢測(cè)算法,訓(xùn)練過(guò)程中自動(dòng)生成大量預(yù)選框,以致于訓(xùn)練過(guò)程會(huì)被負(fù)樣本所主導(dǎo),導(dǎo)致精度下降?;贖ead 輸出端的改進(jìn)從損失函數(shù)入手,將Focal Loss 分別用于目標(biāo)和分類損失函數(shù),此函數(shù)通過(guò)對(duì)二分類交叉熵?fù)p失函數(shù)進(jìn)行重新構(gòu)造,使算法在訓(xùn)練過(guò)程中對(duì)困難樣本進(jìn)行挖掘,更加關(guān)注難分類的樣本,降低簡(jiǎn)單樣本在訓(xùn)練中所占權(quán)重,有效解決正負(fù)樣本比例嚴(yán)重失衡的問(wèn)題。從實(shí)驗(yàn)結(jié)果看,在保證速度的同時(shí)達(dá)到了檢測(cè)精度最優(yōu),并且Focal Loss 緩解樣本的不平衡問(wèn)題的途徑是通過(guò)改變損失的方式,此種方式只影響訓(xùn)練部分的過(guò)程和時(shí)間,對(duì)檢測(cè)時(shí)間影響甚小,容易拓展。
本文通過(guò)將注意力機(jī)制SE 模塊分別引入YOLOv5網(wǎng)絡(luò)的Backbone、Neck、Head,實(shí)現(xiàn)了改進(jìn)的YOLOv5網(wǎng)絡(luò)對(duì)城市道路交通監(jiān)控視頻進(jìn)行實(shí)時(shí)車輛檢測(cè)。在YOLOv5s 網(wǎng)絡(luò)的三個(gè)位置Backbone、Neck、Head 分別引入注意力機(jī)制SE 模塊,并進(jìn)行對(duì)比實(shí)驗(yàn)分析,其中改進(jìn)的SEA_YOLOv5s 綜合性能最好。在引入SE 的基礎(chǔ)上,將原始的損失函數(shù)改為Focal Loss 焦點(diǎn)損失,改善正負(fù)樣本不均衡的問(wèn)題,經(jīng)過(guò)實(shí)驗(yàn)對(duì)比選取兩個(gè)參數(shù)α 和γ 的值。改進(jìn)的網(wǎng)絡(luò)模型SES_YOLOv5s 相較于原始YOLOv5s 有一定提升,其中精確率提升1%、召回率提升0.3、mAP 提升0.007,并且在對(duì)復(fù)雜的交通路段,對(duì)車輛遮擋和遠(yuǎn)處車輛目標(biāo)較小誤檢和漏檢的問(wèn)題得到解決,證明了本文改進(jìn)方法的有效性。