龔 靜,曹 立,亓 琳,李良榮
(貴州大學 大數(shù)據(jù)與信息工程學院,貴州 貴陽 550025)
隨著社會經(jīng)濟的發(fā)展,隧道交通智能化管理的需求越來越受重視,而隧道通行車輛信息的快速并準確獲取,是智能化管理能否實現(xiàn)的關鍵技術問題。近年來,隨著機器視覺技術的發(fā)展,其在車輛檢測方面的研究也在逐步的加深[1-3]。2012年,AlexNet網(wǎng)絡結構的提出和GPU計算能力的加強,使得基于深度學習的卷積神經(jīng)網(wǎng)絡算法結合大數(shù)據(jù)的訓練處理圖片成為可能,并在目標檢測方面得到了較好的應用。
當前大多車輛檢測算法分為3個階段:生成目標候選區(qū)域、提取檢測目標特征、檢測目標候選驗證。文獻[4]中介紹了一種典型的特征提取車輛檢測方法,Hedi Harazllah 等人首先利用滑動窗口依次遍歷待檢測圖像,提取HOG(Histogram of Oriented Gradient)和SIFT(Scale-Invariant Feature Transform)特征,利用SVM(Support Vector Machine)分類器完成候選驗證及車輛檢測;Bautista C M 等人采用卷積神經(jīng)網(wǎng)絡[5](Convolutional Neural Networks,CNN)的卷積層和池化層提取車輛特征,用全連接層進行候選驗證。但滑動窗口生成候選區(qū)域會降低時效性,為克服該缺點,研究者又提出基于感興趣區(qū)域的區(qū)域生成法:蔡英鳳等人基于CNN算法[6],在生成候選區(qū)域階段采用了基于視覺顯著性的方法,并將候選區(qū)域輸入CNN進行特征提取和候選驗證完成車輛檢測;在文獻[7]中,F(xiàn)anQ應用Faster R-CNN一步完成車輛檢測,大幅提升了車輛檢測速度。但Faster R-CNN算法檢測速度僅為5 f/s,還無法滿足隧道中高速行車信息檢測的實時性要求。
2015年,Redmon J提出了YOLO(You Only Look Once)檢測算法[8],YOLO是一種全新的端到端的檢測算法,在檢測過程中模糊了上述3個階段的區(qū)別,直接快速地完成檢測任務。YOLO能夠同時保證準確率和檢測速率,標準YOLO能夠檢測的速度為45 f/s,而Fast YOLO檢測速度則達到155 f/s。2016年,YOLO從v1版本進化到v2版本,YOLOv2在保持原有速度的優(yōu)勢之下,精度得以提升。因此,本文算法基于YOLOv2算法框架,在訓練過程中進行改進,將小批量梯度下降法和沖量[9]結合來對隧道視頻中車輛進行檢測,以提高隧道高速行車信息檢測的準確度。
由于YOLOv2算法具有較強的實時性和準確率,本文運用YOLOv2算法對視頻中的車輛進行檢測。針對視頻捕獲的圖像,只檢測車輛一類,采用Darknet-19網(wǎng)絡結構并進行調整。其中,L3和L4分別與L1和L2相似。L9~L28層與L5和L8相似,皆是交替出現(xiàn)的卷積層和池化層[10]。把1×1的卷積核置于3×3的卷積核之間,用來壓縮特征。本實驗輸入層圖片分辨率為1 024×576,輸出層為13×13×(5×1+5×5)維張量。YOLOv2網(wǎng)絡結構如圖1所示。
圖1 YOLOv2網(wǎng)絡結構圖
YOLO由卷積層、池化層和全連接層構成[11]。相對于CNN,F(xiàn)ast R-CNN,YOLO在目標定位方面速度較快,但精確度不夠,因此,YOLOv2的改進,集中于在保持分類準確率的基礎上增強定位精確度。
YOLOv2去除了全連接層,將輸入圖片劃分為S×S的網(wǎng)格,采用固定框(anchor boxes)來預測邊界框,邊界框信息包含5個數(shù)據(jù)值,分別是x,y,w,h和confidence(置信度),以及1個類別概率。其中,類別概率為當前網(wǎng)格預測得到的物體的邊界框所包含物體為車輛的概率;(x,y)是指邊界框的中心位置的坐標;(w,h)是邊界框的寬度和高度;置信度反映當前邊界框是否包含物體以及物體位置的準確性,即檢測邊界框對其檢測出物體的置信度[12],計算公式為
(1)
confidence=Pr(Object)×IOU
(2)
式中area(·)表示面積,BBgt為訓練的參考標準框(Ground Truth Box),BBdt為檢測邊界框(Detection Truth Box),Pr(Object)為邊界框包含物體的概率。若邊界框包含物體,則Pr(Object)=1;否則Pr(Object)=0;IOU(Intersection Over Union)為預測邊界框與物體真實區(qū)域的面積交并比,最大IOU值對應的物體即為當前檢測邊界框負責預測的物體。
YOLOv2采用維度聚類取代手動精選的先驗框和直接位置預測來解決anchor模型的不穩(wěn)定,使網(wǎng)絡更容易學習到準確的預測位置。為提高模型收斂速度,減少過擬合,在卷積池化之后,激活函數(shù)之前添加批量規(guī)范化[13]BN(Batch Normalization),對每個數(shù)據(jù)輸出按照均值為0、方差為1進行規(guī)范化,通過標準化輸出層,均衡輸入數(shù)據(jù)分布,以加快訓練速度,同時降低激活函數(shù)在特定輸入?yún)^(qū)間達到飽和狀態(tài)的概率,避免梯度消失,使得其適用于不同分辨率的樣本輸入,提高了算法的定位精確度。
(3)
(4)
式中,x(k)為第k維輸入,E為均值,Var為方差,(k)為歸一化比例,(k)為轉換尺度。BN也有助于規(guī)范化模型,優(yōu)勢在于可以在舍棄dropout優(yōu)化后依然不會過擬合。
YOLOv2還進行了一系列優(yōu)化:(1)縮減網(wǎng)絡,調整圖片輸入分辨率為416×416,使卷積特征圖產(chǎn)生一個中心格,借助中心格來預測物體的位置;(2)使用卷積層降采樣(層數(shù)為32),使得輸入卷積網(wǎng)絡的416×416圖片最終得到13×13的卷積特征圖(416/32=13);(3)在卷積特征圖上進行滑窗采樣,每個中心預測5種不同大小和比例的anchor boxes,最終特征圖的每個特征點和原圖的每個網(wǎng)格是一一對應的。
YOLOv2使用均方和誤差作為loss函數(shù)來優(yōu)化模型參數(shù)[14],即網(wǎng)絡輸出的S×S×(B×(5 +C))維向量與真實圖像S×S×(B×(5+C))維向量的均方和誤差,即
(5)
其中,coordError、iouError和classError分別代表預測數(shù)據(jù)與標定數(shù)據(jù)之間的坐標定位誤差、IOU誤差和分類誤差。另外在計算IOU誤差時,在一個檢測框中,圖像中存在很多不包含物體中心的網(wǎng)格,該類網(wǎng)格預測的置信度接近0,通常,該類網(wǎng)格在訓練時的梯度遠大于包含物體的網(wǎng)格,若給定相同的權重,變相放大了包含物體中心的網(wǎng)格的置信度誤差對網(wǎng)絡參數(shù)梯度的影響,所以這3類誤差對網(wǎng)絡損失的貢獻值是不同的,因此將賦予其不同的權重。綜上,YOLOv2在訓練過程中損失函數(shù)計算
(6)
在訓練過程中,采用小批量梯度下降法MSGD(Mini-batch Gradient Descent Scheme)[15]更新網(wǎng)絡模型參數(shù),減小損失函數(shù)直至收斂,并結合沖量(momentum)使訓練過程具有更好的收斂速度與收斂性。
使用開源的神經(jīng)網(wǎng)絡框架Darknet[16]在ImageNet1000類數(shù)據(jù)集上訓練10輪后,得到預訓練參數(shù)。為防止過度擬合和提高訓練速度,設置權重衰減系數(shù)為0.000 5,初始學習率為0.001,采用多分布策略,沖量常數(shù)為0.9。
使用分類網(wǎng)絡獲得的預訓練參數(shù)對網(wǎng)絡結構進行微調,即去掉分類網(wǎng)絡的最后一個全連接層,采用多尺度輸入的方法訓練檢測網(wǎng)絡,每隔10個批次(batch)便改變模型的輸入尺寸,以增強模型對不同分辨率圖像的魯棒性。網(wǎng)絡結構為32層,要求輸入圖像的分辨率為32的倍數(shù)。
給定一個視頻幀輸入圖像,首先將圖像劃分成13×13的網(wǎng)格。anchor=5;每個anchor box包含5個預測量以及1個類別概率,總共輸出13×13×(1×5+5×5)=5 070個目標窗口,根據(jù)式(2)和式(3)預測出目標和其邊框。預測目標物是車輛的條件概率為Pr(car|object),則預測物為車輛的置信度為
Conf(car)=Pr(car|object)×Pr(object)×IOU
(7)
當Conf(car)大于閾值[17]0.24,輸出檢測出車輛的邊界框,再經(jīng)過非極大抑制NMS(Non-maximum Suppression)處理去除冗余窗口,定位車輛位置。檢測示意圖如圖2所示。
圖2 車輛檢測過程示意圖
通過計算定位精度評價公式IOU可以判斷結果的類型,IOU表示了邊界框與標定過的真實數(shù)據(jù)的重疊度。當IOU≥0.5時,為真正樣本;當IOU<0.5,為假正樣本;IOU=0,為假負樣本。
精確率(Precision),它表示預測為正的樣本中有多少是真正的正樣本,計算
(8)
召回率(Recall),它表示樣本中的正樣本有多少被預測正確,計算
(9)
式中tp表示真正樣本(正樣本預測結果數(shù)),fp表示假正樣本(系統(tǒng)未識別出正樣本但正確判定為正樣本),fn表示假負樣本(將正樣本錯判斷為負樣本),n表示正樣本的實際數(shù)[18]。精確率和召回率反應了算法的優(yōu)劣程度,其值越高則算法越具有優(yōu)越性。
實驗環(huán)境:PC機為i7處理器、8 GB內存、64位操作系統(tǒng)(Windows7);GPU(GTX970)統(tǒng)一計算設備架構CUDA9.0,GPU加速庫CUDNN7.5。
本實驗數(shù)據(jù)集來自隧道內交通視頻監(jiān)控系統(tǒng)的視頻,總共截取了3 000張分辨率為1 024×576的圖片。訓練數(shù)據(jù)集包含1 500張正樣本圖片,車輛數(shù)2 841輛,分為A、B、C3類:A為車身已全部進入拍攝區(qū);B為車頭已駛過拍攝區(qū);C為只有車頭進入拍攝區(qū)。測試數(shù)據(jù)集包含正樣本圖片1 000張,車輛數(shù)1 350輛,樣本示例如圖3所示。
圖3 訓練集示例
(1)YOLOv2方法實驗結果。實驗采用本文所述YOLOv2算法分別對兩段隧道視頻中的行駛車輛進行檢測,測試結果如圖4所示。
圖4 檢測效果圖
(2)實驗數(shù)據(jù)分析。課題組分別采用文獻[6]中的CNN算法、文獻[11]中的Faster R-CNN算法和文獻[12]中的YOLO算法對圖4所用視頻進行處理,然后計算基于不同算法的精確率、召回率以及每秒識別幀數(shù)進行數(shù)據(jù)對比,如表1所示。
表1 測試實驗結果
從表1中可以看出,采用本文所述YOLOv2算法的精確率、召回率和每秒識別幀數(shù)較YOLOv1有所提高,且每秒識別幀數(shù)遠大于CNN、Faster R-CNN,滿足基于視頻的車輛目標檢測。雖然YOLOv2召回率略低于其他兩種算法,但對于背景環(huán)境簡單、目標類別較少的情況,其檢測召回率、精確率較高,檢測速度足以應對車輛目標檢測。且本文采用了多尺度輸入的方法訓練檢測網(wǎng)絡,增強了該模型檢測魯棒性。實驗中發(fā)現(xiàn)車燈亮度的變化對檢測效果有一定的影響,這是今后的研究中需要解決的問題。同時,對于遠處的車輛檢測容易出現(xiàn)漏檢,這是導致召回率較低的主要原因。
YOLOv2模型在近處對運動車輛進行檢測時,能保證較高的召回率、精確率和識別速度,滿足對道路交通檢測的準確性和實時性,且YOLOv2適應不同分辨率的輸入圖像,對車輛目標檢測有較好的魯棒性。
本文應用YOLOv2檢測算法對基于隧道視頻的車輛進行檢測,實驗結果獲得了較高的準確性和時效性,且該算法具有較好的魯棒性,基本滿足交通視頻監(jiān)控要求。該算法目前能檢測9 000多種物體類別,算法較為新穎,對今后多運動目標檢測具有較好的實用性。但是基于深度學習的算法對硬件設備的要求比較高,所以將其用于現(xiàn)實場景還需進一步研究。
[1] Saran K B,Sreelekha G.Traffic video surveillance: vehicle detection and classification[C].Pasadina:2015 International Conference on Control Communication & Computing India(ICCC),IEEE,2015.
[2] Cao Q, Liu R, Li F, et al. An automatic vehicle detection method based on traffic videos[C].Tokoyo:2010 17th IEEEE International Conference on Image Processing (ICIP),IEEE,2010.
[3] Zhang X.Research on vehicle object detection in traffic video stream[C].Beijing:2010 5thIEEE Conference on Industrial Electronics and Applications(ICIEA),IEEE, 2010.
[4] Harazllah H,Schmid C,Jurie F,et al.Classification aided two stage localization[C].Denver:Pascal Visual Object Classes Challenge Workshop,in Conjunction with ECCV,2008.
[5] Bautista C M, Dy C A, Maalac M I, et al. Convolutional neural network for vehicle detection in low resolution traffic videos[C].Houston:2016 IEEE Region 10 Symposium (TENSYM P),IEEE,2016.
[6] Huynh C K,Le T S,Hamamoto K.Convolutional neural network for motorbike detection in dense traffic[C]. Phoneix:2016 IEEE Sixth International Conference on Communications and Electronics (ICCE),IEEE,2016.
[7] Fan Q,Brown L,Smith J.A closer look at faster R-CNN for vehicle detection[C].Portland:2016 IEEE Intelligent Vehicles Symposium(IV),IEEE,2016.
[8] Redmon J,Divvala S,Girshick R,et al.You only look once: unified, real-time object detection[C].Las Vegas:Proceeding of the IEEE Conference on Computer Vision and Pattern Recogniton,IEEE,2016.
[9] Juhwan Kim,Hyeonwoo Cho.The convolution neural network based agent vehicle detection using forward-looking sonar image[C].San Diego:2016 IEEE Oceans 2016 MTS,IEEE,2016.
[10] 王麗君,于蓮芝.基于卷積神經(jīng)網(wǎng)絡的位置識別[J].電子科技,2017,30(1):104-106.
[11] Gao Yang,Guo Shouyan.Scale optimization for full-image-CNN vehicle detection[C].Guangzhou:2017 IEEE Intelligent Vehicles Symposium (IV),IEEE,2016.
[12] 高宗,李少波,陳濟楠,等.基于YOLO網(wǎng)絡的行人檢測方法[EB/OL].(2017-06-23)[2017-11-29]http://kns.cnki.net/kcms/detail/31.1289.TP.20170623.0916.002.html.
[13] 楊天祺,黃雙喜.改進卷積神經(jīng)網(wǎng)絡在分類與推薦中的實例應用[EB/OL]. (2017-04-01)[2017-11-29]http://kns.cnki.net/kcms/detail/51.1196.TP.20170401.1738.054.html.
[14] 張祎.一種啟發(fā)式線性回歸損失函數(shù)選取方法[J]. 計算機與現(xiàn)代化,2017(8): 1-4.
[15] 王宇寧,龐智恒,袁德明.基于YOLO算法的車輛實時檢測[J].武漢理工大學學報,2016, 38(10):41- 46.
[16] 魏湧明,全吉成,侯宇青陽.基于YOLO v2的無人機航拍圖像定位研究[EB/OL].(2017-06-23)[2017-11-29] http://kns.cnki.net/kcms/detail/31.1690.TN.20170623.11 24032.html.
[17] 趙勇,李懷宇. 基于改進Sobel算法的車輛檢測技術[J]. 電子科技, 2017,30(11):78-180.
[18] Ahmed E,Mohaisen A.ADAM:Automated detection and attribution of malicious webpages[C].Albuquerque:2013 IEEE conference on Communications and Network Security,IEEE,2013.