申海洋,霍魁,王德喜
(1.巢湖學(xué)院 電子工程學(xué)院,安徽 合肥 238024;2.山西大學(xué) 物理電子工程學(xué)院,山西 太原 030006;3.科大智能科技股份有限公司,安徽 合肥 230088)
在引發(fā)車輛交通事故的眾多因素中,因跟車距離過近、剎車反應(yīng)不及導(dǎo)致的追尾事故以及旁邊車道車輛并入本車行駛車道,引起的側(cè)面碰撞事故占了較大的比例[1]。因此,對上述兩個因素引起的碰撞進(jìn)行預(yù)警研究,對預(yù)防和減少事故發(fā)生具有重要的意義。
國內(nèi)外學(xué)者在車輛防碰撞預(yù)警領(lǐng)域展開了很多研究,究其方法可分為基于激光、毫米波雷達(dá)的防碰撞技術(shù)研究[2]和基于機器視覺的防碰撞算法研究[3]?;诩す?、毫米波雷達(dá)的防碰撞技術(shù)對靜態(tài)物體識別存在較大的困難,且該類技術(shù)需要相應(yīng)的物理設(shè)備支持,設(shè)備投入成本較高,設(shè)備后期的維護更新需要耗費較多的人力物力。相比而言,基于機器視覺的車輛防碰撞算法的優(yōu)點是能檢測、識別靜態(tài)障礙物,算法適應(yīng)性強且設(shè)備成本低、便于維護。因此,該類算法成為當(dāng)前研究的熱點。
袁守利和郭錚[4]研究提出根據(jù)駕齡、疲勞強度和應(yīng)變能力來計算駕駛員反應(yīng)時間構(gòu)建的車輛碰撞預(yù)警模型,其缺陷是:在其數(shù)學(xué)模型中,駕駛員反應(yīng)時間這一參數(shù),因人而異,具有一定的變化性,導(dǎo)致該算法適應(yīng)性不足。蔡創(chuàng)新等[5]提出車路視覺協(xié)同的高速公路防碰撞預(yù)警算法,將檢測出的車道線和所駕駛車輛車速作為輸入?yún)?shù)來構(gòu)建安全距離模型,以設(shè)定預(yù)警安全區(qū)域,通過前車位置和安全距離模型對碰撞預(yù)測。該算法對自身車速的測算是以標(biāo)準(zhǔn)化車道線為前提,這與現(xiàn)實路況存在一定差異,所得速度不夠準(zhǔn)確,另外算法中車道線的檢測受環(huán)境因素影響較大。Hiraoka 和Takada[6]提出利用“避撞減”參數(shù)來預(yù)測與前車的碰撞概率,該算法以前車勻速行駛作為前提,這與實際駕駛情形不符,使碰撞預(yù)測準(zhǔn)確度受限。
綜上所述,目前研究存在的問題主要集中在無法有效識別靜態(tài)物體,不同交通場景下算法適應(yīng)性不強等方面。針對上述問題,為實現(xiàn)對靜態(tài)目標(biāo)的識別,同時提高碰撞預(yù)測的準(zhǔn)確性和算法的適應(yīng)性,本文提出一種基于機器視覺和深度學(xué)習(xí)的車輛碰撞預(yù)警算法。算法的主要思想是通過前置高清攝像頭采集車輛前方路面圖像后,根據(jù)不同車速,在圖像中設(shè)置不同范圍的安全區(qū)域,再利用深度學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)CNN[7-8]對圖像中車輛目標(biāo)進(jìn)行追蹤和檢測。最后,結(jié)合安全區(qū)域和車輛檢測結(jié)果對追尾碰撞預(yù)警。算法的總體流程如圖1 所示。
圖1 碰撞預(yù)警算法總體流程圖Fig.1 Overall flow chart of collision warning algorithm
文章提出的車輛防碰撞算法創(chuàng)新點在于:
1)聯(lián)合使用基于模板的直線檢測方法和霍夫變換較好地實現(xiàn)了對車道線的檢測;
2 ) 提出基于車速的多尺度安全區(qū)域構(gòu)建,更加符合實際駕駛中不同車速對安全距離要求,適應(yīng)性強;
3) 使用深度學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)對車輛目標(biāo)進(jìn)行檢測,在滿足檢測精度的同時也提高了檢測速度,滿足預(yù)警算法實時性要求;
4) 通過檢測出的車輛目標(biāo)和安全區(qū)域的位置關(guān)系來對碰撞進(jìn)行預(yù)警,同時實現(xiàn)了追尾碰撞和側(cè)面碰撞兩種不同類型的威脅預(yù)警。
車輛發(fā)生碰撞事故的主要原因有如下兩點:其一是和前車沒有保持有效的安全距離,在駕駛員進(jìn)行制動后車輛由于慣性會繼續(xù)行駛,如果距離前車過近則會發(fā)生碰撞;其二是車輛行駛中,相鄰車道車輛突然侵入本車行駛車道從而引起側(cè)面碰撞事故。在分析上述原因后,提出構(gòu)建安全區(qū)域的方法,通過檢測是否有車輛侵入安全區(qū)域來對碰撞進(jìn)行預(yù)警。安全區(qū)域構(gòu)建算法的實現(xiàn)步驟如下:
第一步:使用基于模板的方式檢測直線段,利用形態(tài)學(xué)方法對車道線進(jìn)行校準(zhǔn)、接續(xù),最后,再使用霍夫變換檢測出車道線;
第二步:在圖像上標(biāo)定車輛前方距離,設(shè)定多個不同距離的入侵線;
第三步:通過傳感器獲取實時車速后,根據(jù)車速選擇安全區(qū)域前端入侵線;
第四步:使用檢測到的車道線和入侵線構(gòu)建梯形安全區(qū)域。
車道線的檢測是構(gòu)建安全區(qū)域的重要前提,對車道線檢測相關(guān)技術(shù)的研究,也一直是當(dāng)前研究的熱點。目前,車道線檢測算法以基于灰度特征的線段檢測居多[9]?;诨叶忍卣鞯能嚨谰€檢測算法的實現(xiàn),主要依據(jù)的是公路圖像中的車道線灰度值和路面灰度值的差異性。因此,車道線的提取,常采用對圖像進(jìn)行濾波去噪、灰度化的預(yù)處理后,再通過設(shè)定灰度閾值的方法來提取車道線。該算法在路況良好且車道線和路面灰度反差較大時,可以一定程度上提取出車道線。但是,一旦圖像中出現(xiàn)和車道線灰度接近的物體時,檢測效果就會受到嚴(yán)重干擾。基于線段檢測的車道線檢測算法常使用霍夫變換[10]及其改進(jìn)型算法來實現(xiàn),即對圖像進(jìn)行霍夫變換以檢測圖像中的線段。該類算法存在一個普遍的問題:檢測到的線段存在較多的短線干擾,難以對車道線進(jìn)行準(zhǔn)確定位。針對上述問題,本文研究提出了一種新的車道線檢測算法,算法具體實現(xiàn)流程如下:
第一步:對原始圖像設(shè)定ROI 區(qū)域,對圖像進(jìn)行剪裁以減小算法運算量;
第二步:對圖像進(jìn)行直方圖均衡化處理,提高明暗對比度;
第三步:實施基于模板的線段提取算法;
第四步:使用霍夫變換檢測圖像中的長直線作為車道線。
其算法流程如圖2 所示。
圖2 車道線檢測算法流程圖Fig.2 Flow chart of lane detection algorithm
車道線檢測算法具體實施如下:
(1) 圖像剪裁
文章中使用安裝在駕駛艙前側(cè)的高清攝像頭采集車前方圖像,所采集到的圖像中除路面信息外還包含了天空、信號燈架、綠化帶等信息,這些信息對碰撞預(yù)警而言是冗余的,因此,首先對視頻幀進(jìn)行剪裁處理以獲得感興趣區(qū)域ROI,如圖3 所示。
圖3 視頻幀ROI設(shè)定 (a)原始視頻幀 (b)感興趣區(qū)域圖像Fig.3 Setting the region of interest in the video frame.(a) Original video frame; (b) Region of interest image
圖像保留了必要的路面信息,刪除了部分無關(guān)的冗余信息。通過這樣的處理,能夠有效地減少算法的計算量,提高算法運行速度。
(2) 直方圖均衡化
在攝像頭采集到的原始視頻幀中,因電子熱運動,會不可避免地產(chǎn)生一定椒鹽噪聲,對后期圖像分析產(chǎn)生不利影響。因此,需要對圖像進(jìn)行去噪處理。在獲得視頻幀的ROI 后,對彩色圖像灰度化處理,再使用自適應(yīng)濾波器對圖像進(jìn)行濾波處理,減輕噪聲的影響。在對大量路面圖像進(jìn)行分析后發(fā)現(xiàn):我國公路以柏油馬路和水泥道路居多,彩色圖像灰度化后,車道線和路面的灰度值較為接近。尤其是當(dāng)光照較強時,會因路面反光導(dǎo)致路面灰度上升,接近車道線的灰度,導(dǎo)致圖像整體的對比度不高。因此,在進(jìn)行車道線檢測之前,需要對圖像進(jìn)行直方圖均衡化[11]處理,以提高圖像整體對比度。
直方圖均衡化以灰度變換為手段增強圖像對比度。首先,將灰度值歸一化到[0-1]的連續(xù)范圍內(nèi),用pr(r)表示圖像中的灰度級概率密度函數(shù),在離散的數(shù)字圖像中,則用pr(rj)來表示,其含義是圖像中灰度值為j的像素個數(shù)占整幅圖像全部像素總數(shù)的比例,采用累積分布函數(shù)輸出的圖像灰度級分布s進(jìn)行變換,如公式1 所示:
鑒于圖像的離散型,在本文算法中,將調(diào)整后的視頻幀的灰度級分布記為SK,其結(jié)果如公式2 所示:
其中pr(rj),j=0,1,2,…,L-1,L是視頻幀灰度級直方圖。
對視頻幀進(jìn)行直方圖均衡化處理結(jié)果如圖4 所示。
圖4 視頻幀直方圖均衡化(a)原始圖像; (b)原始圖像直方圖; (c)直方圖均衡化處理結(jié)果; (d)直方圖均衡化Fig.4 Histogram equalization of video frames(a) Original image; (b) Histogram of the original image; (c) Effect of histogram equalization; (d) Histogram equalization
原始圖像整體灰度暗淡,車道線和路面環(huán)境灰度比較接近。由原始圖像的直方圖可見,灰度主要集中在100~200 的區(qū)間范圍內(nèi),圖像整體對比度較差。經(jīng)過直方圖均衡化處理后,視頻幀的對比度得到增強,車道線灰度得到提升,路面整體灰度被降低,在圖像中車道線變得更加醒目。
(3) 基于模板的線段檢測
在完成視頻幀ROI 區(qū)域設(shè)定、直方圖均衡化后,就要對車道線進(jìn)行檢測,在圖像中車道線呈直線狀,因此本文先使用一種基于模板的線段檢測算法,對圖像中的不同方向不同長度的線段進(jìn)行檢測,以初步定位車道線位置。其算法如下。
首先,將視頻幀像素點3×3 鄰域中的全部9 個像素點同模板里相應(yīng)位置的參數(shù)進(jìn)行相乘,再對相乘的結(jié)果進(jìn)行累加,累加的結(jié)果用于更新當(dāng)前像素點的灰度值,遍歷整個視頻。
由于圖像水平方向不會存在車道線,因此算法對于水平方向的直線不予檢測,只從圖像中垂直方向、左上方、右上方對直線進(jìn)行檢測。對于上述三個方向的直線檢測,算法使用了以下3 個模板:
檢測效果如圖5 所示。在圖像中檢測出了多條直線,尤其是當(dāng)前車輛所在車道的車道線被較好地檢測出來,另外兩側(cè)車道的車道線也能被檢測出來。
圖5 基于模板的線段檢測Fig.5 Line segment detection based on template
由結(jié)果可見,圖像中水平方向的直線段并沒有被檢測和顯示,這減小了算法的運算量外,也降低了水平方向線段對車道線判斷的干擾。存在的問題是,部分較短的線段和右側(cè)綠化帶邊緣被檢測出來。最終,影響對車道線的判斷。
(4) 霍夫變換車道線檢測
通過上一步已經(jīng)完成了對圖像中直線段的檢測,并對檢測到的間斷分布、處于同一直線上的車道線進(jìn)行擬合延伸。但是由于檢測出多個直線段,因此仍無法準(zhǔn)確判定車道線。通過觀察可見,在檢測出的直線段中當(dāng)前車道的車道線,其長度較長且呈現(xiàn)出左右對稱的分布特征。因此,只要能對圖像中最長的兩條直線進(jìn)行定位即可初步確定車道線位置。本文采用霍夫變換來對長直線進(jìn)行檢測定位。
霍夫變換,由Paul Hough 于1962 年提出,該算法是數(shù)字圖像處理領(lǐng)域用于檢測幾何形狀的經(jīng)典算法。它利用圖像中點線之間的對偶性,通過Hough 變換公式,如公式3 所示,將圖像中的曲線或直線轉(zhuǎn)換為參數(shù)空間的一個點,通過檢測參數(shù)空間點的位置來確定其對應(yīng)曲線在原始圖像中的位置。
首先,對步驟(3)的輸出結(jié)果進(jìn)行霍夫變換,在變換后的矩陣中檢測出較大的5 個極值點,用以對直線段進(jìn)行定位。其次,繪制出直線,利用MATLAB 圖像工具箱的houghlines()函數(shù)獲取線段端點,標(biāo)注最長的兩條直線,實現(xiàn)了車道線的檢測,如圖6 所示。
圖6 基于霍夫變化的車道線檢測(a)霍夫變換; (b)檢測到的車道線Fig.6 Lane detection based on Hough change(a) Hough transform; (b) Detected lane line
實驗結(jié)果可見,車輛當(dāng)前所在車道的車道線被較為準(zhǔn)確地識別出來。
在完成車道線的檢測工作后,開始安全區(qū)域的構(gòu)建。本文車輛碰撞預(yù)警算法構(gòu)建的安全區(qū)域由車道線和車輛前方入侵線構(gòu)成的圖形區(qū)域組成,其中前方入侵線的設(shè)定由安全車距決定。首先,根據(jù)實際測量的距離,對不同車距的入侵線在視頻幀ROI 中進(jìn)行標(biāo)定和校準(zhǔn),如圖7 所示。
圖7 入侵線標(biāo)定模型Fig.7 Model of calibrating intrusion line
通過實際測量的距離,分別標(biāo)定10、30、50和100 m 的位置,并在相應(yīng)位置設(shè)置好入侵線,如圖中虛線所示。當(dāng)物體位于10 m 入侵線處,即線1 處,其離車頭的距離近似為10 m,同理,線2、3、4 分別對應(yīng)距離車頭30 m、50 m 和100 m。以上距離是依據(jù)我國《道路交通安全法實施條例》[12]和實際駕駛中采用的兩秒定律(two-second rule)而設(shè)定的,協(xié)助駕駛者在理想的駕駛環(huán)境中判斷避免追尾碰撞的最小安全距離。
我國《道路交通安全法實施條例》第八十條規(guī)定,機動車在高速公路上行駛,車速超過每小時100 km 時,應(yīng)當(dāng)與同車道前車保持100 m以上的距離,車速低于每小時100 km 時,與同車道前車距離可以適當(dāng)縮短,但最小距離不得少于50 m。據(jù)此,設(shè)定了100 m 和50 m 的入侵線。在城市道路行駛時,交通法規(guī)并沒有明確要求,一般來說車速達(dá)到30 km/h 時車距不低于30 m,車速在30 km/h 以下時跟車距離要保持在10 m 以上。
完成入侵線標(biāo)定和校準(zhǔn)后,結(jié)合實時檢測到的車道線以及當(dāng)前的車速來構(gòu)建安全區(qū)域。
不同的車速有不同的安全距離要求,相應(yīng)的安全區(qū)域也不同,因此車速的獲取對碰撞預(yù)警效果的好壞影響較大。在車速檢測領(lǐng)域部分研究者運用機器視覺方法結(jié)合通過檢測線的幀數(shù),采樣時間,檢測線的長度等參數(shù)來對車速進(jìn)行測算[13],該算法在攝像頭靜態(tài)狀態(tài)下,在地面預(yù)設(shè)檢測線的前提下,檢測其他車輛車速有一定的作用。但是在本車運動狀態(tài)下對本車速度的計算是待以解決的難題,目前尚未有理想的解決方案。因此,為獲取到準(zhǔn)確的車速,本文通過使用FPGA 開發(fā)板從車輛OBD[14]接口連接車輛主機,獲取車輛的實時車速。
獲得本車當(dāng)前車速后,緊接著根據(jù)不同車速區(qū)間來設(shè)定不同的安全區(qū)域。如圖8(a)所示,當(dāng)前車速25 km/h,跟車距離應(yīng)不小于10 m,結(jié)合檢測到的車道線構(gòu)建了一個安全區(qū)域。
圖8 不同車速下的安全區(qū)域設(shè)定(a)車速25 km/h的安全區(qū)域; (b)車速30 km/h的安全區(qū)域Fig.8 Safety zone setting based on different vehicle speeds(a) Safe area with speed of 25 km/h; (b) Safe area with speed of 30 km/h
在圖8(a)中,梯形區(qū)域就是當(dāng)前速度下的安全區(qū)域,左右是檢測到的車道線,前方是10 m入侵線。當(dāng)車輛侵入安全區(qū)域時,則發(fā)出碰撞預(yù)警。
當(dāng)車速提高到30 km/h 以上時相應(yīng)的安全區(qū)域就會更新,如圖8(b)所示,安全區(qū)域就會擴大,前方入侵線更新為30 m。
同樣的方法,算法自適應(yīng)地在不同車輛行駛速度下構(gòu)建對應(yīng)的安全區(qū)域以滿足不同車速下的碰撞預(yù)警的需要。
在完成車輛行駛安全區(qū)域的構(gòu)建后,為了進(jìn)行碰撞預(yù)警就要對道路上的車輛目標(biāo)進(jìn)行檢測,對車輛的位置進(jìn)行定位,判斷車輛和安全區(qū)域的位置關(guān)系以決策是否具有碰撞風(fēng)險。
如何準(zhǔn)確、快速地在復(fù)雜的交通流檢測出車輛目標(biāo)是解決問題的關(guān)鍵。目前對車輛目標(biāo)的檢測主要有如下兩個方面:其一是通過傳統(tǒng)手動提取目標(biāo)特征對目標(biāo)進(jìn)行檢測的方法。例如提取邊緣方向直方圖等特征,再遍歷整幅圖像對特征進(jìn)行匹配來檢測目標(biāo),這樣的方法計算量大,實時性不夠,對于目標(biāo)多樣性變化的檢測效果不好,魯棒性較差。其二是當(dāng)前日益成熟的基于深度學(xué)習(xí)的目標(biāo)檢測算法中,深度學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)及其改進(jìn)算法在車輛目標(biāo)檢測領(lǐng)域取得了較好的效果,成為當(dāng)前研究的熱點。
碰撞預(yù)警關(guān)乎駕駛者的生命安全,對車輛檢測準(zhǔn)確性和實時性要求極高,因此文本采取卷積神經(jīng)網(wǎng)絡(luò)CNN(Convolutional Neutral Network)網(wǎng)絡(luò)模型對車輛目標(biāo)進(jìn)行檢測以滿足檢測精度和速度的要求。
CNN 是機器學(xué)習(xí)算法中的經(jīng)典算法之一,其在視覺識別、語音識別領(lǐng)域有著廣泛的應(yīng)用。隨著深度結(jié)構(gòu)在特征提取上的研究深入化,同時,伴隨著計算機性能的不斷提升和大數(shù)據(jù)云計算技術(shù)的發(fā)展和應(yīng)用,CNN 在圖像識別、目標(biāo)追蹤領(lǐng)域取得了重大突破。
卷積神經(jīng)網(wǎng)絡(luò)的基本架構(gòu)是由對目標(biāo)進(jìn)行提取的特征提取器和對目標(biāo)進(jìn)行分類的分類器這兩個部分構(gòu)成。在特征提取器的設(shè)計中,采用了多個卷積層和池化層,對輸入目標(biāo)的特征進(jìn)行提取、處理,處理過程中不斷縮小特征圖。特征提取器后面連接由多層感知結(jié)構(gòu)的分類器,最終由特征圖構(gòu)建特征向量輸入到后層分類器。
為快速、準(zhǔn)確地檢測車輛目標(biāo),文章采用Faster R-CNN( Faster Regions with Convolutional Neural Network)對車輛目標(biāo)進(jìn)行檢測[15]。算法的核心是對CNN 卷積神經(jīng)網(wǎng)絡(luò)構(gòu)建和訓(xùn)練,完成該項工作后即可用于對車輛目標(biāo)進(jìn)行檢測。
其算法總體結(jié)構(gòu)分為卷積神經(jīng)網(wǎng)絡(luò)的構(gòu)建和訓(xùn)練以及調(diào)用CNN 檢測車輛目標(biāo)兩個部分,如圖9 所示。
圖9 車輛目標(biāo)檢測算法流程圖Fig.9 Flow chart of algorithm for vehicle target detection
2.2.1 卷積神經(jīng)網(wǎng)絡(luò)的構(gòu)建和訓(xùn)練
第一步:構(gòu)建圖像數(shù)據(jù)集。事先采集一定數(shù)量的圖像并對圖像中的車輛目標(biāo)進(jìn)行標(biāo)注,構(gòu)建圖像數(shù)據(jù)集。為了提高CNN 的魯棒性,必須獲取一定規(guī)模的訓(xùn)練數(shù)據(jù),本文在不同場景下采集了1000 幀含有車輛的圖像,除自主采集到圖像數(shù)據(jù)集外,本文還在VISDRONE 數(shù)據(jù)集[16]中選擇了1000 張含有車輛的圖像和UADETRAC[17]數(shù)據(jù)集中的1000 張圖像,一并構(gòu)成本文使用的數(shù)據(jù)集,部分?jǐn)?shù)據(jù)集圖像標(biāo)記如圖10 所示。
圖10 車輛圖像標(biāo)記Fig.10 Vehicle image marking
第二步:加載預(yù)先構(gòu)建好的圖像數(shù)據(jù)集,用于訓(xùn)練。
第三步:構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)。CNN 是車輛目標(biāo)識別的核心,其由輸入層、中間層和網(wǎng)絡(luò)層構(gòu)成。本文使用的CNN 由MATLAB 神經(jīng)網(wǎng)絡(luò)工具箱來實現(xiàn)。首先,定義網(wǎng)絡(luò)輸入層,設(shè)定CNN 的類型和維度,再對網(wǎng)絡(luò)中間層進(jìn)行定義,接著定義輸出層,最終構(gòu)建出卷積神經(jīng)網(wǎng)絡(luò)。
第四步:利用CNN 網(wǎng)絡(luò)進(jìn)行訓(xùn)練。完成CNN 網(wǎng)絡(luò)的構(gòu)建后,再對CNN 網(wǎng)絡(luò)進(jìn)行訓(xùn)練,將數(shù)據(jù)按標(biāo)號,將70%劃分用于訓(xùn)練,后30%用于測試,文章采用trainFasterRCNNObjectDetector 函數(shù)來訓(xùn)練R-CNN,對運行性能進(jìn)行了優(yōu)化,最終得到了訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò)。
2.2.2 車輛目標(biāo)的檢測
完成卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練后可用于對車輛目標(biāo)的檢測,其具體檢測過程如下:
第一步:通過攝像頭采集到車輛前方視頻幀。
第二步:設(shè)定ROI 區(qū)域,采用檢測車道線時已分割出的圖像區(qū)域作為檢測對象,減少道路兩側(cè)停車位上的車輛或其他不在道路上的車輛對檢測結(jié)果的影響。
第三步:調(diào)用訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò)對車輛目標(biāo)進(jìn)行檢測。文章對算法進(jìn)行了實測,結(jié)果如圖11 所示。在圖11(a)中,可見在本車行駛車道前方有一輛小型汽車,右方車道有一輛小型汽車,兩輛汽車都被準(zhǔn)確地檢測到,并進(jìn)行標(biāo)注。再將算法應(yīng)用到更復(fù)雜的場景中,如圖11(b),也得到了較為理想的檢測結(jié)果,除本車同向行駛的兩輛SUV 被檢測出外,左側(cè)對向車道中的四輛汽車含一輛公交車被檢測出來并分別進(jìn)行了標(biāo)注,其中最左側(cè)車輛和較遠(yuǎn)處車輛得分相對較低,但也能被識別并標(biāo)注出來。檢測結(jié)果和實際情況相符,實踐證明本文基于深度學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)的車輛目標(biāo)檢測算法在對車輛目標(biāo)的檢測上具有較高的準(zhǔn)確率。得益于數(shù)據(jù)集的獲取和CNN 模型的優(yōu)化設(shè)計,算法較好地實現(xiàn)了對車輛目標(biāo)的檢測且檢測速率達(dá)到了每秒35 幀,可滿足本文碰撞預(yù)警算法的需求。
圖11 車輛目標(biāo)檢測測試(a)簡單交通場景測試; (b)復(fù)雜交通場景測試Fig.11 Vehicle target detection test(a) Testing in simple traffic scenarios; (b) Testing in complex traffic scenarios
在完成對視頻幀中車輛目標(biāo)的檢測后,記錄下車輛的位置信息,結(jié)合當(dāng)前車速下的安全區(qū)域即可實現(xiàn)對預(yù)碰撞的預(yù)警。碰撞預(yù)警檢測采用的模型如圖12 所示。
圖12 碰撞預(yù)警檢測模型Fig.12 Detection model of collision warning
在碰撞模型中,安全區(qū)域由車道線當(dāng)前入侵線構(gòu)成。
以當(dāng)前車速為30 km/h 時碰撞預(yù)警為例,說明碰撞預(yù)警的檢測原理:當(dāng)車速30 km/h 時,入侵線距離本車30 m,由此構(gòu)建了安全區(qū)域如圖12 中梯形區(qū)域所示,通過基于深度學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)在視頻幀中先后檢測到三個汽車目標(biāo),分別記作車輛1、車輛2 和車輛3。圖中車輛1位于安全區(qū)域外,則表示本車和車輛1 暫無碰撞風(fēng)險;車輛2 侵入安全區(qū)域,這時車輛2 已經(jīng)離本車過近,在當(dāng)前車速下有追尾碰撞風(fēng)險;右側(cè)車道的車輛3 從車道線侵入安全區(qū)域,表示車輛3 和本車有側(cè)面碰撞的風(fēng)險。
通過上述方法在車輛行駛的過程中,不斷地對車道線進(jìn)行檢測,根據(jù)車速及時更新安全區(qū)域,實時追蹤視頻中的車輛目標(biāo),結(jié)合碰撞預(yù)警模型對碰撞進(jìn)行預(yù)警。
文章采用的硬件環(huán)境:Core i7-10750H @2.60 GHz 六核處理器;16 GB 內(nèi)存;Nvidia Ge-Force GTX 1650 Ti 顯卡;視頻采集設(shè)備:DJFC21030。
為了對本文車輛碰撞預(yù)警算法的有效性進(jìn)行驗證,在實際交通流中進(jìn)行多場景的測試。測試在不同車速下,不同路況下算法的有效性,驗證算法的魯棒性。
以圖13 為例,對兩個不同車速下碰撞預(yù)警算法進(jìn)行了驗證,在圖13(a)中本車車速35 km/h,距前車距離小于30 m 的安全距離,算法檢測到當(dāng)前車道前方有一輛汽車已經(jīng)侵入安全區(qū)域內(nèi),當(dāng)前有碰撞風(fēng)險,發(fā)出預(yù)警。
圖13 碰撞預(yù)警測試(a)車速35 km/h 測試結(jié)果; (b)車速15 km/h 測試結(jié)果Fig.13 Test of vehicle collision warning(a) Test results at 35 km/h; (b) Test results at 15 km/h
圖13(b)中,車輛需要左轉(zhuǎn),因需要等待左轉(zhuǎn)信號減速到15 km/h,此時入侵線設(shè)定為10 m,檢測到前方車輛位于當(dāng)前的安全區(qū)域外,也無其他車輛在安全區(qū)域內(nèi),此時認(rèn)為當(dāng)前車輛暫無碰撞風(fēng)險。
將本文算法模型定點化后部署在Xilinx PYNQ Z2 FPGA 上運行,在多種不同路段對車輛碰撞預(yù)警算法進(jìn)行測試,測試結(jié)果統(tǒng)計如表1 所示。
表1 碰撞預(yù)警實測結(jié)果統(tǒng)計Table 1 Statistics of measured collision warning results
當(dāng)車輛行駛在城市快速路、市內(nèi)道路和高速公路時,本文對碰撞預(yù)警的查準(zhǔn)率分別達(dá)到了94.7%、90.6% 和95.7%,查全率分別為90.5%、87.6% 和92.2%。由于市內(nèi)道路車輛較多、路況復(fù)雜且眾多駕駛員的駕駛水平和習(xí)慣良莠不齊,導(dǎo)致算法在市內(nèi)道路的結(jié)果數(shù)據(jù)準(zhǔn)確率不及快速路和高速公路。綜上所述,實際實驗結(jié)果表明,本文研究提出的基于機器視覺和深度學(xué)習(xí)的車輛碰撞預(yù)警算法檢測速度快、預(yù)警準(zhǔn)確率高;且可以實現(xiàn)對車道上靜態(tài)車輛的檢測,一定程度上解決了當(dāng)前汽車“高級駕駛輔助系統(tǒng)”(Advanced Driving Assistance Systems,ADAS)[18-19]中使用毫米波雷達(dá)面臨的對靜態(tài)障礙物檢測能力不足的問題,能滿足實際駕駛中碰撞預(yù)警的需要。
本文提出利用機器視覺和深度學(xué)習(xí)的方法實現(xiàn)車輛碰撞預(yù)警,一定程度上解決現(xiàn)有研究對靜態(tài)目標(biāo)識別困難、算法適應(yīng)性不強等問題。以構(gòu)建安全區(qū)域模型、檢測車輛目標(biāo)為核心手段,最終通過車輛和安全區(qū)域位置關(guān)系作為碰撞預(yù)警的依據(jù)。算法利用圖像處理方法結(jié)合優(yōu)化的卷積神經(jīng)網(wǎng)絡(luò)對車輛目標(biāo)進(jìn)行檢測,最終實現(xiàn)了車輛碰撞預(yù)警功能。實驗結(jié)果表明,在不同交通環(huán)境中都達(dá)到了較高的識別率,充分驗證了本文算法的有效性和魯棒性,將其應(yīng)用在車輛駕駛中能有效地實現(xiàn)碰撞預(yù)警的目的。
同時,在研究中也暴露出一些問題:在復(fù)雜場景下,如有行人或者自行車、電動車、三輪車等非機動車目標(biāo)出現(xiàn)在車道上時,檢測效果受到影響;在對車輛車距進(jìn)行標(biāo)定時,會因車道不標(biāo)準(zhǔn)或天氣原因帶來一定的誤差,影響車距標(biāo)定的準(zhǔn)確性。導(dǎo)致入侵線設(shè)置不夠精細(xì)化。因此在后期的研究中需增加對車輛目標(biāo)以外的其他目標(biāo),如行人,非機動車,雪糕筒等的檢測功能,另外擬采用姿態(tài)傳感器和激光測距儀對入侵線進(jìn)行實時的標(biāo)定以提高安全區(qū)域設(shè)定的準(zhǔn)確性。