王正旭,王秋力
(1.廣州市工貿技師學院新能源應用產業系,廣州 510425;2.西安電子科技大學電子工程學院,西安 710071)
近些年,隨著時代的進步和科技的發展,人們的消費水平越來越高,汽車已經是人們生活必不可少的代步工具。據中國新聞網已發布的消息,截止2021年底,我國汽車的保有量達到了3.02億輛[1],全國新注冊登記機動車就達3 674萬輛。與2016年相比增長了近55.7%。車輛增多,必然帶來交通擁堵,交通事故頻發,特別是汽車追尾事故,給人民的生命財產造成重大損失。
根據調查,超過60%的車禍是因為車輛相撞造成的[2]。所以,從行車安全性的觀點出發,汽車的防撞和警告就變得非常的關鍵。一份調查顯示,在車禍之前提前預警司機,90%的車禍都可以得到預防[3]。目前的汽車探測技術主要是利用毫米波雷達、超聲波雷達、激光雷達、紅外線探測等多種探測手段來對汽車進行探測[4-6]。然而,由于這種新型的感應器具有造價昂貴、維護難度大等問題,因此許多學者都采用了照相機進行相關的實驗。相機比其他的傳感器成本低,實用性強,抗干擾能力強,信息量大,通過攝像頭的視角,可以讓研究者們對當前的情況做出更準確地分析,從而達到最好的效果。通過相機攝像頭捕捉行駛中前車的行駛狀態,及時向駕駛員發出預警信號,實現司機的安全駕駛。
總之,與雷達等相比較,采用具有更低廉的費用的照相機傳感器,用作車輛的駕駛狀況辨識和早期預警的圖象資料收集器,并利用建立的車輛的駕駛狀況辨識和警報模式來探測和辨識影像資料,能夠幫助司機實現車輛的安全行駛,實現汽車正面碰撞預防。
對于車輛尾部,采用YOLOv3算法[7-10]訓練道路實拍樣本,并據此生成車輛尾部的檢測模型。
針對車輛尾部檢測模型,使用YOLOv3代碼[11]來對實拍道路的樣本集進行訓練,代碼細節已在Github上開源,從而獲得車輛尾部檢測模型。
(1)準備訓練集
要生成車輛尾部檢測模型,訓練集需涵蓋車輛尾部,通過道路實拍得到636張車尾樣本作為訓練集,使用標注工具labellmg[12]對目標進行框定標注,框選出車尾的位置,如圖1所示。標注為后續檢測和模型生成提供了預處理便利。

圖1 車輛尾部標注示例
(2)模型
在開源的YOLOv3數據集代碼以及原作者訓練好的權重基礎上進行網絡調參,以得到更適應車尾模型的訓練網絡。
loss曲線根據訓練日志數據繪制得到。損失值越小,說明模型越好。損失曲線圖如圖2所示,可以反映許多信息,從圖中可以判定停止訓練的時機,訓練迭代到3 700次后,loss[13]在0.04左右達到穩定,記錄該權重。

圖2 loss曲線
IOU(Intersection-over-Union)[14]是數據集中對目標準確度檢測的一個判準,圖3所示曲線圖展示了樣本中被識別為車尾的目標的概率變換,圖示值越接近1表示效果越好。由圖可知訓練權重過小IOU值在0.6左右,不符合訓練標準。而2 000次左右訓練權重對應的IOU值變化不夠穩定,模型不具有魯棒性。綜合上述情況,最終擬定的訓練權重取到3 700次。

圖3 IOU曲線
(3)模型評估
對于生成的模型,通過混淆矩陣來分析評價,具體細節如表1所示[15-17]。TP表示模型預測為正的和實際為正的樣本數量;TN表示模型預測為負和實際為負的樣本數量;FP表示模型預測為正而實際為負的樣本數量;FN表示模型預測為負而實際為正的樣本數量。

表1 混淆矩陣
本文用查準率(精度),查全率(漏檢率),F1分數進行模型的評估,查準率和查全率是一對對應指標,當查準率高的時候,查全率一般很低;查全率高時,查準率一般很低。
其中查準率P是模型預測的正樣本與模型預測的正樣本的比值:

查全率R是指模型預測的正樣本中實際也為正樣本的比率:

引入查準率和查全率的調和均值F1進一步輔助模型評價:

使用該模型對未受訓練的正負各100張測試集進行檢測。結果查準率為P=100%,查全率為R=99%。則模型準確率為F1=99.5%。
(4)模型驗證
在對模型評估后,進行道路實測實驗,在車輛的前擋風玻璃上安裝USB攝像頭并將其與筆記本電腦連接,運行檢測模型,以實時檢測道路車輛。如圖4所示,從檢測效果圖可以看出,即使在光線不充足的情況下,該車輛尾部檢測模型仍能檢測出車尾的輪廓,且有很高的準確率,驗證該模型是可行的。

圖4 YOLOv3算法的車輛尾部檢測模型在道路的檢測效果
要想識別車輛的行駛狀態,主要的方法是識別車輛尾燈的變化來判斷車輛的行駛狀態。在車輛狀態識別的研究中,假設駕駛員在駕駛車輛時遵守交通法規,并在轉彎時使用轉向燈。根據尾燈的變化,可以在車輛準備轉彎或正在制動時,模型可以立即捕獲并預警。即當駕駛員注意力不集中時,通過模型的預警就能起到輔助安全駕駛的作用。
定位車尾燈時,首先檢測識別車輛尾部狀態,然后再對車尾識別框中的車尾燈進行定位。
定位的方法:通過劃分燈具面積鎖定車輛尾燈燈具的大致位置。由于大多數車型的尾燈區在車輛后部垂直方向的中間位置,也有部分車型在中間偏上位置,故設置燈定位框為長0.4,寬0.4,其中X、Y為車輛后部檢測模型檢測到車輛后部后的識別框尺寸。根據行駛中的車輛尾部檢測圖像中尾框尺寸的變化,尾燈定位框也會隨著行駛中的車輛發生變化,以保證定位的瞬間準確性,如圖5所示。

圖5 車輛尾燈區域劃分
如圖6所示,該模型檢測到行駛中的車輛尾部后,將該車輛尾部框定,然后根據汽車尾部被車燈分割的面積,自動提取出車燈的大概位置。通過這種方法即可以把車燈的位置鎖定。

圖6 車燈定位示例
對于RGB彩色通道圖像,由于其他顏色通道中紅色圖像的像素比小,紅色通道中紅色圖像的像素比大,而且尾燈(示寬燈、剎車燈)一般均為紅色,因此提取了圖像中車輛尾燈所在區域的紅色通道信息,減少了非車燈處像素影響車燈狀態變化的判斷。
如圖7所示,在紅色通道下二值化后的兩車燈位置為白色,與車身和背景的二值化效果對比明顯,而綠色通道和藍色通道的車燈位置沒有明顯白色,這說明紅色通道對車燈的處理效果優于其他兩個通道,可以利用紅色通道處理后的圖像進行車燈定位。也即在車燈定位框中,紅色通道下二值化后的白色像素點數變化更能反映車燈狀態的變化情況。

圖7 車燈區域圖像在不同RGB顏色通道下的二值化效果
事實上,理想狀態是當前照燈關閉時,該區域為黑色,而當車燈打開時,白色像素出現。而輕微反光帶來的干擾對車燈狀態的判斷沒有太大影響,因為在實際檢測時,攝像機獲取的前后視頻幀之間主要像素變化在于車是否亮起。對車燈狀態的判斷方法如下。
右轉狀態的判別公式為:

左轉狀態的判別公式為:

制動狀態的判別公式為:式中:Qr為該幀之前右車燈二值化后像素點為白色的個數;Hr為該幀之后右車燈二值化后像素點為白色的個數;Ql為該幀之前左車燈二值化后像素點為白色的個數;Hl為該幀之后左車燈二值化后像素點為白色的個數;R為該幀前后二值化后右車燈像素點為白色的數目差的絕對值;L為該幀前后二值化后左車燈像素點為白色的數目差的絕對值;Rb為后一幀減去前一幀右車燈二值化后像素點為白色的數目差絕對值;Lb為后一幀減去前一幀左車燈二值化后像素點為白色的數目差絕對值;Dr為R與L差值;Dl為L與R差值;Db為Rb與Lb差值的絕對值。

若Dl≥20且L≥25,左燈亮右燈不亮,車向左轉;若Dr≥20且R≥25,右燈亮左燈不亮,車向右轉;若Db≤10、Rb并且Lb≥25,車子制動。
在實際檢測時,一個檢測窗口無法同時判斷車輛行駛狀態,因此需要檢測檢測窗口進行分割。
車輛在道路上行駛時,其位置的視覺狀態有3種:車輛前面、左前面和右前面。如圖8所示,將攝像頭拍攝并傳入計算機的畫面分為左、中、右3個部分。用左側畫面檢測車輛右轉情況,中間畫面檢測車輛制動情況,用右側畫面檢測車輛左轉情況。

圖8 將視頻頻幀中的圖像劃分為3種方向道路
對于道路分割,根據車輛攝像頭的安裝位置,安裝位置的不同,分割也有所不同。將相機安裝在車輛前面擋風玻璃的中間位置,并劃分3車道中間道路。如果車輛和攝像頭之間的距離太近,就不能包含整個尾部,大約5 m左右就可以包含整個尾部,大于5 m的自然也可以包含在內。在模型執行程序中,左側測量和右側劃分的測試窗口大小均為600×600,中間測試的窗口大小為600×400。
車輛狀態識別與預警模型由車輛尾部檢測模型結合車尾燈狀態識別方法以及語音報警系統所構成。下面對車輛狀態識別與預警模型進行檢測實驗。
使用大眾汽車對模型進行實況評估,將攝像頭放置于車前玻璃中部,利用USB線將電腦和攝像頭相連,使得實時路況可以在筆記本上顯示。錄制視頻路段為華南快速大道、大廣高速公路和白云大道3大路段。在錄制的視頻中,有16段視頻是車輛運行狀態發生變化,尾燈可以正常工作的。其中右前車左轉的視頻片段有4個,前車制動的視頻片段有6個,左前車右轉的視頻片段有6個。整個檢測過程如圖9所示。

圖9 前車狀態識別與預警模型檢測流程
編程進行語音預警包的設計,當檢測到前車的運動狀態后會進行前車狀態的語音播報,當前車制動時播報注意前方車輛;當前車左車燈亮起會播報注意前車左轉;當前車右車燈亮起會播報注意前車右轉。
對以上16個視頻段的檢測結果如表2所示,其中檢測結果為假即為識別失敗,檢測結果為真即為識別成功。根據檢測結果計算可得出數據,經計算,所給條件下模型的準確率為87.5%。

表2 YOLOv3算法的前車狀態識別與預警模型在16個視頻段中的檢測結果
如圖10所示為檢測效果圖示例,在檢測過程中,前方車輛在轉向或制動時,前后視頻幀之間車燈區域的白色像素點數的差值都大于25,所以能夠準確預警。實驗結果表明,提出的模型基本能對前車行駛狀態進行識別與預警。

圖10 YOLOv3算法搭建的模型檢測效果
(1)對于車輛尾部檢測模型。使用深度學習方法中的YOLOv3算法訓練道路實拍的數據集,生成了車輛尾部檢測模型,經過評估檢測得到識別準確率達到99.5%。
(2)尾燈的狀態識別。本文提出對行駛中的汽車進行尾部狀態識別的方法,基本框架是訓練好的汽車尾部檢測模型,在汽車尾部檢測模型的基礎上設計了一種大燈狀態識別方法,即在大燈所在區域進行閾值分割,判斷大燈的開滅,進而判斷汽車行駛狀態。實驗結果表明,該方法具有一定的可行性。
(3)前車行駛狀態識別預警模型。包括以下3部分:對YOLOv3算法訓練的車輛尾部檢測模型、大燈狀態識別方法和語音報警系統。并分別對構成的前車行駛狀態識別預警模型進行了實驗。實驗結果表明:模型基本可以實現前方車輛狀態識別與預警的功能,而且模型準確率可達87.5%。
(4)實驗時,出現識別失敗的主要原因是模型對車尾輪廓定位的準確率還有待提高,在后期研究中可對車尾的檢測模型進行完善。
綜上所述,提出的前車狀態識別與預警模型具有一定的意義和應用價值。