丁 冰,楊祖莨,丁 潔,劉晉峰,閆國亮
太原理工大學 電氣與動力工程學院,太原 030024
隨著高速公路建設快速發展,高速公路隧道的運營里程不斷增加,為人們帶來很多便利。然而,由于隧道內空間狹小、具有一定密閉性、光照受限等特點,發生于隧道的高速公路交通事故比例最高[1]。尤其是載有易燃易爆物品的車輛在隧道內停車導致的問題將更為嚴重。例如2014年在晉濟高速巖后隧道“3·1”特別重大道路交通危化品爆燃事故共造成40人死亡、12人受傷和42輛車燒毀[2]。為有效地減少交通事故的發生,尤其是避免二次事故的發生,準確快速的高速公路隧道內停車檢測是十分必要的,對高速公路隧道管理系統的智能化發展意義重大。
在實際高速公路隧道中已經部署安裝了大量的視頻監控設備(包括高清網絡攝像機、光纖傳輸線路、高速交換機等),這些設備含有豐富的車輛信息。基于此,越來越多的研究者將視頻數據作為切入點研究車輛的各種行為狀態,逐步提升管理效率,緩解海量監控攝像頭與有限監控能力之間的矛盾。在基于視頻圖像的停車檢測研究初期,研究主要集中于傳統圖像處理方向并且絕大多數是針對露天的場景,Guler等人[3]采用Peripheral多目標跟蹤器從背景減法獲得的前景中確定每輛車的位置,但該方法會將快速變化的背景錯誤地檢測為車輛。Porikli等人[4]提出基于雙背景的異常事件檢測方法,該方法中用于建立長、短背景的時間常數存在很大不確定性。趙敏等人[5]基于混合高斯模型檢測靜止目標,根據車輛的區域特征對靜止目標中的停車車輛進行識別,但仍然缺乏對車輛識別的魯棒性。隨著卷積神經網絡在圖像檢測與識別領域的快速發展,在停車檢測中也引入了卷積神經網絡。文獻[6]在傳統圖像處理方法基礎上引入了卷積神經網絡模型識別車輛,這樣一定程度上克服了燈光干擾帶來的誤檢,但并不能從車輛檢測的根本上改進。于青青等人[7]將實時壓縮跟蹤方法與經典的KLT運動角點檢測方法相結合,提取視頻中車輛的運動軌跡,以檢測車輛的側路停車行為。姜明新等人[8]使用背景建模技術,檢測監控區域內的運動目標,并通過計算聯通區域面積來過濾其他物體的干擾,最終檢測出違停車輛。石時需等人[9]利用混合差分技術提取視頻中的車輛目標,用粒子濾波算法跟蹤運動的車輛,實現車輛的停車檢測行為。杜金航等人[10]也對YOLOv3進行改進,從而實現道路車輛目標檢測,但此算法受光照及目標的快速運動影響較大,不適用于高速公路隧道內。
目前,雖然基于深度學習的目標檢測模型已經有了廣泛應用,但是這些模型對于高速公路隧道內車輛的檢測并不適用,同時基于某省高速公路隧道管理的實際需求,利用真實的高速公路隧道內監測的視頻圖像來展開停車行為檢測的研究是有必要的。相比于露天環境,高速公路隧道所特有的性質為停車檢測增加了諸多難度,其中包括:(1)距離攝像頭遠近不同的車輛在畫面中的大小顯著不同,尤其是大型車在近距離和小型車在遠距離的時候尺寸差異尤為明顯;(2)車燈、環境照明燈光及路面的反射光等干擾,影響檢測的準確率。因此,在實際需求的驅動下,開展了高速公路隧道中停車檢測技術的研究。研究中技術的創新性在于:(1)改進了YOLOv3模型,使其更適用于車輛的檢測,更適合于高速公路隧道內的停車檢測任務,提高了其在車輛檢測上的mAP;(2)在車輛檢測數據集方面,修改整理了公開的數據集,并且制作了高速公路隧道車輛數據集;(3)將Deep SORT跟蹤算法應用于停車檢測中來,并提出根據雙重速度閾值來判別停車。
在停車檢測中首先需要建立車輛檢測模型,從視頻中檢測出車輛,然后再判斷是否發生停車。而對于深度學習車輛檢測模型來說,模型的網絡結構和訓練所用的數據集起到非常關鍵的作用。
YOLOv3[11]是YOLO系列深度學習目標檢測模型的最新研究成果,其檢測精度和檢測速度在均衡性上更適宜作為車輛檢測的基礎網絡結構。相較于YOLOv1[12]和YOLOv2[13],YOLOv3特征圖的尺寸是不同的,且應用在每一個特征圖上的候選框的大小也是不一樣的,這樣對于不同尺寸的目標的適應能力更強。但對于高速公路隧道場景中的車輛檢測,YOLOv3檢測層的特征圖語義信息不夠豐富,缺少對低層深度特征的處理,尤其是低于36層的特征圖,這樣會導致在隧道內的停車檢測中,遠距離小型車輛的檢測效果不好。因此,在對YOLOv3網絡結構進行改進中,通過上采樣、融合低層深度特征獲得更大的特征圖,提高了隧道內小目標車輛的檢測準確率。
圖1所示為設計的車輛檢測網絡結構,將其命名為YOLOv3-TunnelVehicle。YOLOv3-TunnelVehicle網 絡結構的輸入是監控視頻的整幅圖像,通過一系列不同的卷積層進行運算,輸出檢測到的所有車輛邊界框的位置及尺寸。詳細地來講,首先該網絡結構采用深度殘差網絡提取車輛特征,在深度殘差網絡結構的第11層、第36層、第61層和第79層分別獲得128×128×128、64×64×256、32×32×512和16×16×512的特征圖尺寸。其次,在殘差網絡之后添加多個卷積層,并將其分成4個分支,形成多尺度預測網絡。為了獲得更豐富的語義信息,YOLOv3-TunnelVehicle將預測網絡中的特征圖通過上采樣的方式提高特征圖的尺寸,與深度殘差網絡中相對應的特征圖進行融合(第85層32×32×256與第61層32×32×512融合獲得32×32×768的特征圖,第97層64×64×128與第36層64×64×256融合獲得64×64×384的特征圖,第109層128×128×128與第11層128×128×128融合獲得128×128×256的特征圖)。最后,利用非極大值抑制的方法剔除重復的邊界框,得到最終的車輛檢測結果。

圖1 YOLOv3-TunnelVehicle網絡結構Fig.1 Network structure of YOLOv3-TunnelVehicle
另外,值得一提的是車輛檢測模型中車輛邊界框的預測采用K-means聚類進行邊界框的初始化。該方法基于Faster R-CNN[14]中的Anchor機制,但其區別在于默認框的尺寸大小是采用K-means聚類確定的,而非人為設定。如圖2所示,tx、ty、tw、th為模型直接的預測輸出值。cx、cy為單元格相對于左上角的坐標,每個單元格的單位長度為1,圖中示例為cx=1,cy=1。tx、ty分別經過Sigmoid函數后得到0至1之間的偏移量,該偏移量與cx、cy相加后得到邊界框中心點的位置(bx,by)。pw、ph是邊界框初始化后的寬和高(即默認框的尺寸),tw、th分別與pw、ph作用后得到邊界框的寬和高bw、bh,在寬度和高度的計算中引入了對數空間的變化,以使計算出的寬度和高度始終不為負,確保在訓練過程中針對具有不等條件約束的優化問題解決求梯度過程。(bx,by,bw,bh)即為預測邊界框的位置及尺寸。

圖2 車輛邊界框的預測Fig.2 Projections of vehicle boundary frames
由于當前公開數據集沒有針對隧道內車輛的圖片,針對數據集展開了兩項工作:(1)對公開數據集Pascal VOC[15]進行修整,考慮車輛的類別和外形、位置、光照強度及場景等因素,篩選出與高速公路隧道內車輛相似的數據;(2)為了進一步體現高速公路隧道內車輛的特點,制作了高速公路隧道車輛數據集。
在對VOC數據集的修整中,為了防止冗余數據拖慢網絡訓練效率,開展了所做工作如下:(1)從原始VOC數據集的20類目標中篩選出car、bus和train這三類。VOC數據集經過篩選后,含有car、bus、train中一類或多類的樣本情況為:VOC2007為2 249個樣本,VOC2012為2 134個樣本。(2)將VOC數據集中car、bus和train這三類合并為一個類別并命名為vehicle。
圖3分別展示了VOC數據集和使用實際高速公路車輛圖片制作的數據集。從圖中可以看出,即使挑選出的VOC數據集中的車輛圖片與實際高速公路隧道內的車輛圖片仍然存在較大差別,因此,制作高速公路隧道數據集是十分必要的。所制作的高速公路隧道數據集所有圖片均來源于實際的高速公路隧道監控視頻,總共為1 599張。

圖3 車輛圖片Fig.3 Vehicle pictures
對于修整完的數據集xml標簽文件,將其轉換為深度學習框架Darknet[16]所需的txt樣式標簽文件。其中,各個目標標注框的坐標做如下轉換:

其中,(xmin,ymin)、(xmax,ymax)分別為標注框的左上角坐標和右下角坐標,而width和height為圖像的寬和高。
在實驗中,對改進的車輛檢測模型進行了對比,其中VOC-20類數據集訓練YOLOv3模型的結果來自于文獻[17],其余結果均來自于本實驗。實驗分為:采用VOC-carbustrain三類目標數據集訓練YOLOv3模型;采用VOC-vehicle一類目標數據集訓練YOLOv3模型;采用VOC-vehicle一類目標數據集分別訓練YOLOv3模型和YOLOv3-TunnelVehicle模型;采用Tunnel-vehicle一類目標數據集分別訓練YOLOv3模型和YOLOv3-TunnelVehicle模型。本實驗中采用輕型的深度學習框架Darknet進行訓練與測試。在整個訓練過程中,進行10 000輪次的迭代,其中動量和權重衰減分別配置為0.9和0.000 5,批量大小設置為64,學習率初始為0.001。
在模型訓練完成后,各個實驗分別取得的mAP為85.06%、85.44%、86.50%、97.54%和98.19%,如表1所示。第一個對比實驗針對原始YOLOv3,采用剔除無用目標的VOC-carbustrain數據集來訓練,車輛檢測的mAP提高了0.56個百分點,表明VOC-carbustrain數據集對于提升車輛檢測的準確率是有效的。第二個對比實驗是為了驗證將car、bus、train三類目標變為vehicle一類目標的有效性,采用相同網絡結構和先驗框進行對比實驗,實驗結果表明:將car、bus、train三類目標變為vehicle一類目標使得mAP提高了0.38個百分點。第三個對比實驗是用來驗證所設計的YOLOv3-TunnelVehicle網絡結構的有效性,實驗中采用相同的先驗框和相同的數據集,結果表明YOLOv3-TunnelVehicle相比于YOLOv3在VOC-vehicle數據集和Tunnel-vehicle數據集上車輛檢測的mAP分別提升了1.06個百分點和0.65個百分點。最終,得到了在Tunnel-vehicle數據集上訓練的mAP為98.19%的高速公路隧道車輛檢測模型。

表1 YOLOv3網絡結構優化實驗結果Table 1 Results of YOLOv3 network structure optimization experiment %
圖4為提出的高速公路隧道內停車檢測方法的結構。首先,采用1.2節中所改進的YOLOv3車輛檢測模型檢測出車輛的位置;其次,在獲得車輛的具體位置后,將其輸入給Deep SORT(Deep Simple Online and Realtime Tracking)[18]多目標跟蹤算法來跟蹤車輛,進而計算被跟蹤車輛的速度來判斷是否停車。

圖4 提出的高速公路隧道內停車檢測方法結構圖Fig.4 Structural diagram of proposed method for detecting vehicle stopping in highway tunnels
Deep SORT是基于SORT算法改進的,利用運動信息和外觀信息進行數據關聯。對于視頻輸入,通過車輛檢測模型可以得到車輛的邊界框,但是無法判斷每個邊界框屬于哪個跟蹤目標,因此需要匹配算法將當前幀中檢測到的車輛邊界框與上一幀的車輛跟蹤目標進行匹配。在匹配過程中,由于車輛跟蹤目標常常是運動的,因此先采用卡爾曼濾波來估計車輛跟蹤目標的狀態再完成匹配。車輛檢測目標的跟蹤分配包括運動匹配、外觀匹配和級聯匹配。其中,運動匹配是通過平方馬氏距離來測量歷史幀中跟蹤目標的卡爾曼狀態與當前幀中車輛檢測邊界框之間的運動匹配程度。在外觀匹配中,采用余弦深度特征表示車輛檢測目標和跟蹤目標的外觀。在獲得外觀特征后,使用余弦深度特征之間的余弦距離測量兩者的外觀相似度,從而進行外觀匹配。級聯匹配將運動匹配和外觀匹配結合在一起,實現車輛檢測邊界框與最近出現的跟蹤目標相匹配。
綜上,提出新的停車檢測算法融合了深度學習車輛檢測模型YOLOv3-TunnelVehicle和Deep SORT跟蹤算法。首先,通過YOLOv3-TunnelVehicle模型進行車輛檢測,獲得車輛邊界框的位置坐標和形狀參數;其次,將車輛檢測的結果輸入Deep SORT跟蹤算法中得到當前車輛跟蹤的情況,這些情況共分為新加入跟蹤序列的車輛、正在跟蹤序列中的車輛和離開跟蹤序列的車輛;最后,對于上一步中“正在跟蹤序列中的車輛”,在Deep SORT跟蹤算法后將獲得該類車輛在當前幀中的質心坐標位置。因此采取了基于車輛在相鄰檢測幀中的質心坐標信息檢測停車方法,具體為:計算被跟蹤車輛的質心移動距離,如果該距離小于5個像素則判定該車輛區域為疑似停車的區域;之后對于被判定為疑似停車的車輛進行“更嚴格”的判斷,即當車輛的質心移動距離小于2個像素時,判定該車輛區域為確認停車的區域。
值得注意的是,上文中所提到的判定疑似停車的閾值“5”和判定確認停車的閾值“2”是在實際高速公路隧道視頻的實驗中獲得的經驗值。在此經驗值的基礎上,如果將第二個閾值設置得過于精確,那么本應該被判為確認停車的車輛,則有可能被漏檢。如果第一個閾值設置得不夠精確,則會造成較多未停車輛被判定為疑似停車,對第二次判別進行干擾,增高誤檢率,為了更加直觀地說明此情況,增加以雙重閾值設置為“10”和“2”的實驗,將此實驗結果與雙重閾值為“5”和“2”的結果進行對比。
在本停車檢測實驗中,改進的YOLOv3車輛檢測模型是基于Darknet訓練得到的,但是Darknet對于停車檢測算法的實現并不便捷,因此在停車檢測的部分采用Keras框架來構建。Keras是用Python編寫的高級神經網絡API,它具有模塊化和易擴展性的優點,使得代碼緊湊,易于調試。經過模型文件的轉換,將Darknet框架下的“.weights”文件轉換為Keras框架下的“.h5”文件。
在實驗中,采用實際高速公路隧道場景下的視頻做測試,雙重閾值分別設置為上文提到的“5”和“2”,即相鄰檢測幀中的車輛質心坐標移動距離小于5個像素時,判定其疑似停車,接著當疑似停車車輛的質心移動距離小于2個像素時,判定其確定停車。圖5為本實驗結果的展示,其中箭頭所指處即為檢測到的停車。為了驗證此方法的廣泛適用性,所測試的視頻包括了高速公路隧道內各種典型的車輛:近距離大型車、一般中型車和遠距離小型車。詳細的實驗統計結果如表2所示。

圖5 基于改進YOLOv3車輛檢測的停車檢測結果示例Fig.5 Example of stopping detection results based on improved YOLOv3 vehicle identification

表2 基于改進YOLOv3車輛檢測的停車檢測詳細實驗結果Table 2 Detailed experimental results of stopping detection based on improved YOLOv3 vehicle identification
在19個高速公路隧道測試視頻的實驗中,最終獲得的正檢率為95%,誤檢率為5%,漏檢率為0。實驗結果表明基于改進YOLOv3車輛檢測的停車檢測可以較好地在高速公路隧道中完成停車檢測的任務,進一步提高停車檢測的效率,為高速公路管理系統賦予更多的智能化與高效化。對于引起誤檢的情況進行分析,發生誤檢的停車檢測如圖6所示,主要原因是:(1)該大型貨車行駛速度緩慢;(2)車身長度較長;(3)綠色的車篷布在一段時間內表現出幾乎完全相同的特征。因此,停車檢測算法出現了誤判。
在此實驗中,檢測結果的準確性也受雙重閾值設定的影響。如果第一個閾值設定不夠精確,則同一段視頻中判定為疑似停車的數目會有所增加,對第二次判定進行干擾,從而增大了誤檢率,為了更詳細地說明此情況,將車輛檢測模型的雙重閾值設為“10”和“2”進行實驗,詳細的實驗結果統計如表3所示。

圖6 發生誤檢的停車檢測Fig.6 Vehicle stopping with false detection

表3 基于改進YOLOv3車輛檢測的停車檢測詳細實驗結果(雙重閾值設定為“10”和“2”)Table 3 Detailed experimental results of stopping detection based on improved YOLOv3 vehicle identification(1st and 2nd thresholds are“10”and“2”separately)
由表3可知,當雙重閾值分別設定為“10”和“2”時,在19個高速公路隧道測試視頻的實驗中,正檢率為95%,誤檢率為37%,漏檢率為0。此結果相較于雙重閾值為“5”和“2”的實驗結果,雖然正檢率相同,漏檢率為0,但是誤檢率由5%增加為37%,相對地降低了停車檢測的準確率,還會使執行檢測任務的效率降低。通過對比可以得出,當雙重閾值設定為“5”和“2”時,基于改進YOLOv3的車輛檢測模型可以較準確、較高效地完成高速公路隧道內停車檢測的任務。
本文提出了一種基于改進YOLOv3車輛檢測模型的停車檢測方法。對于YOLOv3車輛檢測的改進,在VOC-vehicle數據集和Tunnel-vehicle數據集上的車輛檢測mAP分別提升了1.06個百分點和0.65個百分點。最終,訓練得到了mAP為98.19%的高速公路隧道車輛檢測模型。獲得車輛檢測模型后,結合Deep SORT進行車輛跟蹤并通過計算車輛速度來判斷停車。在高速公路隧道停車測試視頻上的正檢率達到95%。本文取得了一定成果,但仍然存在值得進一步研究的地方,例如:可繼續擴充訓練數據,提高模型的魯棒性,使其適用于更加復雜多變的場景[19];對于視頻畫面中由于煙霧導致的模糊問題,可采用暗通道去霧算法[20]進行修正或研究其他方法。