單振宇,張 琳,侯曉雯
(1. 長沙理工大學(xué)交通運輸工程學(xué)院,長沙 410114;2. 中國海洋大學(xué)信息與工程學(xué)部,青島 266100)
交通流量、速度等交通流參數(shù)的檢測是交通調(diào)查外業(yè)工作中的主要任務(wù)之一,采集的交通流信息可用于靈活的交通管理與交通安全評價等任務(wù)。目前交通調(diào)查中常用的交通流參數(shù)檢測方法仍然以人工現(xiàn)場觀測為主,但人工方法存在效率低、誤檢率高、成本大等問題;此外,高峰時期車流量較大,現(xiàn)場觀測也存在一定的安全隱患。因此本研究基于外業(yè)采集的交通視頻,利用深度學(xué)習(xí)技術(shù)在內(nèi)業(yè)完成流量與速度的自動檢測任務(wù)。
基于視頻的交通流參數(shù)檢測方法可分為傳統(tǒng)機器學(xué)習(xí)方法和深度學(xué)習(xí)方法。對于傳統(tǒng)機器學(xué)習(xí)方法,El Bouziady 等[1]通過背景差分法檢測車輛,由合加速穩(wěn)健特征算法(speeded up robust features,SURF)對車輛顯著外型信息特征進行匹配并生成稀疏深度圖,經(jīng)過像素坐標轉(zhuǎn)換后由幀差法計算車速。Tourani 等[2]把通過混合高斯背景差分法檢測到的車輛使用形態(tài)學(xué)變換與過濾算法進行匹配,結(jié)合斑點跟蹤算法跟蹤車輛,由幀間行駛距離估計車速。蔣建國等[3]借助視覺前景提取算法(visual background extractor, ViBe)分離背景,隨后基于像素以及視頻幀相結(jié)合的算法更新背景,最后由虛擬線圈法統(tǒng)計道路交通流量。張冬梅等[4]針對無人機(unmanned aerial vehicle,UAV)視頻,利用改進的多幀平均方法獲取初始背景,由混合高斯背景算法更新背景,通過背景差分法檢測車輛目標,最后由虛擬線圈法獲取實時交通流量。上述傳統(tǒng)機器學(xué)習(xí)方法檢測過程相對簡單,處理速度較快,但是對檢測環(huán)境要求較高,檢測精度不穩(wěn)定。
對于深度學(xué)習(xí)方法,Arinaldi等[5]使用Faster R-CNN 檢測模型檢測交通視頻中的車輛目標,基于核相關(guān)濾波算法(kernel correlation filter,KCF)進行目標跟蹤,根據(jù)被跟蹤車輛行駛距離和時間檢測車速。Ke 等[6]利用組合Haar 級聯(lián)和卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)來檢測UAV 視頻中的車輛目標,并通過KLT(Kanade Lucas Tomasi)跟蹤算法跟蹤車輛,進而獲取道路上車輛速度以及交通流量等信息。Liu 等[7]使用遷移學(xué)習(xí)后的深度神經(jīng)網(wǎng)絡(luò)(deep neural network, DNN)檢測道路中的車輛,然后基于卡爾曼濾波算法進行跟蹤,根據(jù)跟蹤結(jié)果估計了車流量與車速。Li 等[8]提出一種基于Faster R-CNN 和域自適應(yīng)(DA)的車輛檢測方法,通過空間金字塔Lucas Kanade光流法計算車輛在兩幀之間的行駛距離,并結(jié)合檢測道路區(qū)域面積和車輛數(shù)獲取流量、密度、速度信息。Li等[9]在YOLOv3目標檢測模型的基礎(chǔ)上引入了金字塔網(wǎng)絡(luò)結(jié)構(gòu),改進了小尺寸和遮擋場景下的車輛檢測效果,隨后使用多目標跟蹤算法(confidence multi-object tracking,CMOT)跟蹤車輛,構(gòu)建了交通流三參數(shù)的檢測框架。賴見輝等[10]使用YOLOv3 目標檢測算法檢測路側(cè)采集的交通視頻,建立了透視投影變換加卡爾曼濾波預(yù)測加匈牙利分配的交通流量計數(shù)框架。
深度學(xué)習(xí)技術(shù)的發(fā)展有效降低了外界環(huán)境對目標特征信息提取的影響,提高了車輛檢測與跟蹤效果。然而,多數(shù)深度學(xué)習(xí)的方法采用的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜,模型參數(shù)量與計算量較大,不適合小算力的移動端設(shè)備使用,且難以在實際應(yīng)用中實時運行。意識到了這一點,劉磊等[11]提出YOLO 檢測和Meanshift 快速跟蹤的車流量檢測方法。文奴等[12]通過使用可變性卷積和MobileNetV3 輕量化的YOLOv4 目標檢測模型接合DeepSort 算法實現(xiàn)了多車道的交通流量檢測。上述工作的改進雖有一定成效,但準確率和實時性仍有一定的提升空間。
因此,本文提出一種基于改進YOLOv5s 和DeepSort 的端到端的實時交通流參數(shù)檢測方法。為提高車輛檢測模型運行速度、降低對使用設(shè)備的算力要求,引入MobileNetV3 網(wǎng)絡(luò)作為YOLOv5s 的骨干網(wǎng)絡(luò);為提高車輛檢測時的定位精度,使用SIoU Loss 作為車輛邊界框的損失函數(shù)。為提高車輛跟蹤算法的跟蹤精度與速度,輕量化原算法的外觀特征提取網(wǎng)絡(luò)并在車輛重識別數(shù)據(jù)集上重新訓(xùn)練。最后,融合改進的YOLOv5s 目標檢測模型和DeepSort 多目標跟蹤算法實施交通流參數(shù)檢測任務(wù)。
本文提出的實時交通流參數(shù)檢測方法主要分為車輛檢測、車輛跟蹤、交通流參數(shù)檢測三部分,整體流程如圖1所示。首先,使用改進的YOLOv5s 模型提取視頻中的車輛目標的位置與類型信息;其次,使用改進的DeepSort 多目標跟蹤算法結(jié)合車輛外觀信息與運動信息跟蹤車輛目標;最后,設(shè)置虛擬檢測線并構(gòu)建檢測區(qū)域,通過檢測區(qū)域中車輛的行駛方向和時間計算流量與速度信息。
圖1 交通流參數(shù)檢測流程
1.1.1 YOLOv5s
YOLOv5 是YOLO(you only look once)系列檢測模型的最新版本,較前代版本(YOLOv3、YOLOv4 等)在速度、精度上均有較大提升。YOLOv5按照模型大小,從小到大可分為YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x。鑒于實時性的考慮,本文選擇YOLOv5s作為基礎(chǔ)檢測模型。
YOLOv5s 模型的網(wǎng)絡(luò)結(jié)構(gòu)主要包括輸入端、Backbone 骨干網(wǎng)絡(luò)、Neck 融合網(wǎng)絡(luò)和輸出端四部分。其中,輸入端對輸入圖像進行Mosaic 數(shù)據(jù)增強、自適應(yīng)錨框計算以及自適應(yīng)圖片縮放等數(shù)據(jù)預(yù)處理操作,豐富數(shù)據(jù)特征。Backbone骨干網(wǎng)絡(luò)提取不同層次的圖像特征,是占比整個模型參數(shù)量最大的部分,原模型使用Focus模塊、CSP 瓶頸層結(jié)構(gòu)以及空間金字塔池化模塊SPPF。Neck 融合網(wǎng)絡(luò)的設(shè)計采用了路徑聚合結(jié)構(gòu)PAN 加特征金字塔結(jié)構(gòu)FPN 的結(jié)構(gòu),加強特征信息的融合能力,進一步擴大感受野,有效保留圖像的上下文信息。輸出端輸出檢測結(jié)果,包括目標位置和類別信息。
1.1.2 YOLOv5s改進
為進一步降低模型的參數(shù)量和計算量,使其更適合部署到移動端設(shè)備,本文使用Mobile-NetV3-Small[13]作為Backbone 骨干網(wǎng)絡(luò)。Mobile-NetV3 通過使用逆向殘差結(jié)構(gòu)(inverted residual structure)、線性瓶頸模塊(linear bottleneck)、深度可分離卷積(depthwise separable convolutions)降低模型參數(shù)大小與計算量,并引入具有SE(squeeze and excite)機制的輕量級注意力機制模塊,通過神經(jīng)結(jié)構(gòu)搜索NAS來獲取網(wǎng)絡(luò)的最佳結(jié)構(gòu)、參數(shù)配置,彌補網(wǎng)絡(luò)輕量化帶來的精度損失,既保持了良好的特征提取能力,又極大程度上壓縮了模型。此外,本文還改進YOLOv5s的邊界框損失函數(shù),使用SIoU Loss[14]作為目標邊界框損失函數(shù),相比原損失函數(shù)增加了預(yù)測邊界框和真實邊界框中心距離和長寬比例的懲罰項,可以加快網(wǎng)絡(luò)訓(xùn)練時預(yù)測框的收斂,提高回歸定位精度。本文改進的檢測模型記作M-YOLOv5s,網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 改進的YOLOv5s網(wǎng)絡(luò)結(jié)構(gòu)
1.2.1 DeepSort
DeepSort算法是經(jīng)典的多目標跟蹤算法,由Sort 算法改進而來,由于Sort 算法僅考慮了目標運動信息,當目標被遮擋后容易出現(xiàn)跟蹤丟失的問題。因此,DeepSort算法在運動信息的基礎(chǔ)上添加了外觀信息,即加入神經(jīng)網(wǎng)絡(luò)提取目標的外觀特征信息,提高遮擋情況下的跟蹤準確率。除此之外,整體依舊延續(xù)了卡爾曼濾波算法預(yù)測和匈牙利算法匹配的技術(shù)路線,如圖3所示。首先,由卡爾曼濾波預(yù)測目標運動狀態(tài),得到描述目標位置和狀態(tài)的信息(x,y,r,h,x?,y?,r?,h?);其中:(x,y)表示檢測框的中心坐標;r,h分別表示檢測框的長寬比和寬度;(x?,y?,r?,h?)表示前四個參數(shù)對應(yīng)的速度信息。其次,結(jié)合運動信息和外觀信息進行目標關(guān)聯(lián),計算運動信息時使用馬氏距離描述卡爾曼濾波算法預(yù)測結(jié)果和檢測模型檢測結(jié)果之間的誤差,馬氏距離表達式為
圖3 DeepSort跟蹤算法流程
其中:dj表示第j個檢測結(jié)果的狀態(tài)向量,yi表示第i個預(yù)測結(jié)果的狀態(tài)向量。Si表示檢測結(jié)果和跟蹤結(jié)果之間的協(xié)方差矩陣。對于外觀信息,則先計算出每一個檢測框dj對應(yīng)的外觀特征描述符rj。由于車輛和行人運動方式不同,車輛通常是直線運動,相鄰兩幀的外觀相似度變化不大,而行人會經(jīng)常更換行進位置導(dǎo)致相鄰兩幀的外觀相似度變化較大。因此,對于車輛而言不需要再構(gòu)建車輛外觀特征合集,只計算檢測結(jié)果和跟蹤結(jié)果最近時間的相似度即可,一定程度上簡化了算法復(fù)雜度。外觀信息相似度由深度余弦距離衡量,其定義為
隨后,使用線性加權(quán)的方式(見式(3))結(jié)合二者,λ為超參數(shù),由匈牙利算法進行幀間目標匹配。
再次,對狀態(tài)確定的目標通過前后兩幀目標框之間的交并比(IoU)大小構(gòu)建相似度矩陣,再次使用匈牙利算法匹配。最后,更新卡爾曼濾波算法。
1.2.2 DeepSort改進
在提取外觀信息時,原算法使用的是一個離線神經(jīng)網(wǎng)絡(luò)(wide residual network,WRN),但由于WRN 參數(shù)量和計算量較大,使得Deep-Sort 算法相比Sort算法運行速度降低。鑒于實時性考慮,本文使用輕量型神經(jīng)網(wǎng)絡(luò)Mobile-NetV3-Small 作為DeepSort 算法的外觀特征提取網(wǎng)絡(luò)。此外,原算法的特征提取網(wǎng)絡(luò)使用行人重識別數(shù)據(jù)集訓(xùn)練,并把輸入圖片限定為128 × 64大小來擬合行人寬高比。因此,為使其更適用于車輛特征提取,本文將輸入圖像大小調(diào)整到64 ×128,并在車輛重識別數(shù)據(jù)集VeRi[15]上重新進行訓(xùn)練。本文改進的跟蹤算法記作M-DeepSort。
1.3.1 流量檢測
考慮到DeepSort 跟蹤算法中卡爾曼濾波需要一定的時間確保預(yù)測的穩(wěn)定性,本文設(shè)置了虛擬檢測區(qū)域,如圖4灰色區(qū)域所示。當一個全新的車輛ID 通過檢測區(qū)域時,自動生成數(shù)據(jù)字典保存該ID 車輛在檢測區(qū)域出現(xiàn)的幀次數(shù),根據(jù)其出現(xiàn)的次數(shù)判斷該次計數(shù)是否有效,可以減少車輛因出現(xiàn)身份切換IDs導(dǎo)致的流量統(tǒng)計錯誤,本文將其設(shè)置為三次。其次,根據(jù)同一ID車輛的在檢測區(qū)域的運動軌跡的起終點坐標計算一個矢量方向來判斷該車輛的運動方向。最后,根據(jù)行駛方向信息和流量計數(shù)區(qū)域的身份檢測信息進行雙向交通流量統(tǒng)計。
圖4 車輛檢測線與檢測區(qū)域示意圖
1.3.2 速度檢測
速度由車輛經(jīng)過兩虛擬檢測線的時間除以檢測線之間的實際距離獲得。相比于根據(jù)像素距離推算車速的方法,本文方法優(yōu)點如下:由于不需要對攝像機進行標定,該方法普適性更強;由于只需要計算車輛在兩個檢測線之間的行駛時間,方法更為簡單。速度的計算公式如下:
其中:f1為車輛ID 檢測框質(zhì)點坐標經(jīng)過檢測線1時的幀數(shù),f2為經(jīng)過檢測線2 時的幀數(shù),F(xiàn)PS 為檢測視頻的幀率,S為兩條檢測線之間的實際距離,由實際測量確定。
本文實驗在Windows 10環(huán)境下使用Python語言,基于PyTorch 深度學(xué)習(xí)框架進行,硬件配置為NVIDIA RTX3090 GPU,Intel(R)i9-10900K CPU。
本節(jié)模型訓(xùn)練采用的評價指標包括檢測精度AP、運行速度FPS、模型參數(shù)量/MB,計算量/G,IDs/次,其中,前兩個指標的數(shù)值越高,表明模型效果越好,后三個指標的數(shù)值越低則表明效果越好。
2.1.1 車輛檢測模型訓(xùn)練
車輛檢測模型訓(xùn)練使用的數(shù)據(jù)集為UADETRAC 數(shù)據(jù)集,其由北京市、天津市的24 個不同卡口視頻截取組成,包括近14 萬幀圖像,121萬已標記的檢測框,由于兩幀圖像之間相似度較高,為了減少訓(xùn)練時間,本文每隔10 幀抽取一張圖片,共獲得13402 張圖像,按照7∶3的比例劃分訓(xùn)練集與測試集。
為保證實驗的客觀性,本文將YOLOv5s 和M-YOLOv5s在UA-DETRAC數(shù)據(jù)集上進行重新訓(xùn)練時超參數(shù)的設(shè)置保持一致,均使用YOLOv5s預(yù)訓(xùn)練模型進行權(quán)重初始化,加快網(wǎng)絡(luò)擬合速度,縮短訓(xùn)練時間。訓(xùn)練圖像大小為640×640,優(yōu)化器為SGD,初始學(xué)習(xí)率為0.01,動量為0.935,衰減系數(shù)為0.0005,訓(xùn)練次數(shù)100個輪次,批大小為16,由于僅保留car類目標,故沒有分類損失曲線。M-YOLOv5s 訓(xùn)練過程的邊界框損失和置信度損失隨訓(xùn)練輪次變化如圖5所示,網(wǎng)絡(luò)已經(jīng)基本收斂。
圖5 M-YOLOv5s訓(xùn)練損失
兩個模型測試結(jié)果見表1,本文輕量化的YOLOv5s 的模型參數(shù)量僅為3.54 MB,為原YOLOv5s的1/2;計算量為2.94 G,為原YOLOv5s的1/3,而準確率AP 較原模型僅下降1.2%,取得了更好的速度與精度之間的均衡,更適合低算力設(shè)備部署使用。
表1 車輛檢測實驗結(jié)果
2.1.2 車輛跟蹤模型訓(xùn)練
將改進外觀特征提取網(wǎng)絡(luò)在VeRi 車輛重識別訓(xùn)練集上重訓(xùn)練,VeRi[15]數(shù)據(jù)集來自20 個不同位置的監(jiān)控攝像頭,拍攝場景包括交叉口和道路斷面,包括776輛汽車以及從不同視角拍攝的近50000 張圖像。訓(xùn)練圖像大小為64 × 128,訓(xùn)練200個輪次,其余超參數(shù)與檢測模型訓(xùn)練時的配置相同,訓(xùn)練時的損失函數(shù)變化如圖6所示,訓(xùn)練200個輪次后網(wǎng)絡(luò)損失函數(shù)變化基本穩(wěn)定。
圖6 外觀特征提取網(wǎng)絡(luò)訓(xùn)練損失
為驗證本文改進跟蹤算法的有效性,在UADETRAC測試集的MVI_123123、MVI_1234534上進行跟蹤效果測試,測試結(jié)果見表2。結(jié)果表明本文改進算法在所列跟蹤指標的表現(xiàn)中均優(yōu)于原DeepSort,由于經(jīng)過車輛重識別數(shù)據(jù)集的訓(xùn)練,本文算法較原算法IDs 降低4 次。此外,輕量型外觀特征提取網(wǎng)絡(luò)使得算法整體運行速度較原算法提高17%,改進后的跟蹤算法更適用于車輛跟蹤任務(wù)。
表2 車輛跟蹤實驗結(jié)果
驗證使用的視頻共兩段,每段視頻時長5 min,分辨率為1080 p,S=5 m。視頻1、2分別對應(yīng)平峰、高峰場景,每段視頻拍攝角度、位置固定。使用準確率評價性能,定義為公式(5),真實值由人工采集,估計值由算法自動采集。性能對比時本文算法指M-YOLOv5s+M-DeepSort,原算法指YOLOv5s+DeepSort。
2.2.1 流量檢測驗證
分別采用人工統(tǒng)計、本文算法、原算法統(tǒng)計每個視頻片段上行、下行與總的交通流量,結(jié)果如圖7所示。兩段視頻中真實的上行交通流量略小于下行交通流量,算法檢測到的交通流量也同樣符合此種情況。其次,本文算法較原算法的估計值更接近人工統(tǒng)計的真實值,表3展示了兩種算法的統(tǒng)計準確率,本文算法在上行、下行和總和的準確率均高于原算法,表明了本文改進算法的有效性。此外,視頻2中由于車流密度增加、車輛遮擋較為嚴重,本文算法的統(tǒng)計精度較視頻1中的精度降低,但精度仍穩(wěn)定在94%以上,整體表現(xiàn)效果依舊良好。
表3 交通流量檢測準確率對比
圖7 不同視頻車流量檢測結(jié)果
2.2.2 速度檢測驗證
由于無法獲取每個車輛真實的行駛速度,故以平均速度為基準進行比較。視頻1的實際平均速度為41.56 km/h,視頻2 為39.87 km/h。由于車流密度增加,車輛之間的影響增大,車輛行駛速度會有所降低,因此視頻1中車輛平均速度較視頻2稍高,符合實際情況,且算法采集到數(shù)據(jù)樣本均值也符合此情況。此外由表4對比結(jié)果可知,本文算法在視頻1、2 中采集到的速度數(shù)據(jù)的平均值的準確率比原算法都高,再次證明本文算法的有效性。
表4 速度估計準確率對比
2.2.3 檢測實時性驗證
當車流密度增加時算法的運行速度會相應(yīng)降低,為檢驗本文算法在高峰時期的運行速度的情況,對算法主要部分耗時情況進行了統(tǒng)計,結(jié)果見表5。車輛檢測任務(wù)耗時10.21 ms,占總消耗時間的61.25%,其次為車輛跟蹤任務(wù)耗時4.18 ms,最后為視頻讀取任務(wù)2.28 ms。相對于日常視頻25 幀/s 的速率,本文算法可達到59 幀/s,可滿足實時性的要求。圖8展示了本文算法的實際應(yīng)用效果,從圖8可以看出本文算法具有較強的可靠性。
表5 算法實時性測試分析單位:ms
圖8 車流量與車速檢測效果
本文提出了一種基于改進YOLOv5s和Deep-Sort 的交通流參數(shù)檢測方法,改進的YOLOv5s在精度較原YOLOv5s 僅降低1.2%的情況下,參數(shù)量和計算量分別降低1/2 和2/3;通過重構(gòu)DeepSort外觀特征提取網(wǎng)絡(luò),調(diào)整圖像輸入尺寸并進行車輛重識別訓(xùn)練,使得改進DeepSort 算法更適合用于車輛的跟蹤任務(wù)。實際試驗結(jié)果表明,該方法的平均準確率在92%以上,運行速度可達59 幀/s,滿足實時使用的要求并具有較強的實用性。未來將進一步提高方法在雨、雪等惡劣天氣、夜間或者道路極度擁擠等場景下的適用性。