王建云,李 訥,吳正平,雷幫軍
(1.三峽大學水電工程智能視覺監測湖北省重點實驗室,湖北 宜昌 443002;2.三峽大學計算機與信息學院,湖北 宜昌 443002)
自從Hinton提出神經網絡對數據的特征進行自動學習以來[1],計算機視覺的研究取得了很大的成就。尤其深度卷積特征的興起,為目標車輛的檢測帶來了新的機遇。同時,基于深度學習的目標車輛的跟蹤和計數,在實際生活中也有著廣泛的應用。如智能交通[2],視覺導航[3],無人駕駛[4]。
當前的目標檢測算法分為兩類:其中傳統的目標檢測算法包括Cascade+Harr[5]、SVM+HOG[6]、DPM、NMS等,它們通過區域選擇后手動提取特征,最后結合機器學習類算法來實現。另外一種是基于深度學習的算法,其也有兩類:一類是Two Stage目標檢測算法如R-CNN[7]、Fast R-CNN[8]、Faster R-CNN[9]、Mask RCNN[10],通過區域提取網絡候選框,然后用傳統的機器學習算法或或另一個卷積神經網絡對候選框做分類和回歸;另一類是One Satge目標檢測算法,主要有YOLO系列(V1[11],V2[12],V3[13],V4[14]),SSD[15]等它們通過網絡直接回歸出檢測目標的類別和位置。
Sort算法[16]和Deepsort算法[17]都是當前比較好的目標追蹤算法。Sort算法是一個實用的多目標跟蹤算法,該算法能在線且實時進行目標追蹤,該算法逐幀進行目標位置預測,最終以邊界框的形式展現測試結果,可用于有大量車流的場景中。Sort算法結合了Kalman濾波追蹤和匈牙利指派算法。Deepsort算法對sort算法進行了改進,引入了在行人重識別數據集上離線訓練的深度學習模型,不僅改善了在目標被遮擋情況下的追蹤效果,還解決了減少目標ID跳變的問題。
交通車輛的檢測一直是計算機視覺研究的一個重要領域。但是在夜晚光線較弱的情況下,目標車輛的檢測精度會有一定程度的降低。受此問題的啟發,并且考慮到在晚上車輛都會打開雙燈(包括前燈和后燈),而在夜晚光線較弱的情況下車輛雙燈的特征相比于車輛的特征更加容易被提取,因此用車輛雙燈的檢測替代對車輛的檢測,檢測精度會有一定程度的提高。
YOLOv3目標檢測算法是Redmon J等人[13]提出的YOLO系列算法的第三個版本,其網絡結構如圖1所示,主要由Darknet53網絡層和YOLO層兩部分構成,其中Darknet53網絡層主要由卷積層、批量標準化及躍層連接組成,用來提取圖像特征,其網絡結構如圖3所示。YOLO層用來對檢測的目標進行多尺度預測,多尺度預測的特征增強了對不同大小目標及被遮擋目標的檢測效果。
YOLOv3 的基本組件是DBL如圖1左下角,由卷積層,BN層和LeakRelu激活函數構成。resn結構為 YOLOv3中的主要組成部分,n代表數字,表示這個res_block里含有多少個res_unit。該結構中包括zero padding層和殘差結構[18],如圖1右下角所示。圖中用紅色虛線框出的部分是骨干網絡 Darknet53,用于提取圖像特征。
卷積層[19]的工作原理如圖2所示,其中淡藍色區域是大小為5×5的輸入圖像,綠色區域是大小為5×5的輸出圖像,深藍色區域為大小為3×3的卷積核。為保證輸出圖像與輸入圖像大小不變,首先擴充輸入圖像如圖中白色虛線框。隨后計算輸入圖像中左上角3×3大小的區域,通過卷積運算將其映射到輸出圖像的第一個點上。最后通過滑動卷積核來完成整個圖像的卷積操作,從而可以獲取圖像的特征。

圖1 YOLOV3結構圖

圖2 卷積層工作原理圖

圖3 Darknet-53網絡結構圖
Deepsort算法使用了逐幀的數據關聯以及遞歸的卡爾曼濾波[20,21]。算法的流程如下:
第一步利用卡爾曼濾波器對軌跡進行預測,第二步使用匈牙利算法將預測得到的軌跡和當前幀中的檢測目標進行匹配;第三步是卡爾曼濾波更新。

匹配問題上,Deepsort算法同時考慮了目標外觀信息和運動信息的關聯。運動信息的關聯是使用檢測框與跟蹤器預測框之間的馬氏距離來描述運動關聯程度。如式(1)

(1)
第j個檢測框的位置用dj表示,yi用來表示第i個追蹤器對目標的預測位置,Si表示檢測位置與平均追蹤位置之間的協方差矩陣。
如果關聯的馬氏距離小于指定的閾值t(1),作者設置閾值t(1)設為0.94877。就設置運動狀態關聯成功。如式(2)

(2)


(3)
如果d2(i,j)小于指定的閾值,就表示關聯不成功。使用兩種方式的加權來表示最后匹配度量如式(4)
Ci,j=μd1(i,j)+(1-μ)d2(i,j)
(4)
若Ci,j位于度量閾值的交集內時,就認為實現了正確的關聯。
在本文中,使用YOLOv3來訓練車雙燈檢測模型,并將視頻中的多目標檢測結果作為Deepsort跟蹤器的實時輸入。高精度的檢測結果彌補了DeepSort自身算法的缺陷。從而完整、準確實時地跟蹤視頻中的多目標。具體流程如圖4。

圖4 YOLOv3算法與Deepsort算法融合
首先是對輸入的視頻幀中的每一幀進行處理,通過YOLOv3目標檢測算法讀取當前視頻幀中待檢測車輛雙燈的檢測框的位置以及各個檢測框中圖像塊的深度特征,根據置信度對檢測框進行篩選,即對置信度不夠高的檢測框予以刪除。然后通過卡爾曼濾波預測車輛雙燈在當前幀中的位置,并通過級聯匹配提高精度。再接著對于未級聯匹配上的跟蹤器和未確認狀態的跟蹤與未級聯匹配上的檢測,對它們的跟蹤框和檢測框之間基于IOU進行匹配。最后一步是對于級聯匹配上的跟蹤器,去做參數更新。
通過調用湖北省宜昌市多個車輛出行較為密集的交通路口的交通攝像頭采集數據,然后對數據進行手動標記。本文手動標記了2836張包含車燈以及整車的數據集,涉及雨天夜晚以及正向和背向多個場景。本數據是在夜晚場景同時標記車燈vehicle_light和整車vehicle_whole兩個類。主要為了突出對比在夜晚場景下,那種檢測方式更有效。手動標記的voc數據集如圖5。

圖5 手動標記的正向和背向數據
使用錨點框作為選取物體邊界框的參照物最早出現在Faster R-CNN目標算法[23]中,主要是為了更加高效精準的預測不同尺度與寬高比物體的邊界框。隨后YOLOv3等其它的目標檢測算法均采用了錨點機制并取得了良好效果。
YOLOv3通過對大量的訓練數據使用聚類的方式獲得對于檢測車輛雙燈最好的先驗錨點框。如式(5)
d(box,centroid)=1-IOU(box,centroid)
(5)
車輛雙燈位置信息會被YOLOv3算法直接預測出來,預測值為4個坐標信息tx,ty,tw,th具體如下列公式
bx=σ(tx)+cx
(6)
by=σ(ty)+cy
(7)
bw=pwetw
(8)
bh=pheth
(9)
通過上述公式可以計算得到預測框的中心點坐標和寬高bx,by,bw,bh。cx和cy表示一個網格與圖像左上角的橫縱距離,pw和ph表示邊界框的寬和高。σ()為logistic函數。
YOLOv3算法包含了3個檢測尺度,每個檢測尺度分配3組錨框值,共需9組錨框值。原始網絡的9組anchor值是在訓練原有80個類別的數據而設定的。本文中,只需要對整車和車燈這兩個類進行訓練,因此利用K-均值方法聚類出9組錨框值比原始的9組錨框值在檢測精度上有一定提高。
k-means算法的執行步驟可總結如下:
1)隨機選擇3個位置,作為初始聚類中心,隨后計算圖中所有點到這3個初始聚類中心的歐式距離,將每一個點劃入到距離其最近的初始聚類中心。
2)將每一簇的中心位置更新為新的聚類中心位置。重復計算步驟1),直到每個種子點的前后兩次的更新值之間滿足預設的閾值或迭代次數。
測試集在通過k-means聚類后改變錨框值的YOLOv3和原始YOLOV3下的map比較見表1。

表1 數據在k-means聚類錨框YOLOv3算法和原始YOLOv3算法錨框值下map的比較
本文的實驗環境的硬件要求為Intel Core I7-9700F XCPU@4.79GZ 32運行內存,Nvidia Gefo-rece GTX1080ti,ubuntu18.04 64位操作系統,Darknet深度學習框架。
本實驗過程使用darknet深度學習框架,YOLOv3算法。batch表示每次讀取圖片數量,subdivisions表示把每次讀取的batch分成幾份進行訓練。由于內存足夠,同時為提高訓練速度,在訓練時,將batch設置為64,subdivisions設置為8。學習率learning_rate設置為0.001,學習率太大容易產生振蕩同時損失值爆炸,學習率太小導致收斂速度慢且容易產生過擬合現象。根據filters=(classes+5)*3,5表示4個坐標和一個置信度率,(tx,ty,tw,th,c)。3表示每個cell輸出預測框的個數。本文中只有vehicle_whole和vehicle_light兩類,因此將classes設置為2,filters設置為21。
在目標檢測上,用map(Mean Average Preci-sion),即均值平均精度,作為衡量檢測精度的指標。在多目標跟蹤上,用 MOTA(Multiple Object Tracking Accuracy)和MOTP(Multiple Object Tracking Precision)共同衡量算法連續跟蹤目標的能力(即在連續幀中能準確判斷目標的個數,精確的劃定其位置,從而實現不間斷的連續跟蹤)。

表2 vehicle_light和vehicle_whole在k-means聚類錨框YOLOv3算法下map值

表3 vehicle_light和vehicle_whole在YOLOV3_Deepsort算法下跟蹤結果

圖6 聚類錨框YOLOv3 loss-epochs曲線

圖7 車輛雙燈檢測結果

圖8 車輛雙燈跟蹤計數結果
利用K-means聚類算法對聚類出9組錨框值,相比于原始YOLOv3的錨框值,目標檢測的平均檢測準確率map有了明顯的提升。同時,在夜晚環境下,利用YOLOv3算法車輛雙燈檢測的map為99.42%,車輛檢測的map為96.65%;同時在夜晚環境的條件下,車燈的檢測精度比車輛的檢測精度高2.3%。最后利用Deepsort算法對車輛雙燈進行追蹤和計數,車輛雙燈MOTA為63.6%,車輛的MOTA為59.7%,對比提升2.9%。車輛雙燈的MOTP為79.8%,整車的MOTA為79.3%,對比提升0.5%。因此得出結論,夜晚光線較暗的環境下,車輛雙燈的檢測方式比車輛的檢測方式更加有效;同時夜晚條件下,車輛雙燈跟蹤效果比車輛跟蹤效果好。
針對目前在夜晚環境下車輛檢測精確度不夠高的情況,本文提出了在夜晚或者光線較暗的環境下用車燈特征替代車輛特征來檢測車輛方法。同時鑒于當前夜晚車燈數據集的不充足,本文也提供了一個標記好的車燈數據集。經過實驗表明,夜晚環境下,車燈的檢測精度比車輛檢測精度更高。接著利用Deepsort算法完成對檢測車輛雙燈的跟蹤計數,對研究智能交通具有重要的意義。同時,本文車燈的數據集場景過于單一,訓練的模型容易產生過擬合的現象。因此,在未來,將采集更多不同場景下的車輛雙燈數據,對智能交通的發展提供支撐。