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