王新雨 汪馳升,3* 舒齊奇 柯君卓 高 青
(1.深圳大學(xué)城市空間信息工程廣東省重點(diǎn)實(shí)驗(yàn)室,廣東 深圳 518060;2.深圳大學(xué)海岸帶地理環(huán)境監(jiān)測自然資源部重點(diǎn)實(shí)驗(yàn)室,廣東 深圳 518060;3.國土資源部城市土地資源監(jiān)測與仿真重點(diǎn)實(shí)驗(yàn)室,廣東 深圳 518000;4.深圳市南山區(qū)教育科學(xué)研究中心,廣東 深圳 518000)
隨著社會(huì)的發(fā)展,行車記錄儀已經(jīng)得到了廣泛的應(yīng)用。在交通管理規(guī)劃方面,行車記錄儀也起到了重要的作用,可以記錄駕駛?cè)^程的視頻圖像和聲音,實(shí)現(xiàn)了車輛駕駛的實(shí)時(shí)視頻監(jiān)控、交通信息的采集和監(jiān)控錄像的回放,為交通安全和交通事故來提供證據(jù),提高了規(guī)范的駕駛行為和行車安全,在這一方面已經(jīng)有很多應(yīng)用的說明[1-2]。自從2012年,AlexNet模型以絕對(duì)優(yōu)勢在Imagenet競賽中取得勝利,迅速蓋過了傳統(tǒng)目標(biāo)檢測算法DPM (Deformable Part Model) 的風(fēng)頭,計(jì)算機(jī)視覺開始轉(zhuǎn)向深度學(xué)習(xí),此后深度學(xué)習(xí)在物體識(shí)別、檢測等方面取得了重大的突破性進(jìn)展和很多的成果,就備受學(xué)者們的重視,已經(jīng)成為人工智能重點(diǎn)研究之一,各大科技公司也都投身于深度學(xué)習(xí)領(lǐng)域進(jìn)行研發(fā)。
深度學(xué)習(xí)是一種利用深度神經(jīng)網(wǎng)絡(luò)框架的機(jī)器學(xué)習(xí)技術(shù),其中卷積神經(jīng)網(wǎng)絡(luò) (ConvNet) 是專門做圖像識(shí)別的深度神經(jīng)網(wǎng)絡(luò),它是模仿大腦視覺皮質(zhì)進(jìn)行圖像處理和識(shí)別圖像的深度網(wǎng)絡(luò),將人工設(shè)定特征提取轉(zhuǎn)變?yōu)樽詣?dòng)生成特征提取是卷積神經(jīng)網(wǎng)絡(luò)的主要優(yōu)點(diǎn),還具有局部連接和權(quán)值共享的特點(diǎn),在目標(biāo)檢測方面已經(jīng)遠(yuǎn)遠(yuǎn)超過傳統(tǒng)的檢測算法[3]。還有一個(gè)很重要的硬件因素就是GPU提供了強(qiáng)大的并行運(yùn)算架構(gòu),訓(xùn)練速度比CPU快數(shù)10倍[4]。基于以上思想,提出一種利用行車記錄儀記錄的運(yùn)動(dòng)車輛的周圍環(huán)境數(shù)據(jù)信息結(jié)合深度學(xué)習(xí)的目標(biāo)檢測功能對(duì)道路的車輛進(jìn)行檢測識(shí)別,然后得出行車過程中的道路上車的位置和數(shù)量??偠灾?,即將深度學(xué)習(xí)的目標(biāo)檢測模型引入到行車記錄儀的監(jiān)控視頻中,給智能交通監(jiān)控、道路設(shè)計(jì)、交通管制和行車安全提供信息。
目標(biāo)檢測是指在特定環(huán)境下找出目標(biāo)進(jìn)行檢測(where) 和識(shí)別 (what),基于深度學(xué)習(xí)的目標(biāo)檢測發(fā)展起來后,其實(shí)效果也一直難以突破,一直到R-CNN (Regionbased Convolutional Neural Networks) 出現(xiàn)后,它是第一個(gè)真正可以工業(yè)級(jí)應(yīng)用的解決方案,后來經(jīng)過不斷地改進(jìn)卷積模型,讓大量的卷積層實(shí)現(xiàn)共享以提升效率,就出現(xiàn)了一系列的基于區(qū)域建議的方法:R-CNN 、SPP-net、Fast R-CNN、Ross B.Girshick[5]在2016年提出了新的Faster R-CNN,成為經(jīng)典的模型。基于區(qū)域建議的目標(biāo)檢測算法發(fā)展過程如下:
R-CNN結(jié)構(gòu)框架如圖1所示[6],R-CNN的區(qū)域建議采用的是選擇性搜索 (Selection Search) 代替?zhèn)鹘y(tǒng)的滑動(dòng)窗口檢測方法,從原始圖片提取2 000個(gè)左右的候選框,再把所有候選框縮放到固定大小進(jìn)行區(qū)域大小歸一化、用卷積神經(jīng)網(wǎng)絡(luò)對(duì)這些候選框進(jìn)行提取特征,將提取到的特征送入到SVM分類器中進(jìn)行識(shí)別,再用線性回歸來修正邊框位置與大小[3]。但存在很多缺點(diǎn):重復(fù)計(jì)算導(dǎo)致計(jì)算量很大,分類回歸的SVM模型是線性模型無法將梯度向后傳播給卷積特征提取層、訓(xùn)練分為多步,訓(xùn)練的空間和時(shí)間代價(jià)都很高。
圖1 R-CNN框架
Fast R-CNN主要是解決了2 000候選框帶來的重復(fù)計(jì)算問題,卷積變成對(duì)整張的圖片進(jìn)行,減少了很多的重復(fù)計(jì)算,其思想為使用一個(gè)簡化的SPP層,訓(xùn)練和測試不再分為多步,不再需要額外的硬盤來存儲(chǔ)中間層的特征,梯度能夠通過RoI池化層直接傳播;此外,分類和回歸用Multi-task的方式一起進(jìn)行,使用SVD分解全連接層的參數(shù)矩陣,壓縮為兩個(gè)規(guī)模小很多的全連接層[5]。Fast R-CNN比R-CNN的訓(xùn)練速度快8.8倍,測試速度快213倍,比SPP-net訓(xùn)練速度快2.6倍,測試速度快10倍左右。但是Fast R-CNN使用選擇性搜索來進(jìn)行區(qū)域提名,速度依然不夠快[3]。
Faster R-CNN算法主要由兩大部分組成:RPN候選框提取部分和Fast R-CNN檢測部分[7]。在結(jié)構(gòu)上已經(jīng)將特征抽取、區(qū)域建議、區(qū)域判定和回歸、分類都整合在了一個(gè)網(wǎng)絡(luò)中,使得網(wǎng)絡(luò)的綜合性有了較大的提高[8-10]。它的主要思想為拋棄了選擇性搜索,引入了RPN (Region Proposal Networks),從而讓特征區(qū)域建議圖、分類、回歸一起共享卷積特征,在檢測速度方面尤為明顯[7]。RPN的網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示[7],以一張任意大小的圖片為輸入,輸出一批矩形區(qū)域提名,使用的是滑動(dòng)窗口加anchor的結(jié)合,每個(gè)區(qū)域?qū)?yīng)一個(gè)目標(biāo)分?jǐn)?shù)和位置信息,且RPN網(wǎng)絡(luò)能和整個(gè)Fast R-CNN檢測網(wǎng)絡(luò)共享卷積層[7],使得區(qū)域建議階段在GPU上完成,且?guī)缀醪换ㄙM(fèi)時(shí),所以,F(xiàn)aster R-CNN 比Fast R-CNN 在速度和精確性上有明顯的提高,盡管在后來的發(fā)展中,SSD和YOLO這些模型能夠在檢測速度得到提升,但是它們的精度卻沒有能超越Faster R-CNN的,例如:Tensorflow 應(yīng)用Inception ResNet打造的Faster R-CNN,是速度最慢,但卻最精準(zhǔn)的模型[9-10]。
圖2 RPN結(jié)構(gòu)
整個(gè)Faster R-CNN網(wǎng)絡(luò)的流程圖如圖3所示,分為4部分內(nèi)容。
圖3 Faster R-CNN流程圖
(1) 先輸入一副任意大小的圖像,使用一系列的conv+relu+pooling層提取特征圖,被用于的RPN層的輸入和繼續(xù)向前傳播到特有卷積層得到高維特征圖用于全連接層。
(2) RPN網(wǎng)絡(luò)用第一步得到的特征圖進(jìn)行兩部分的計(jì)算,分別為區(qū)域建議與區(qū)域得分,最后得到的區(qū)域建議用于下一步。
(3) ROI池化層是通過輸入的高維特征圖和區(qū)域建議提取一系列的特征區(qū)域建議圖 (proposal feature maps) 送入后續(xù)的全鏈接層進(jìn)行目標(biāo)識(shí)別。
(4) 最后是利用全連接層與分類層計(jì)算這一系列的特征區(qū)域建議圖通每個(gè)具體屬于那個(gè)類別,同時(shí)再次利用邊框回歸獲得每個(gè)目標(biāo)的位置偏移量,從而獲得目標(biāo)檢測框的精確位置。
最后,再由不同目標(biāo)檢測方法的指標(biāo)得出[3](見表1):在不在乎時(shí)間的前提下Faster R-CNN是準(zhǔn)確率最高的,所以,本文使用Faster R-CNN算法。
我的第五次辭工申請(qǐng)終于獲準(zhǔn)。離開大發(fā)廠時(shí),我久久回眸。三步一嘆息,五步一回首,牽強(qiáng)的笑容牽動(dòng)了幾滴清淚,在風(fēng)中飄然落下。
表1 不同檢測方法的指標(biāo)對(duì)比
本文使用matlab的深度學(xué)習(xí)工具Faster R-CNN實(shí)現(xiàn)進(jìn)行車輛檢測,實(shí)驗(yàn)環(huán)境:MATLAB R2018a (自帶深度學(xué)習(xí)工具);CPU:i7-8750HQ;顯卡:GTX1060;內(nèi)存容量:8 G。
本文采集的數(shù)據(jù)是在白天的情況下,從行車記錄儀導(dǎo)出的100多個(gè)不同道路的行車視頻 (mp4) 文件,然后把視頻轉(zhuǎn)化為一幀幀的圖片 (jpg),每隔100幀提取一張的圖片,共1 500張,都是駕駛在城市道路,其中,小汽車數(shù)目居多,800張為訓(xùn)練的圖片,100張為測試的圖片,600張為驗(yàn)證圖片,用于標(biāo)記的圖像樣本示例,如圖4所示。
使用了matlab自帶的trainingImageLabeler.m這個(gè)M文件來對(duì)圖片進(jìn)行標(biāo)注,圖片標(biāo)記界面如圖5所示,全部標(biāo)注好后導(dǎo)出一個(gè)table的data.mat文件,得到標(biāo)注信息,如圖6所示,一共包含1 400張圖片的車輛數(shù)據(jù)集,每個(gè)圖片有1個(gè)或多個(gè)標(biāo)記的車輛實(shí)例。
圖5 圖片標(biāo)記界面
圖6 圖片標(biāo)注信息
由于CNN檢測模型的訓(xùn)練需要大量的標(biāo)記好的圖片且訓(xùn)練的時(shí)間太長,所以,本次實(shí)驗(yàn)采用遷移學(xué)習(xí),把訓(xùn)練好的模型進(jìn)行微調(diào)來進(jìn)行目標(biāo)檢測,因?yàn)槭菣z測車輛,所以只有有車和無車兩個(gè)類別,變成二分類問題[11],將全連接層改為2,然后再接上softmax和classification層,開始想使用ResNet50模型,但是在嘗試訓(xùn)練過程中發(fā)現(xiàn)trainFasterRCNNObjectDetector這個(gè)函數(shù)不支持 DAG networks,像ResNet-50、 Inception-v3和 GoogLeNet這些模型就都不能用了。其實(shí)各網(wǎng)絡(luò)就是在卷積層提取特征時(shí)有細(xì)微差異,對(duì)于后面的RPN層、池化層、全連接層的分類和目標(biāo)定位基本相同。后來選擇使用VGG16Net這個(gè)模型進(jìn)行遷移學(xué)習(xí),VGGNet網(wǎng)絡(luò)是從ImageNet 數(shù)據(jù)庫上的100萬多張圖像進(jìn)行訓(xùn)練的,可將圖像分類為1 000個(gè)對(duì)象類別,如鍵盤、鼠標(biāo)、鉛筆和許多動(dòng)物,因此,網(wǎng)絡(luò)為各種圖像學(xué)習(xí)了豐富的功能制圖表達(dá),網(wǎng)絡(luò)共有41層,有16層可學(xué)權(quán)重,13層卷積層和3層完全連接層。在訓(xùn)練過程中如果要使用GPU訓(xùn)練需要 Parallel Computing Toolbox這個(gè)工具箱,在附加功能資源那里下載即可,還需要用到Computer Vision System Toolbox、Image Processing Toolbox和Deep Learning Toolbox這幾個(gè)工具箱。在訓(xùn)練參數(shù)中:選擇了一個(gè)最小的16像素×16像素的窗口,網(wǎng)絡(luò)誤差算法使用的是動(dòng)量隨機(jī)梯度下降算法,學(xué)習(xí)率設(shè)置的0.001,每次輸入的最小批次的大小是32,迭代次數(shù)20次,其余選項(xiàng)為默認(rèn)[12-13]。訓(xùn)練用trainFasterRCNNObjectDetector
這個(gè)函數(shù)訓(xùn)練目標(biāo)檢測器,在訓(xùn)練過程中,從訓(xùn)練圖像中處理多個(gè)圖像區(qū)域,每個(gè)圖像的圖像區(qū)域數(shù)由NumRegionsTo Sample控制,PositiveOverlapRange和NegativeOverlapRange名稱-值用于控制訓(xùn)練的圖像區(qū)域,正面訓(xùn)練樣品是那些與地面真相箱子重疊由0.6到1.0,由聯(lián)合度量的邊界框相交測量,負(fù)訓(xùn)練樣本是重疊的0到0.3。
Faster RCNN訓(xùn)練分為以下四個(gè)步驟:
第一步是單獨(dú)訓(xùn)練RPN網(wǎng)絡(luò),用預(yù)載入的模型來初始化。
用第一步的RPN 網(wǎng)絡(luò)提供的區(qū)域建議來單獨(dú)訓(xùn)練Fast R-CNN目標(biāo)檢測網(wǎng)絡(luò)。
用第二步訓(xùn)練好的Fast R-CNN網(wǎng)絡(luò)的權(quán)重來重新訓(xùn)練第一步的RPN模型,繼續(xù)訓(xùn)練RPN。
用第三步訓(xùn)練好的RPN網(wǎng)絡(luò)輸出的區(qū)域建議圖作為輸入,再次訓(xùn)練Fast R-CNN,微調(diào)Fast R-CNN中的參數(shù),得到目標(biāo)檢測模型。至此網(wǎng)絡(luò)訓(xùn)練結(jié)束。
車輛檢測模型訓(xùn)練好以后進(jìn)行保存,把100張的測試數(shù)據(jù)集循環(huán)到檢測模型里進(jìn)行檢測,從檢測的圖片可以得到前方車輛的個(gè)數(shù)、位置 (bboxes) 和得分 (scores),車輛檢測結(jié)果示例如圖7所示,只顯示檢測出的車輛得分 (scores) 0.9以上的圖片。
圖7 車輛檢測情況示例
matlab的計(jì)算機(jī)視覺工具箱提供了目標(biāo)檢測器的評(píng)估功能,在這里用平均精度指標(biāo) (evaluate detection precision),Precision-recall曲線來驗(yàn)證模型的準(zhǔn)確率,評(píng)估結(jié)果如圖8所示,從評(píng)估結(jié)果來看,模型的平均精度達(dá)到0.92,滿足檢測的需求。
圖8 模型的評(píng)估結(jié)果
本次實(shí)驗(yàn)結(jié)果的分析是在行車視頻中依次轉(zhuǎn)化的一幀幀圖片上面進(jìn)行的,通過檢測出的車輛可以得出標(biāo)記框(bboxes) 的信息,bboxes是一個(gè)N×4矩陣,用于表示對(duì)象的邊界框,前兩列x、y代表了邊界框的位置,后兩列為w、h代表邊界框的寬和高,w、h相乘得出標(biāo)記框的像素面積,除了面積通過從bbxoes中的參數(shù)n可以得到檢測到的標(biāo)記框的個(gè)數(shù)既車輛個(gè)數(shù),圖片的視野像素面積為圖片分辨率1 287×724=931 788,通過以上信息,本文進(jìn)行以下分析。
在道路上交通量較小車速較快時(shí),車頭間距較大,交通密度小,駕駛員可以自由選擇行駛車速,行車比較舒適;交通量較大車速較慢時(shí),車頭間距縮小,密度加大,車輛行駛時(shí)相互制約,產(chǎn)生擁擠情況,行車過程中不再舒適。根據(jù)行車的舒適性這個(gè)概念,本文對(duì)于多個(gè)不同路段的視頻進(jìn)行了檢測,計(jì)算出每幀圖片上檢測到所有車輛標(biāo)記框的像素面積占視野面積的比例和車輛個(gè)數(shù),計(jì)算得出:當(dāng)每幀圖片的面積比超過0.4這個(gè)臨界值時(shí),車輛個(gè)數(shù)較多,密度較大,行車不再舒適。然后用百度地圖測出每個(gè)行車視頻中起點(diǎn)和終點(diǎn)的距離,得到的距離除以行車記錄儀記錄的時(shí)間求出行車速度,用行車速度進(jìn)行驗(yàn)證,判斷是否合理。以其中記錄深圳市的香梅路、南海大道、新洲路、安托山一路、僑香路、深南大道六條道路的行車視頻為例,每個(gè)行車視頻記錄時(shí)間為65 s,統(tǒng)計(jì)過程如表2所示。根據(jù)表2的驗(yàn)證:面積比保持在0.4以下,車速較快,行車比較舒適。所以這個(gè)指標(biāo)合理。我們可以根據(jù)這個(gè)指標(biāo)測出每個(gè)路段的行車是否舒適,然后為道路的交通規(guī)劃和設(shè)計(jì)提供參考。
表2 面積比與行車速度的對(duì)比
目前常用的車間距離測量方法主要包括超聲波、雷達(dá)、激光等,這些測量手段基本都是成本比較高的,如果行車記錄儀可以測量輛車之間的距離,那么成本就會(huì)降低很多,也會(huì)非常的便捷[14]。 在道路行駛過程中為了保證車輛間的安全距離,駕駛員在駕駛過程中需要時(shí)刻注意周圍的車輛運(yùn)動(dòng)情況,以免發(fā)生追尾碰撞的問題。據(jù)網(wǎng)上調(diào)查,車輛追尾事故中80%是因?yàn)樾旭倳r(shí)跟車太近引發(fā)的,據(jù)交警介紹,很多追尾事故是因?yàn)檐囁龠^快,未與前車保持安全距離引起的[15]。本文中每幀圖片上面標(biāo)記框的面積大小代表了道路上的車輛和駕駛車輛之間的距離,距離近的標(biāo)記框的像素面積較大,距離遠(yuǎn)的標(biāo)記框的像素面積較小,所以本文提出根據(jù)標(biāo)記框的面積大小計(jì)算出道路上各個(gè)目標(biāo)車輛與駕駛車輛之間的距離,顯示在行車記錄儀上,距離過近時(shí)給出警報(bào),也可以給駕駛員的行車安全距離提供參考。由于本文是采集了前方車輛的數(shù)據(jù)和小汽車這類車型,所以只計(jì)算前車車距并且不適用于公交車和卡車等車型,測量方法借鑒[16]中的車距模型并修改得出:當(dāng)相機(jī)焦距固定時(shí),兩車之間的實(shí)際距離的平方與車輛在圖片中的標(biāo)記框像素面積的乘積是個(gè)定值,如公式1所示。實(shí)驗(yàn)先采集大量的數(shù)據(jù),實(shí)際測量兩車之間的距離和對(duì)應(yīng)的標(biāo)記框的像素面積的大小,代入公式1計(jì)算,然后統(tǒng)計(jì)得出大概的定值為18左右,再根據(jù)這個(gè)定值和標(biāo)記框的像素面積求出前方車距。求出車間距離后,再用實(shí)際的距離做驗(yàn)證,如表3所示,可以看出檢測距離和實(shí)際距離雖存在誤差,但是大概相符。車間距離和像素面積擬合的曲線如圖9所示,隨著車間距離的增加,檢測到的車輛標(biāo)記框的像素面積在減小。所以,根據(jù)像素面積大小來大概判斷車間距離時(shí)可行的,可以為駕駛員提供參考。
式中:L—兩車的實(shí)際距離 (m) ;
S—標(biāo)記框的像素面積 (10-5) ;
F—定值。
表3 實(shí)際距離與檢測距離的對(duì)比
圖9 像素面積大小和車間距離的關(guān)系
本次實(shí)驗(yàn)是將深度學(xué)習(xí)的目標(biāo)檢測功能引入到了行車記錄儀中,側(cè)重點(diǎn)是深度學(xué)習(xí)的應(yīng)用上面,所以沒有對(duì)已有的算法進(jìn)行改進(jìn)和各類已有框架精度的比較。模型訓(xùn)練算法為主要分析圖像區(qū)域的Faster R-CNN算法,標(biāo)記的數(shù)據(jù)均來自白天,標(biāo)記的車型比較全面,還需考慮夜晚的情況。實(shí)驗(yàn)得出模型的檢測準(zhǔn)確率為0.92,說明準(zhǔn)確性較高,但是過小的目標(biāo)車輛檢測不到,同時(shí)存在由于處理的數(shù)據(jù)量較多而不能實(shí)現(xiàn)實(shí)時(shí)檢測的要求,所以檢測算法有待優(yōu)化,接下來的工作打算用海量的無標(biāo)注的行車視頻數(shù)據(jù)來訓(xùn)練,從而達(dá)到實(shí)時(shí)檢測的要求。檢測出目標(biāo)車輛后,根據(jù)檢測到的標(biāo)記框獲得前方車輛的信息,提出行車舒適性和駕駛車與前方車輛的車距,本次實(shí)驗(yàn)由于車型、角度、道路場景和計(jì)算方法的欠缺[16],所以提供的指標(biāo)、參數(shù)存在一定的誤差,只供大概的參考,還需進(jìn)行更詳細(xì)的工作,但是希望通過行車記錄儀得出的這些信息能給智能交通監(jiān)控、交通管理規(guī)劃設(shè)計(jì)和輔助駕駛提供幫助。