關(guān)鍵詞:深度學(xué)習(xí);車道線;檢測系統(tǒng);系統(tǒng)實現(xiàn)
0 引言
近幾年來,由于我國經(jīng)濟(jì)和科學(xué)技術(shù)的飛速發(fā)展,人民的生活質(zhì)量顯著提升,都市道路日益發(fā)達(dá),機動車的數(shù)量也越來越多,而機動車引發(fā)的各種交通安全事件也在逐年增多。在此背景下,研究并開發(fā)一種新型的無人車輛顯得尤為重要,以提升車輛的安全性能,降低車禍發(fā)生率。在無人車輛技術(shù)中,道路識別是其中一個關(guān)鍵環(huán)節(jié)。利用視覺算法的車道線檢測技術(shù),以圖像處理技術(shù)為基礎(chǔ),對圖像中的交通標(biāo)識進(jìn)行提取。在快速道路上,道路標(biāo)識類型多樣,交通擁堵導(dǎo)致的道路標(biāo)識區(qū)域受到嚴(yán)重干擾和侵蝕,使得道路線路識別面臨嚴(yán)峻挑戰(zhàn)[1]。
1 設(shè)計與實現(xiàn)背景
汽車輔助駕駛的首要目標(biāo)就是盡量減少或防止車禍。當(dāng)前,許多汽車已裝備有自動駕駛輔助系統(tǒng),包括車道偏離預(yù)警、碰撞規(guī)避以及路面物體辨識系統(tǒng)等。整個輔助駕駛系統(tǒng)包括數(shù)據(jù)采集、數(shù)據(jù)處理和預(yù)警處理三個模塊。數(shù)據(jù)采集模塊通過利用傳感器、攝像機等方式獲得周邊環(huán)境的情況;數(shù)據(jù)運算模塊基于獲得的信息進(jìn)行運算,得出相應(yīng)的分析結(jié)論;當(dāng)出現(xiàn)諸如汽車脫離正常行駛軌道、速度過快以及可能發(fā)生碰撞等威脅時,報警處理模塊會給司機發(fā)出警告,并采取相應(yīng)的安全防范措施。自動駕駛技術(shù)能夠極大地減少道路交通事故,改善道路運行的安全性。而如今,隨著各項科技的進(jìn)步,無人駕駛也被提到了重要位置。包括特斯拉和蔚來在內(nèi)的多家車企,以及谷歌和百度等人工智能企業(yè),都投入了大量的人力物力進(jìn)行這方面的研發(fā),并且已經(jīng)初見成效。自動駕駛系統(tǒng)由三大模塊組成:系統(tǒng)感知模塊、系統(tǒng)決策模塊和系統(tǒng)控制模塊。其中,系統(tǒng)感知模塊的核心功能是利用多種傳感器采集行車路線的相關(guān)信息;系統(tǒng)控制模塊負(fù)責(zé)對整個汽車進(jìn)行總體控制,使汽車能夠?qū)崿F(xiàn)自主駕駛。無人駕駛技術(shù)的發(fā)展與應(yīng)用,不僅可以降低道路交通意外,提升道路安全性,還可以緩解道路擁擠,提高道路通行效率,提升城市的整體通行品質(zhì)。準(zhǔn)確地提取出道路信息,對車輛的行駛安全具有重要意義。因此,精確地判斷出車道的位置,對于車輛輔助駕駛及無人駕駛等方面具有十分關(guān)鍵的作用。然而,現(xiàn)有的道路識別算法在精度、魯棒性以及實時性能方面存在不足,特別是在更加復(fù)雜的場景下,難以滿足實用要求。為此,以車道檢測信息提取為研究對象,探索快速、精確、穩(wěn)健的車道檢測提取技術(shù),可為無人駕駛與輔助駕駛提供重要的科學(xué)依據(jù)[2]。
2 設(shè)計目標(biāo)
在自動駕駛和輔助駕駛中,車道識別對于確保汽車正常運行具有至關(guān)重要的作用。車道線識別一直是一項頗具挑戰(zhàn)性的研究工作,原因在于真實環(huán)境結(jié)構(gòu)復(fù)雜多變,各國交通規(guī)則各異,即便是同一國家,由于地形差異,各城市所采用的車道線標(biāo)識類型也各不相同。這種類型差異是首先需要解決的問題。此外,車道線在使用過程中極易出現(xiàn)銹蝕、模糊等現(xiàn)象,導(dǎo)致某些圖像處理方法難以對其進(jìn)行有效識別。同時,天氣對道路線識別的有效性也有顯著影響,如下雪或大雨時,道路很可能被遮蔽,使得直接的道路標(biāo)識無法使用,而必須采用其他規(guī)則來處理。
首先,對道路識別過程中的分段和擬合兩個部分進(jìn)行包裝,并利用QT編寫的程序界面,完成了對道路識別過程的可視化處理。該系統(tǒng)是在Windows環(huán)境下的可運行程序,也就是可運行的exe文件,能夠完成對圖像數(shù)據(jù)的采集、車道線的識別,對測試結(jié)果進(jìn)行圖像數(shù)據(jù)的存儲,也是一種用于輔助行駛或無人駕駛的交通工具,可以幫助駕駛員獲得外界的行車信息,從而提升駕駛員的行車安全。同時,還可以幫助其他試驗者進(jìn)行道路測量、評價其性能,從而提升試驗人員的工作效率[3]。
3 基于深度學(xué)習(xí)的車道線檢測系統(tǒng)的設(shè)計與實現(xiàn)策略
3.1 車道線圖像數(shù)據(jù)標(biāo)注與篩選
數(shù)據(jù)標(biāo)注模塊主要是對車道線區(qū)域進(jìn)行標(biāo)記,并將其按一定的文檔形式存儲起來。在車道線上的標(biāo)記方法中,繪制方法是利用多邊形方法。每個車行道都有自己獨特的ID和分類特性,一個車道線可以不止一個。其中,車道線標(biāo)識系統(tǒng)分為標(biāo)志系統(tǒng)和可編輯系統(tǒng)兩種模式。在進(jìn)行標(biāo)記時,標(biāo)記者可以用滑鼠左鍵對道路線進(jìn)行標(biāo)記,最后單擊右鍵完成標(biāo)記,每個標(biāo)記一個多邊形時,都會將區(qū)域ID添加1,如果一條線路有不止一個車道線,那么當(dāng)標(biāo)記出這個線路的第一個區(qū)域時,可以用Shift+ID組合鍵選擇其中的分道線ID,再接著對這個車道線的其它地區(qū)進(jìn)行標(biāo)記。在完成了一條車道線的標(biāo)注之后,可以在修改的過程中調(diào)整車道線域的多邊形點位。同時,該系統(tǒng)也提供了許多人性化的功能,比如可以進(jìn)行圖像的縮放、拖動、復(fù)原、刪除等。一旦一幅照片上的所有車道都被標(biāo)記完畢,再點擊提交數(shù)據(jù),就可以將標(biāo)記的結(jié)果存儲為JPEG格式。在最后的文件中,每個車道的ID、屬性、多邊形點的坐標(biāo)都被以JSON的形式記錄下來[4]。圖1 顯示了道路標(biāo)線的局部截屏。
3.2 下采樣
在原始圖像中,將ROI區(qū)域先從原始圖像中抽取出來,然后再將其提交給神經(jīng)網(wǎng)絡(luò),會造成訓(xùn)練時間長。而且,當(dāng)圖像數(shù)量太多時,所需的感受野也會變得更大,才能達(dá)到最好的視覺效果。通過提高神經(jīng)網(wǎng)絡(luò)的隱藏層的方式,可以獲得更多的感知域,但是這種方法并不利于網(wǎng)絡(luò)的學(xué)習(xí)。而且隨著網(wǎng)絡(luò)的不斷深入,其學(xué)習(xí)速度和學(xué)習(xí)難度也越來越大。因此,在提取出ROI區(qū)域后,首先要做的就是對ROI圖像進(jìn)行下取樣。鑒于標(biāo)簽的特點(標(biāo)簽中包含了車輛路線的類型信息,如哪條車道線),可利用最近鄰插值進(jìn)行下取樣。近鄰插值法是一種基于目標(biāo)影像的空間坐標(biāo)和下取樣尺度來求取原影像空間位置的方法,然后把原影像的影像坐標(biāo)色彩值分配到影像坐標(biāo)的色值上。這種鄰插方法是通過將輸出坐標(biāo)相對于輸入影像的變換坐標(biāo)u來求出,將坐標(biāo)u和它最近的4個點(n1、n2、n3、n4) 間的距離進(jìn)行運算,將最靠近u的像素點色值分配到坐標(biāo)u上。其計算過程為:
3.3 功能模塊設(shè)計
3.3.1 數(shù)據(jù)獲取模塊
該系統(tǒng)采用杰銳微通的 DF 系列攝像機,采用USB端口,可以實現(xiàn)500萬高清1080 P大角度無失真拍照,適用于 Windows、Android、Linux等系統(tǒng),主要應(yīng)用在監(jiān)控視頻、智能家居、智能汽車等方面。在實際應(yīng)用中,該系統(tǒng)可以設(shè)置3個攝像機組件,即反光鏡前方(P1) 、駕駛臺面中部(P2) 和車前蓋下部中部(P3) 。
3.3.2 相機控制模組
相機控制部分包含了相機打開和相機關(guān)機兩大部分,而這兩部分則是通過在網(wǎng)頁編寫的按鍵完成。開機是在相機的主控界面上單擊“打開”鍵來激活,當(dāng)這個按鍵被單擊時,會激活與“打開”鍵相連的插槽函數(shù)open_camera_fun (),這個插槽函數(shù)會激活第一個相機,然后在“src_image”中出現(xiàn)所拍攝到的相機圖片;若相機未開啟,將提示“相機已開啟”。在相機的控制區(qū)中單擊“關(guān)閉”鍵就可以開啟該功能,單擊該鍵后,會激活close_camera_fun () ,與“關(guān)閉”鍵相連,這個插槽函數(shù)會先檢測第一個攝像機的開啟情況,如果沒有開啟,就會出現(xiàn)“攝像機沒有開啟”的提示。如果選擇了“關(guān)閉”,系統(tǒng)就會提示是否要關(guān)掉相機,如果選擇“確定”,就會關(guān)掉第一個鏡頭,如果選擇“取消”,屏幕上的鏡頭就會一直開著。
3.3.3 檢測功能控制模塊
將所獲得的最優(yōu)的學(xué)習(xí)參數(shù)存儲在 pth文檔中,并將該方法的結(jié)構(gòu)代碼、擬合的程序代碼和基于代碼的Python類庫等進(jìn)行編譯,在 Windows下創(chuàng)建一個動態(tài)類庫(DLL) 。然后,通過裝載 PDF文檔,并調(diào)用相應(yīng)的 DLL,完成了車道曲線的自動提取。該檢測控制部分由兩部分組成:一是探測函數(shù)打開,二是探測函數(shù)閉合,這兩個函數(shù)是由前面的探測函數(shù)區(qū)的按鍵來完成的。開啟該功能需要單擊“打開”鍵,然后激活open_dect_fun (),open_dect_fun () 與“打開”鍵相連,該插槽函數(shù)會自動識別1號攝像機的開啟狀態(tài),如果開啟,將利用預(yù)組裝好的分區(qū)和擬合模塊對該影像進(jìn)行處理,并在“result_image”中顯示該影像;如果沒有,系統(tǒng)就會提示:“請首先開啟相機。”該功能可以通過單擊“ 關(guān)閉”鍵來激活,當(dāng)單擊該鍵時,將會激活close_dect_fun (),這個插槽函數(shù)將會先檢驗這個探測功能打開,若沒有打開,就會顯示一個“探測功能尚未打開”的警告框;如果沒有開啟,就會出現(xiàn)一個“確認(rèn)”對話框,提示是否已關(guān)閉探測功能。如果選擇“確定”,那么探測能力將被切斷,如果選擇“取消”,探測能力將一直處于打開狀態(tài)。
3.3.4 存儲功能控制模塊
儲存控制模組包含儲存功能的開啟與儲存機能的封閉,而這兩項的控制則是通過儲存于前頁的儲存功Zc1A24sh0V/YcttfizJOFFBE21+DsSzshXW1NbvDfeQ=能區(qū)按鍵來完成。開啟該功能需要單擊“打開”鍵,然后激活與“打開”鍵相連的open_mem_fun (),該插槽函數(shù)將檢測到的檢測功能開啟。若開啟,將在局部相應(yīng)的地方存儲原始圖像數(shù)據(jù)、檢測結(jié)果的圖像數(shù)據(jù)和檢測結(jié)果的點集數(shù)據(jù);如果不是這樣,系統(tǒng)就會提示:“請首先開啟探測功能?!痹摴δ芸赏ㄟ^單擊“關(guān)閉”鍵來激活,當(dāng)單擊該鍵時,將會激活close_mem_fun() 的插槽函數(shù),該插槽函數(shù)將會第一次檢測該插槽的儲存能力是否開啟,當(dāng)該插槽沒有打開時,會出現(xiàn)一個警告框,顯示為“保存能力尚未打開”;否則,系統(tǒng)就會出現(xiàn)一個“確認(rèn)”對話框,提示是否要關(guān)掉儲存,如果選擇“確定”,那么保存就會被關(guān)掉,如果選擇“取消”,那么儲存就會一直處于打開狀態(tài)。
4 試驗檢測
針對當(dāng)前車道線檢測質(zhì)量尚無成熟的評價準(zhǔn)則,本文以C++與Python方法為基礎(chǔ),以深度卷積神經(jīng)網(wǎng)絡(luò)為重點,對車道線識別進(jìn)行研究。本文通過對車道線的劃分以及車道線的分割精度和召回率來判定標(biāo)線的效果,采用Instance等級的圖像分割方法,通過卷積神經(jīng)網(wǎng)絡(luò)可以將車道線像素區(qū)域和非車道線像素區(qū)域進(jìn)行劃分。因此,本文分別對這兩種情形進(jìn)行了實驗。試驗方案分別是ROI提取+下采樣、ROI提取+ 逆透視變換,均能實現(xiàn)圖像的分割。但是,當(dāng)?shù)缆飞嫌写罅康慕煌üぞ邥r,+逆透視變換很可能會導(dǎo)致目標(biāo)形狀模糊,從而導(dǎo)致目標(biāo)形狀不清楚,分割效果不理想[5]。因此,利用ROI提取+下采樣,通過對車道線像素區(qū)和非線像素區(qū)分別建立神經(jīng)網(wǎng)絡(luò),可通過多個類別的學(xué)習(xí)來實現(xiàn)同一車道線像素的識別。相應(yīng)于兩個試驗的計算公式如下:
在確定了感受野大小對網(wǎng)絡(luò)識別能力的影響之后,采用相同的卷積核大?。?) 、圖像尺寸384×384來建立多類別劃分模型。通過上述公式檢驗發(fā)現(xiàn),召回率達(dá)到73.2%;當(dāng)圖像尺寸為240×100時,該方法的召回率達(dá)到70.7%。
5 結(jié)束語
綜上所述,現(xiàn)有的車道線識別方法存在空間耦合程度高、易受車輛遮擋和光照變化等問題,難以適用于復(fù)雜多變的道路環(huán)境。本文針對車道檢測的實際應(yīng)用要求,結(jié)合深度學(xué)習(xí)技術(shù)的特性,研究基于神經(jīng)網(wǎng)絡(luò)的車道線檢測方法,通過預(yù)訓(xùn)練數(shù)據(jù)準(zhǔn)備、車輛圖片預(yù)處理、車道線分割神經(jīng)網(wǎng)絡(luò)建模和訓(xùn)練,最終完成車道線檢測和顯示,并對各模塊的具體算法進(jìn)行闡述,通過實驗,驗證了該方案的可行性。