凡陽(yáng)陽(yáng), 胡放榮, 熊顯名, 李小勇
(1.桂林電子科技大學(xué) 電子工程與自動(dòng)化學(xué)院,廣西 桂林 541004;2.廣西交通科學(xué)研究院有限公司,南寧 530007)
隧道的穩(wěn)定安全運(yùn)行關(guān)系到整個(gè)高速公路網(wǎng)的安全暢通運(yùn)行,因此,對(duì)高速公路隧道內(nèi)進(jìn)行監(jiān)測(cè)具有很大的意義??梢曰诋?dāng)前大量的高速公路隧道視頻監(jiān)控設(shè)備對(duì)隧道內(nèi)的交通狀況進(jìn)行監(jiān)控,實(shí)現(xiàn)隧道交通的智能化。隧道內(nèi)的車輛檢測(cè)與跟蹤是實(shí)現(xiàn)這一智能化的重要手段[1]。近幾年來(lái)隨著人工智能技術(shù)的快速發(fā)展,車輛檢測(cè)方面主要表現(xiàn)在基于深度卷積神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)算法。Yang等[2]提出了一種基于Faster R-CNN網(wǎng)絡(luò)的道路車輛檢測(cè)方法,通過(guò)對(duì)網(wǎng)絡(luò)模型進(jìn)行改進(jìn),提高了小型車輛的檢測(cè)性能。宋煥生等[3]基于SSD深度學(xué)習(xí)算法,實(shí)現(xiàn)了適用于高速公路場(chǎng)景的車輛目標(biāo)分類與檢測(cè)。李云鵬等[4]采用目前比較流行的YOLOv3目標(biāo)檢測(cè)算法,對(duì)道路上的行人及車輛進(jìn)行檢測(cè),實(shí)現(xiàn)了良好的目標(biāo)檢測(cè)精度和速度。在車輛跟蹤方向,劉軍等[5]提出一種基于Tiny YOLOv3、卡爾曼濾波和匈牙利算法的多目標(biāo)車輛跟蹤方法,該方法運(yùn)行速度較快,適合應(yīng)用在嵌入式平臺(tái)。潘振福等[6]將多尺度估計(jì)加入KCF跟蹤算法中,增強(qiáng)了跟蹤算法的目標(biāo)尺度變化適應(yīng)性。程立英等[7]基于TLD跟蹤算法實(shí)現(xiàn)了快速視覺(jué)跟蹤,具有較強(qiáng)的適應(yīng)性和有效性。
考慮到車輛檢測(cè)與跟蹤算法的實(shí)時(shí)性及準(zhǔn)確性,采用YOLOv3目標(biāo)檢測(cè)算法,實(shí)現(xiàn)高精度的隧道車輛檢測(cè)和車型識(shí)別。在車輛檢測(cè)的基礎(chǔ)上,提出了一種目標(biāo)檢測(cè)結(jié)合DSST跟蹤算法的多車輛跟蹤方法,實(shí)現(xiàn)高速公路隧道多目標(biāo)車輛跟蹤,具有較好的實(shí)用價(jià)值。
YOLO(you only look once)是Redmon等[8]提出的基于深度神經(jīng)網(wǎng)絡(luò)的對(duì)象識(shí)別和定位算法,其特點(diǎn)是運(yùn)行速度很快,可用于實(shí)時(shí)系統(tǒng),現(xiàn)YOLO已發(fā)展到v3版本。YOLOv3[9]采用了全新的網(wǎng)絡(luò)結(jié)構(gòu),該結(jié)構(gòu)大量采用3×3和1×1的卷積核,因?yàn)橐还灿?3個(gè)卷積層,所以該網(wǎng)絡(luò)結(jié)構(gòu)叫Darknet-53。為了避免由網(wǎng)絡(luò)層的加深引起的訓(xùn)練的梯度爆炸,該網(wǎng)絡(luò)結(jié)構(gòu)借鑒了深度殘差網(wǎng)絡(luò)的設(shè)計(jì)思想,在卷積層之間設(shè)置了殘差模塊和跳躍鏈接。網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 Darknet-53網(wǎng)絡(luò)結(jié)構(gòu)
YOLOv3借鑒了FPN[10](feature pyramid network)的思想,在3種不同的尺度上進(jìn)行預(yù)測(cè),分別為13×13、26×26、52×52,每種規(guī)模預(yù)測(cè)3個(gè)目標(biāo)邊框。在每個(gè)尺度特征圖的每個(gè)網(wǎng)格設(shè)置3個(gè)先驗(yàn)框,共有13×13×3+26×26×3+52×52×3=10 647個(gè)預(yù)測(cè)。每個(gè)預(yù)測(cè)結(jié)果是一個(gè)(4+1+80)=85維向量,這個(gè)85維向量包含邊框坐標(biāo)(4個(gè)數(shù)值)、邊框置信度(1個(gè)數(shù)值)、對(duì)象類別的概率(對(duì)于COCO數(shù)據(jù)集,有80種對(duì)象)。
DSST(discriminative scale space tracking)[11]算法是在MOSSE算法的基礎(chǔ)上進(jìn)行了2個(gè)方面的改進(jìn):1)改進(jìn)了特征提取方式;2)增加了尺度濾波器用于尺度估計(jì)。DSST采用HOG特征代替MOSSE原有的灰度特征。DSST算法設(shè)計(jì)了位置濾波器和尺度濾波器2個(gè)獨(dú)立的的相關(guān)濾波器,位置濾波器負(fù)責(zé)當(dāng)前幀的目標(biāo)定位,尺度濾波器負(fù)責(zé)當(dāng)前幀的目標(biāo)尺度估計(jì)。
將輸入圖像特征矩陣塊f設(shè)計(jì)為d維特征向量,通過(guò)建立最小均方誤差來(lái)求解最優(yōu)位置濾波器h,最小均方誤差ε可表示為
(1)
其中:l為特征的某一維度,l∈{1,2,…,d};g為f訓(xùn)練得到的期望結(jié)果,由峰值位于跟蹤目標(biāo)中點(diǎn)的高斯函數(shù)構(gòu)造得來(lái);λ為正則化系數(shù);*表示相關(guān)運(yùn)算。式(1)在頻域中求解可得,
(2)
其中:F(·)表示函數(shù)的離散傅里葉變換;變量上帶橫線表示共軛復(fù)數(shù)。用At,l、Bt分別表示濾波器H的分子與分母,分別進(jìn)行迭代更新,
(3)
其中η為學(xué)習(xí)率。在新一幀圖像中,目標(biāo)位置可通過(guò)求解最大響應(yīng)值y得到,
(4)
其中:F-1(·)表示逆傅里葉變換;Z為新一幀圖像的候選輸入樣本。
在新一幀圖像中,利用2維的位置相關(guān)濾波器確定目標(biāo)的新位置,再使用1維的尺度相關(guān)濾波器,以當(dāng)前中心位置為中心點(diǎn),獲取不同尺度的候選區(qū)域,從而找到最匹配的尺度。尺寸選擇原則為
(5)
其中:P和R分別為目標(biāo)框的寬度和高度;n在取值區(qū)間內(nèi)取整數(shù);s為尺度數(shù)量,s=33;a為尺度因子,a=1.02。
跟蹤的關(guān)鍵是使跟蹤目標(biāo)和檢測(cè)目標(biāo)建立一一對(duì)應(yīng)關(guān)系。采用檢測(cè)目標(biāo)與跟蹤目標(biāo)之間的歐式距離來(lái)構(gòu)造代價(jià)矩陣,然后采用匈牙利算法[12]計(jì)算跟蹤目標(biāo)和檢測(cè)目標(biāo)的對(duì)應(yīng)關(guān)系。代價(jià)計(jì)算公式和代價(jià)矩陣為:
(6)
(7)
其中:dij為檢測(cè)目標(biāo)的中心位置與DSST跟蹤目標(biāo)的中心位置的歐式距離;T為根據(jù)經(jīng)驗(yàn)設(shè)置的閾值,當(dāng)跟蹤目標(biāo)與檢測(cè)目標(biāo)距離過(guò)大時(shí),直接定義一個(gè)距離很大的數(shù)值,防止錯(cuò)誤匹配。
多目標(biāo)匹配示意圖如圖2,其中實(shí)線方框表示跟蹤器預(yù)測(cè)的目標(biāo)方框,虛線方框表示YOLOv3檢測(cè)器檢測(cè)到的目標(biāo)方框。
圖2 多目標(biāo)匹配示意圖
通過(guò)匈牙利算法求解總體關(guān)聯(lián)代價(jià)最大指派矩陣A=[aij],aij∈{0,1},aij=1表示檢測(cè)目標(biāo)i和跟蹤目標(biāo)j已被成功關(guān)聯(lián)。匈牙利算法確保整體最終匹配的距離代價(jià)之和是最低的,最小代價(jià)之和為
(8)
其中Z為總體最小代價(jià)。
多目標(biāo)跟蹤方法主要步驟為:
1)采用YOLOv3檢測(cè)器從當(dāng)前幀找到新的目標(biāo),為每一個(gè)新目標(biāo)創(chuàng)建跟蹤器。
2)結(jié)合YOLOv3檢測(cè)到的所有目標(biāo)與當(dāng)前跟蹤器所跟蹤的目標(biāo)進(jìn)行多目標(biāo)數(shù)據(jù)關(guān)聯(lián)匹配,用匹配的檢測(cè)目標(biāo)更新跟蹤器的位置參數(shù)。
3)根據(jù)目標(biāo)未匹配的次數(shù)判定目標(biāo)是否已離開(kāi),若已離開(kāi)則刪除對(duì)應(yīng)的跟蹤器。對(duì)于這個(gè)未匹配次數(shù)閾值,根據(jù)經(jīng)驗(yàn)設(shè)置為3,即超過(guò)3次未匹配則刪除對(duì)應(yīng)的跟蹤器。
YOLOv3檢測(cè)器并未對(duì)每一幀都檢測(cè),而是每隔30幀進(jìn)行一次目標(biāo)檢測(cè),其余幀圖像由DSST跟蹤器進(jìn)行持續(xù)跟蹤,并在跟蹤過(guò)程中使用檢測(cè)器去校正跟蹤器,這樣的好處是可以提升系統(tǒng)運(yùn)行幀率,且充分利用了檢測(cè)器與跟蹤器的各自優(yōu)點(diǎn)。多目標(biāo)跟蹤過(guò)程如圖3所示。
圖3 多目標(biāo)跟蹤過(guò)程
為了使YOLOv3網(wǎng)絡(luò)模型更好地適應(yīng)高速公路隧道環(huán)境,本實(shí)驗(yàn)使用廣西境內(nèi)的汕昆高速(G78)部分隧道內(nèi)的監(jiān)控視頻所采集的842張樣本圖片作為訓(xùn)練數(shù)據(jù)集。本數(shù)據(jù)集有轎車(car)、客車(bus)和貨車(truck)三種類型的車輛。使用LabelImg軟件進(jìn)行數(shù)據(jù)集的標(biāo)記。
選擇合適的預(yù)選框[13]可提高模型的準(zhǔn)確度和訓(xùn)練速度。因此,采用k-mean聚類算法在自制的高速公路隧道車輛數(shù)據(jù)集上進(jìn)行聚類分析,得到9組預(yù)選框,預(yù)選框的寬高分別為:(17,24),(22,32),(40,62),(30,45),(51,84),(68,101),(81,138),(102,204),(151,286)。使用上述這9組預(yù)選框進(jìn)行模型訓(xùn)練。
由于樣本數(shù)量較少,從頭開(kāi)始訓(xùn)練容易產(chǎn)生過(guò)擬合現(xiàn)象,且不具備泛化能力。因此,采用遷移學(xué)習(xí)的方式進(jìn)行YOLOv3模型的訓(xùn)練。
硬件環(huán)境為:CPU為Intel(R) Xeon(R) CPU E5-2620 v4,GPU為NVIDIA Tesla P40,運(yùn)行內(nèi)存(RAM)128 GiB。實(shí)驗(yàn)在Windows系統(tǒng)的Pycharm開(kāi)發(fā)平臺(tái)開(kāi)發(fā)實(shí)現(xiàn),使用的編程語(yǔ)言為Python3.6,深度學(xué)習(xí)框架為Keras2.2.2,并結(jié)合了OpenCV3.4.1。
YOLOv3遷移學(xué)習(xí)訓(xùn)練是在原作者提供的252層YOLOv3模型的基礎(chǔ)上進(jìn)行訓(xùn)練的,需要保留模型的前249層的參數(shù)(預(yù)訓(xùn)練權(quán)重)。在第一輪的訓(xùn)練過(guò)程中,凍結(jié)模型的前249層,只訓(xùn)練整個(gè)模型的后3層,采用學(xué)習(xí)率為0.001,迭代500次。當(dāng)損失值達(dá)到穩(wěn)定水平時(shí),降低學(xué)習(xí)率為0.000 1,解凍前249層,放開(kāi)所有層進(jìn)行第二輪訓(xùn)練,迭代500次。YOLOv3遷移學(xué)習(xí)訓(xùn)練過(guò)程如圖4所示。
圖4 YOLOv3遷移學(xué)習(xí)訓(xùn)練過(guò)程
當(dāng)放開(kāi)所有層一起訓(xùn)練時(shí),損失值隨著訓(xùn)練迭代次數(shù)的增加緩慢下降,最終達(dá)到收斂狀態(tài),損失值達(dá)到一個(gè)比較低的值,大約為5。訓(xùn)練損失曲線圖如圖5所示。
圖5 訓(xùn)練損失
實(shí)驗(yàn)采用廣西壯族自治區(qū)河百高速(G78汕昆高速河百段)的新煙隧道的監(jiān)控視頻。表1為模型測(cè)試結(jié)果。由表1可知,模型性能表現(xiàn)較好,尤其是轎車的檢測(cè)效果最好,達(dá)到了99.47%。檢測(cè)效果圖如圖6所示。
表1 模型測(cè)試結(jié)果
圖6 檢測(cè)效果圖
本實(shí)驗(yàn)采用YOLOv3結(jié)合DSST跟蹤算法進(jìn)行車輛跟蹤實(shí)驗(yàn)。圖7為單車輛與多車輛情況下的多目標(biāo)跟蹤。從圖7可看出,本方法可以很好地應(yīng)對(duì)多車輛同時(shí)跟蹤,并繪制跟蹤軌跡。本方法的系統(tǒng)FPS基本在25幀以上,有的達(dá)30幀以上,完全可以滿足實(shí)時(shí)性要求,相較于使用YOLOv3結(jié)合卡爾曼濾波對(duì)每幀圖像進(jìn)行檢測(cè)跟蹤的傳統(tǒng)方法,在相同硬件配置下平均幀率提升了15幀。
圖7 跟蹤效果圖
采用同一段視頻場(chǎng)景下,對(duì)高速公路隧道內(nèi)的車輛進(jìn)行跟蹤,以車流量統(tǒng)計(jì)的準(zhǔn)確性來(lái)評(píng)價(jià)跟蹤方法的性能。跟蹤結(jié)果如表2所示。從表2可看出,本方法在高速公路隧道場(chǎng)景下,跟蹤效果表現(xiàn)良好,車流量統(tǒng)計(jì)的平均準(zhǔn)確率達(dá)到了95.75%,其中轎車的跟蹤準(zhǔn)確率最高,達(dá)97%以上。與傳統(tǒng)的YOLOv3結(jié)合卡爾曼濾波對(duì)每幀圖像進(jìn)行檢測(cè)跟蹤的方法比較,本方法在幀率上具有很大優(yōu)勢(shì),平均幀率提升了15幀,且本方法在跟蹤的平均準(zhǔn)確率上也更具有優(yōu)勢(shì)。從整體來(lái)看,本方法能滿足高速公路隧道場(chǎng)景下的車輛檢測(cè)與跟蹤應(yīng)用的需求。
表2 跟蹤結(jié)果
提出了一種基于YOLOv3的高速公路隧道多車輛跟蹤方法,使用隧道監(jiān)控?cái)z像頭所采集到的樣本數(shù)據(jù)對(duì)YOLOv3模型進(jìn)行訓(xùn)練,結(jié)合DSST跟蹤器,利用數(shù)據(jù)關(guān)聯(lián)實(shí)現(xiàn)對(duì)高速公路隧道多車輛進(jìn)行檢測(cè)與跟蹤。實(shí)驗(yàn)表明,本跟蹤方法達(dá)到了預(yù)期效果,而且系統(tǒng)算法的幀率較于傳統(tǒng)的方法有了很大的提升,完全可以達(dá)到實(shí)時(shí)性要求,可以滿足高速公路隧道場(chǎng)景下車輛檢測(cè)與跟蹤應(yīng)用的需求。下一步將增加訓(xùn)練樣本數(shù)量,進(jìn)一步提高跟蹤準(zhǔn)確率。