曾嘯川 鄧紅衛(wèi) 莫嵐淋 陳一楠 賀迪
摘要:本文以自動駕駛小車為例,將深度學(xué)習(xí)技術(shù)運(yùn)用于自動駕駛小車,在模擬的道路上,實(shí)現(xiàn)對交通標(biāo)志識別的自動駕駛。本文采用TensorFlow深度學(xué)習(xí)框架,編寫CNN結(jié)構(gòu)模型,訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò),運(yùn)用OpenCV圖像處理技術(shù),使用攝像頭采集模擬道路與交通信號標(biāo)志數(shù)據(jù),通過處理器計(jì)算和處理,面對相應(yīng)的交通信號標(biāo)志,自動駕駛小車自動采取應(yīng)對措施。測試結(jié)果表明,小車具有一定程度的自動駕駛與交通標(biāo)志識別能力。
關(guān)鍵詞:TensorFlow;深度學(xué)習(xí);卷積神經(jīng)網(wǎng)絡(luò);自動駕駛;交通標(biāo)志識別
中圖分類號:TP18 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2020)07-0131-04
0 引言
TensorFlow[7]是一個采用數(shù)據(jù)流圖(data flow graphs),用于數(shù)值計(jì)算的開源軟件庫。節(jié)點(diǎn)(Nodes)在圖中表示數(shù)學(xué)操作,圖中的線(edges)則表示在節(jié)點(diǎn)間相互聯(lián)系的多維數(shù)據(jù)數(shù)組,即張量(tensor)。它靈活的架構(gòu)讓開發(fā)者可以在多種平臺上展開計(jì)算,例如計(jì)算機(jī)中的一個或多個CPU(或GPU),服務(wù)器,移動設(shè)備等等。無人駕駛技術(shù)是傳感器、計(jì)算機(jī)、人工智能、通信、導(dǎo)航定位、模式識別、機(jī)器視覺、智能控制等多門前沿學(xué)科的綜合體。無人駕駛汽車的關(guān)鍵技術(shù)包括環(huán)境感知、導(dǎo)航定位、路徑規(guī)劃、決策控制等。環(huán)境感知模塊相當(dāng)于無人駕駛汽車的眼和耳,無人駕駛汽車通過環(huán)境感知模塊來辨別自身周圍的環(huán)境信息,為其行為決策[8]提供信息支持。無人駕駛汽車的導(dǎo)航模塊用于確定無人駕駛汽車其自身的地理位置,是無人駕駛汽車的路徑規(guī)劃和任務(wù)規(guī)劃的之支撐。路徑規(guī)劃是無人駕駛汽車信息感知和智能控制的橋梁,是實(shí)現(xiàn)自主駕駛的基礎(chǔ)。決策控制模塊相當(dāng)于無人駕駛汽車的大腦,其主要功能是依據(jù)感知系統(tǒng)獲取的信息來進(jìn)行決策判斷,進(jìn)而對下一步的行為進(jìn)行決策,然后對車輛進(jìn)行控制。正因人工智能與無人駕駛汽車擁有好的前景需求,本文基于TensorFlow深度學(xué)習(xí)和計(jì)算機(jī)視覺[9],研究深度學(xué)習(xí)中的圖像識別[10]技術(shù)的問題。并將實(shí)時視頻通過圖像識別之后的結(jié)果,與自動駕駛小車[11-13]的控制相結(jié)合,從而實(shí)現(xiàn)無人駕駛。自動駕駛小車除了能實(shí)現(xiàn)自動駕駛與避障外,還能實(shí)現(xiàn)對交通標(biāo)志[1]的識別[14-16]。
1 系統(tǒng)構(gòu)成與功能
自動駕駛小車可以分為感知和決策兩個部分,樹莓派發(fā)送指令給Arduino控制直流減速電機(jī)實(shí)現(xiàn)小車的決策部分;通過攝像頭采集的道路和交通標(biāo)志數(shù)據(jù)對小車進(jìn)行訓(xùn)練,讓其具有感知功能,并通過測試,實(shí)現(xiàn)其感知部分。
1.1 硬件系統(tǒng)構(gòu)成
自動駕駛小車的實(shí)物圖如圖1所示,系統(tǒng)硬件框圖如圖2所示。本文的自動駕駛小車是組裝的小車底盤,由一個伺服電機(jī)和一個直流減速電機(jī)組成。硬件系統(tǒng)由樹莓派4B、Arduino uno r3、L293D驅(qū)動模塊、L298N驅(qū)動模塊、HC-05藍(lán)牙模塊與HC-SR04超聲波模塊構(gòu)成。樹莓派4B作為上位機(jī),進(jìn)行數(shù)據(jù)采集與圖像預(yù)測,Arduino uno r3作為下位機(jī),通過HC-05藍(lán)牙模塊與樹莓派4B通訊,并發(fā)送指令控制自動駕駛小車的運(yùn)行。L293D驅(qū)動伺服電機(jī)實(shí)現(xiàn)自動駕駛小車的轉(zhuǎn)向,L298N驅(qū)動直流減速電機(jī)控制自動駕駛小車的速度。自動駕駛小車上方安裝了一個800萬像素的攝像頭,用于數(shù)據(jù)采集。
1.2 系統(tǒng)運(yùn)行流程
該系統(tǒng)的整體流程圖如圖3所示。將訓(xùn)練好的模擬道路模型裝載到樹莓派4B中,將訓(xùn)練好的交通標(biāo)志模型裝載到PC中。PC與樹莓派4B通過局域網(wǎng)進(jìn)行通訊,樹莓派4B通過實(shí)時采集到的視頻流數(shù)據(jù)發(fā)送到PC,PC將發(fā)送過來的實(shí)時視頻拆分為一幀一幀的圖片,并進(jìn)行處理與預(yù)測,將預(yù)測的交通標(biāo)志的對應(yīng)標(biāo)簽,發(fā)送信號流給樹莓派4B,樹莓派4B再發(fā)送對應(yīng)指令給Arduino,自動駕駛小車從而自動采取應(yīng)對的措施。
2 系統(tǒng)算法設(shè)計(jì)
網(wǎng)絡(luò)模型算法基于TensorFlow框架進(jìn)行設(shè)計(jì),圖片處理算法基于OpenCV進(jìn)行設(shè)計(jì),如圖4所示。模型設(shè)計(jì)方面,在不影響特征提取的情況下,加入最大池化層,還加入Dropout層防止過擬合。圖片處理方面,將攝像頭采集到的實(shí)時視頻拆分為一幀一幀的圖片,通過HSV顏色空間[2]的轉(zhuǎn)換、二值化處理和目標(biāo)區(qū)域的提取[3]等預(yù)處理操作,再進(jìn)行交通標(biāo)志的預(yù)測。
2.1 網(wǎng)絡(luò)結(jié)構(gòu)
如圖5所示,為模擬道路自動駕駛的網(wǎng)絡(luò)結(jié)構(gòu)。本算法設(shè)計(jì)的卷積神經(jīng)網(wǎng)絡(luò)[4]以小車采集的圖像作為輸入,主要由5個卷積層以及3個全連接層所構(gòu)成。使用的損失函數(shù)為交叉熵;激活函數(shù)為ReLU;分類器使用Softmax;優(yōu)化器為ADAM。采集的道路的圖像大小為320*160個像素,每張圖片都有對應(yīng)的標(biāo)簽值,經(jīng)過OpenCV的處理變成灰度圖片,再將每一張圖片輸入到網(wǎng)絡(luò)結(jié)構(gòu)中進(jìn)行訓(xùn)練。每張圖片經(jīng)過5個卷積層的特征提取,加入了Dropout層防止過擬合,flatten層是卷積層到全連接層的過渡層,將多維的數(shù)據(jù)變成一維,最終輸出為三個標(biāo)簽對應(yīng)的值。
如圖6所示,為交通標(biāo)志分類識別的網(wǎng)絡(luò)結(jié)構(gòu)。本算法設(shè)計(jì)的卷積神經(jīng)網(wǎng)絡(luò)以32*32*3的彩色圖像作為輸入,主要由3個卷積層,3個池化層,以及3個全連接層所構(gòu)成。使用的損失函數(shù)為交叉熵;激活函數(shù)為ReLU;分類器使用Softmax;優(yōu)化器為ADAM。采集的交通標(biāo)志的圖片為大小不等的彩色圖片,經(jīng)過OpenCV的處理將圖片統(tǒng)一變成32*32大小,通過python的pickle模塊將圖片數(shù)據(jù)序列化后轉(zhuǎn)變成二進(jìn)制文件保存,再將該文件輸入到網(wǎng)絡(luò)結(jié)構(gòu)中進(jìn)行訓(xùn)練,使圖片數(shù)據(jù)更易于讀取與處理。
2.2 HSV顏色空間的轉(zhuǎn)換和二值化處理
HSV是把H(色調(diào)),S(飽和度),V(明度)當(dāng)做色值來定位顏色的空間。相對于RGB空間,HSV空間能夠非常直觀的表達(dá)色彩的明暗,色調(diào),以及鮮艷程度,方便進(jìn)行顏色之間的對比。將采集到的圖片進(jìn)行HSV顏色空間的轉(zhuǎn)換,并將紅色、藍(lán)色和綠色三種顏色閾值分割[5-6],對目標(biāo)區(qū)域進(jìn)行閾值化與膨脹處理,最終生成一張合并的mask圖。如下圖所示,為本系統(tǒng)在模擬道路上所收集到的五類模擬交通標(biāo)志mask圖。圖7為人行橫道標(biāo)志mask圖;圖8、圖9分別為紅綠燈標(biāo)志mask圖;圖10為50_kmh限速標(biāo)志mask圖;圖11為“stop”停車標(biāo)志mask圖。
2.3 滑動窗口技術(shù)
滑動窗口技術(shù),首先固定一個卷積區(qū)域,然后將卷積核在圖像上按照指定步長進(jìn)行滑動,對于每一次的滑動得到區(qū)域進(jìn)行預(yù)測,判斷該區(qū)域中存在目標(biāo)的概率?;瑒哟翱谀繕?biāo)檢測算法有很明顯的缺點(diǎn),就是計(jì)算成本,因?yàn)槿绻趫D片中剪切出太多小方塊,卷積網(wǎng)絡(luò)要一個個地處理。如果選用的步幅很大,顯然會減少輸入卷積網(wǎng)絡(luò)的窗口個數(shù),但是粗糙間隔尺寸可能會影響性能。反之,如果采用小粒度或小步幅,傳遞給卷積網(wǎng)絡(luò)的小窗口會特別多,這意味著超高的計(jì)算成本。為此,對這些問題做了一些改進(jìn)。在生成的mask圖中,白色區(qū)域代表目標(biāo)區(qū)域,黑色區(qū)域則代表非目標(biāo)區(qū)域。在進(jìn)行滑動窗口采用小步幅進(jìn)行滑動,如果遇到黑色區(qū)域或者低像素值區(qū)域就直接跳過,遇到目標(biāo)區(qū)域才進(jìn)行預(yù)測。這樣處理不僅不會影響其性能,也不會擁有超高的計(jì)算成本。
3 實(shí)驗(yàn)與分析
數(shù)據(jù)采集結(jié)束后,通過構(gòu)建的卷積神經(jīng)網(wǎng)絡(luò)來訓(xùn)練樣本數(shù)據(jù)。將所有數(shù)據(jù)集拆分80%為訓(xùn)練集,其他的20%為驗(yàn)證集。如圖12所示,自動駕駛訓(xùn)練,訓(xùn)練數(shù)據(jù)集包含8167個圖片樣本,輸入到卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,經(jīng)過20次迭代,訓(xùn)練集正確率為0.9836,loss值為0.0434,驗(yàn)證集正確率為0.9639,loss值為0.1035。如圖13所示,交通標(biāo)志訓(xùn)練,訓(xùn)練數(shù)據(jù)集包含10222個圖片樣本,輸入到卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,經(jīng)過10次迭代,訓(xùn)練集正確率為0.9825,loss值為0.0610,驗(yàn)證集正確率為0.9941,loss值為0.0543。
4 結(jié)語
本文的主要貢獻(xiàn)和結(jié)論如下。
(1)本文將深度學(xué)習(xí)中的圖像識別技術(shù)與無人駕駛小車相擬合,兩者之間能夠流暢的運(yùn)行。(2)實(shí)驗(yàn)結(jié)果表明,本系統(tǒng)設(shè)計(jì)的基于TensorFlow深度學(xué)習(xí)的自動駕駛系統(tǒng)具有一定的自動駕駛與交通標(biāo)志識別能力。(3)本實(shí)驗(yàn)樹莓派與Arduino之間采用藍(lán)牙模塊通訊,存在一定的時間延遲,總體表現(xiàn)還好,應(yīng)該考慮使用更好的通訊方式,以減小通訊的延遲時間。(4)采用提取感興趣區(qū)域的方法,運(yùn)用滑動窗口技術(shù),并進(jìn)行略微的改進(jìn),能夠使圖像識別能力比較準(zhǔn)確,處理速度更快。(5)由于硬件計(jì)算能力有限,導(dǎo)致整個系統(tǒng)發(fā)送指令時有一定的延遲時間,無人駕駛小車行駛過程中有一定的誤差。
參考文獻(xiàn)
[1] Saadna Y,Behloul A.An overview of traffic sign detection and classification methods[J].International Journal of Multimedia Information Retrieval,2017(6):193-210.
[2] Qin Y Y,Cui W,Li Q,et al.Traffic Sign Image Enhancement in Low Light Environment[J].Procedia Computer Science,2019(154):596-602.
[3] Salti S,Petrelli A,Tombari F,et al.Traffic sign detection via interest region extraction[J].Pattern Recognition,2015,48(4):1039-1049.
[4] Alexander Shustanov,Pavel Yakimov.CNN Design for Real-Time Traffic Sign Recognition[J].Procedia Engineering,2017(201):718-725.
[5] Cao Jingwei,Song Chuanxue,Peng Silun,Xiao Feng,Song Shixin. Improved Traffic Sign Detection and Recognition Algorithm for Intelligent Vehicles[J].Sensors(SENSORS-BASEL),2019,19(18):4021.
[6] Selcan Kaplan Berkaya,Huseyin Gunduz,Ozgur Ozsen,Cuneyt Akinlar,Serkan Gunal.On circular traffic sign detection and recognition[J].Expert Systems with Applications,2016(48):67-75.
[7] 章敏敏,徐和平,王曉潔,等.谷歌TensorFlow機(jī)器學(xué)習(xí)框架及應(yīng)用[J].微型機(jī)與應(yīng)用,2017,36(10):58-60.
[8] 武歷穎.無人駕駛汽車環(huán)境信息提取及運(yùn)動決策方法研究[D].西安:長安大學(xué),2016.
[9] 白辰甲.基于計(jì)算機(jī)視覺和深度學(xué)習(xí)的自動駕駛方法研究[D].哈爾濱:哈爾濱工業(yè)大學(xué),2017.
[10] 孫洪萍.圖像識別——交通標(biāo)志的檢測與識別[J].科技創(chuàng)新與應(yīng)用,2018(11):130-131.
[11] 呂威.電動助力轉(zhuǎn)向系統(tǒng)穩(wěn)定性和電流控制方法研究[D].長春:吉林大學(xué),2010.
[12] 劉剛.基于智能車的后輪雙電機(jī)差速的研究與應(yīng)用[J].電子制作,2015(13):88-89.
[13] 陳孟元,孫書誠,王虎.基于圖像識別的尋跡智能車設(shè)計(jì)[J].重慶理工大學(xué)學(xué)報(自然科學(xué)),2013,27(3):80-84+103.
[14] 仲崇豪,宋斌,徐方明,等.基于TensorFlow的交通標(biāo)志識別系統(tǒng)研究[J].信息與電腦(理論版),2019,31(22):101-102.
[15] 王全,梁敬文.基于TensorFlow的交通標(biāo)志識別方法研究[J].價值工程,2019,38(27):204-206.
[16] 鄭揮,郭唐儀,王建博,等.自然背景下交通標(biāo)志牌的檢測方法研究[J].現(xiàn)代交通技術(shù),2017,14(3):79-81+110.