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