熊旋錦 ,潘小琴 ,唐 楷 ,康 勇
(1.西南科技大學(xué) 智能機(jī)器人創(chuàng)新實(shí)踐班,綿陽(yáng) 621010;2.西南科技大學(xué) 工程技術(shù)中心,綿陽(yáng) 621010)
隨著社會(huì)經(jīng)濟(jì)愈加發(fā)展,現(xiàn)代交通已經(jīng)非常便利,其中道路交通仍占主導(dǎo)地位[1]。滯后的道路交通安全基礎(chǔ)設(shè)施建設(shè)、嚴(yán)重不足的交警警力、相對(duì)薄弱的道路交通安全管理水平和交通參與者安全意識(shí)之間的矛盾日益突出,加之環(huán)境污染和能源短缺,交通安全和交通阻塞造成了驚人的經(jīng)濟(jì)損失,成為日益嚴(yán)重的社會(huì)問(wèn)題。
現(xiàn)在,道路交通問(wèn)題的解決,需求助于智能車(chē)技術(shù)。智能車(chē)集中地運(yùn)用了計(jì)算機(jī)、傳感、信息、通信及自動(dòng)控制等技術(shù),是集決策規(guī)劃、周邊環(huán)境感知、道路自動(dòng)識(shí)別等功能于一體的綜合系統(tǒng)[2]。智能車(chē)自動(dòng)行駛的首要任務(wù)是交通標(biāo)志自動(dòng)檢測(cè)與識(shí)別,道路交通標(biāo)志提供警告、指示信息,規(guī)范著駕駛員的行為,為便利、安全的駕駛提供可靠保障[3]。
在此提出基于深度學(xué)習(xí)的交通標(biāo)志自動(dòng)檢測(cè)與識(shí)別的算法,并應(yīng)用于小型智能車(chē)進(jìn)行模擬測(cè)試。該智能車(chē)采用樹(shù)莓派采集和處理交通標(biāo)志,以STM32為主控制器對(duì)智能車(chē)進(jìn)行運(yùn)動(dòng)控制。試驗(yàn)結(jié)果表明,該智能車(chē)可以識(shí)別43種交通標(biāo)志,能夠在模擬的十字路口根據(jù)交通標(biāo)志規(guī)劃路線,實(shí)現(xiàn)主動(dòng)避障和自動(dòng)前行。
該智能車(chē)需要在模擬的道路中識(shí)別出各種交通標(biāo)志并自動(dòng)前行。在檢測(cè)到有其余車(chē)輛的情況下,要判斷出與之相差的距離,并結(jié)合路面情況做出等待或前行的處理。為了實(shí)現(xiàn)這些功能,該智能車(chē)采用雙控制器:樹(shù)莓派控制端進(jìn)行圖像處理,將攝像頭采集到的交通標(biāo)志和障礙物信息進(jìn)行分類(lèi)識(shí)別,得到識(shí)別結(jié)果,將結(jié)果傳到STM32控制端,STM32根據(jù)信息內(nèi)容執(zhí)行相應(yīng)程序。
交通識(shí)別自動(dòng)前行機(jī)器人采用四輪結(jié)構(gòu),以樹(shù)莓派和STM32為雙控制器,外接攝像頭和超聲波傳感器,其硬件結(jié)構(gòu)如圖1所示。
圖1 硬件結(jié)構(gòu)Fig.1 Hardware structure
使用樹(shù)莓派作為圖像處理平臺(tái),可以直接控制執(zhí)行結(jié)構(gòu)并與之結(jié)合成為一個(gè)整體,兼具處理效率性與系統(tǒng)的整體性,使用500萬(wàn)像素彩色攝像頭采集圖像標(biāo)識(shí),將目標(biāo)信號(hào)和干擾信號(hào)進(jìn)行處理,把處理結(jié)果傳輸至STM32[4]。
運(yùn)動(dòng)控制以STM32F103系列芯片為主控制器,外接電機(jī)、編碼器、超聲波傳感器等。STM32與樹(shù)莓派之間采用CH340串口模塊傳輸圖像處理信息。根據(jù)圖像處理信息和編碼器獲取的當(dāng)前速度,產(chǎn)生相應(yīng)的控制信號(hào),向電機(jī)輸出PWM波,實(shí)現(xiàn)雙路電機(jī)正反轉(zhuǎn),最終控制小車(chē)前進(jìn)、停止、后退、左轉(zhuǎn)及右轉(zhuǎn)[5]。
將攝像頭采集到的彩色圖像轉(zhuǎn)化為灰度圖像,用幀差法可將背景與目標(biāo)分離,再進(jìn)行圖像閾值分割,應(yīng)用OpenCV的對(duì)比度限制自適應(yīng)直方圖均衡來(lái)提高圖片的可視性。
傳統(tǒng)的機(jī)器學(xué)習(xí)算法流程分為數(shù)據(jù)預(yù)處理、特征工程、模型建立及訓(xùn)練、模型效果評(píng)估。其中,特征工程需要大量的專(zhuān)家知識(shí),且針對(duì)圖片等復(fù)雜的數(shù)據(jù)源,很難人為從中提取能夠全面反映數(shù)據(jù)間不同特性的特征。為此,可采用卷積網(wǎng)絡(luò),利用卷積提取局部特征的性質(zhì),特征工程融入模型中,讓模型去“學(xué)習(xí)特征”。同時(shí),為了能夠準(zhǔn)確識(shí)別交通標(biāo)識(shí),圖像處理任務(wù)將從數(shù)據(jù)預(yù)處理、數(shù)據(jù)擴(kuò)增、算法模型3個(gè)角度著手,具體程序流程如圖2所示。
圖2 程序流程Fig.2 Program flow chart
由圖可見(jiàn),首先對(duì)原始圖片應(yīng)用去噪、大小統(tǒng)一等數(shù)據(jù)預(yù)處理的方法處理圖片;為解決數(shù)據(jù)不平衡和增加樣本多樣性,采用數(shù)據(jù)擴(kuò)增的技巧;采用設(shè)計(jì)模型和處理后的數(shù)據(jù)進(jìn)行模型訓(xùn)練,并對(duì)其結(jié)果進(jìn)行評(píng)估、驗(yàn)證分析來(lái)改進(jìn)模型。
3.1.1 ConvNets網(wǎng)絡(luò)結(jié)構(gòu)
應(yīng)用卷積網(wǎng)絡(luò)ConvNets解決交通標(biāo)志的分類(lèi)任務(wù)。ConvNets是一種受生物啟發(fā)的多級(jí)結(jié)構(gòu),能自動(dòng)學(xué)習(xí)到不由平移旋轉(zhuǎn)等操作而變化的具有一定層次結(jié)構(gòu)的特征。雖然許多流行的計(jì)算機(jī)視覺(jué)方法通過(guò)人工提取特征,如HOG或SIFT特征,但是ConvNets能從原始數(shù)據(jù)中學(xué)習(xí)到不同特征級(jí)別的特征,所以ConvNet能夠提取出更加復(fù)雜和具有一定針對(duì)性的特征,能為后期分類(lèi)處理提供更加有用的特征。
網(wǎng)絡(luò)結(jié)構(gòu)在LeCun等人的工作[6]上進(jìn)行延伸改進(jìn),如圖3所示,通過(guò)加入Batch Normalization以提高網(wǎng)絡(luò)的泛用性。同時(shí),通過(guò)在網(wǎng)絡(luò)上增加一次卷積采樣提取更加復(fù)雜的特征信息,然后通過(guò)降采樣來(lái)減少平移等行為,保證結(jié)構(gòu)的不變性。
圖3 ConvNets的網(wǎng)絡(luò)結(jié)構(gòu)Fig.3 ConvNets network structure
3.1.2 核心算法設(shè)計(jì)
實(shí)際模型在訓(xùn)練中,存在著以下問(wèn)題:樣本采樣不平衡,部分圖片由于亮度原因難以識(shí)別,模型參數(shù)過(guò)多且層數(shù)過(guò)深導(dǎo)致的樣本需求量較大、梯度彌散、梯度爆炸等問(wèn)題。在此通過(guò)直方圖均衡化、數(shù)據(jù)擴(kuò)增、Batch Normalization加以解決。
(1)直方圖均衡化
由于一些圖像受到了低對(duì)比度(模糊、黑暗)的影響,圖像無(wú)法識(shí)別,原始圖片如圖4a所示。通過(guò)數(shù)據(jù)探索,在算法中可以應(yīng)用OpenCV的對(duì)比度限制自適應(yīng)直方圖均衡,以提高圖片的可視性。直方圖均衡化是一種計(jì)算機(jī)視覺(jué)技術(shù),用于增強(qiáng)圖像的對(duì)比度,直方圖均衡化效果如圖4b所示。
圖4 直方圖均衡化效果Fig.4 Histogram equalization effect
(2)解決數(shù)據(jù)不平衡問(wèn)題
圖5中每個(gè)直方柱為該類(lèi)樣本數(shù)量,由此可見(jiàn),數(shù)據(jù)不同則樣本分布差距較大,而大多數(shù)機(jī)器學(xué)習(xí)算法的基本假設(shè)均為數(shù)據(jù)分布是均勻的[7]。如果將機(jī)器學(xué)習(xí)算法直接應(yīng)用于當(dāng)前數(shù)據(jù),則無(wú)法取得理想的結(jié)果。
圖5 不平衡的數(shù)據(jù)分布Fig.5 Unbalanced data distribution
針對(duì)這類(lèi)不平衡數(shù)據(jù)集,從數(shù)據(jù)的角度出發(fā),常見(jiàn)解決方法為抽樣,既然樣本是不平衡的,通過(guò)某種策略抽樣,將不平衡的樣本數(shù)據(jù)轉(zhuǎn)變?yōu)橄鄬?duì)均衡數(shù)據(jù)。但是,僅通過(guò)采樣會(huì)使樣本量減少,模型得到的數(shù)據(jù)量不足以用作訓(xùn)練。此時(shí)可通過(guò)數(shù)據(jù)擴(kuò)增(data augmentation)[8]的方法在原始的數(shù)據(jù)分布上增加數(shù)據(jù)。通過(guò)隨機(jī)移動(dòng)、旋轉(zhuǎn)、裁切數(shù)據(jù)得到的圖片可以增加樣本的多樣性,同時(shí)可以解決數(shù)據(jù)不平衡的問(wèn)題。
(3)Batch Normalization
隨著深度學(xué)習(xí)的發(fā)展,神經(jīng)網(wǎng)絡(luò)越來(lái)越深。由于深度的增加,網(wǎng)絡(luò)中權(quán)重的根據(jù)梯度進(jìn)行的微小變化將會(huì)對(duì)后面的網(wǎng)絡(luò)層有很大的影響,造成“梯度彌散”(由于當(dāng)前神經(jīng)元的梯度和前面的梯度相乘后,縮小了梯度對(duì)當(dāng)前節(jié)點(diǎn)的影響,甚至導(dǎo)致當(dāng)前的梯度為0)或者“梯度爆炸”(放大了梯度對(duì)當(dāng)前節(jié)點(diǎn)的影響,甚至導(dǎo)致當(dāng)前的梯度為無(wú)窮大)。為避免影響網(wǎng)絡(luò)的效果和訓(xùn)練時(shí)間,不僅采用了改進(jìn)優(yōu)化方法,還采用Batch Normalization[9]進(jìn)行歸一化預(yù)理。
采用Batch Normalization進(jìn)行歸一化預(yù)理,可以選擇比較大的初始學(xué)習(xí)率,加快速度。同時(shí),因?yàn)樗旧砭褪且粋€(gè)歸一化網(wǎng)絡(luò)層,所以具有提高網(wǎng)絡(luò)泛化能力的特性。
3.2.1 串口通信
樹(shù)莓派與STM32之間的通信采用CH340串口模塊。CH340模塊是一種USB轉(zhuǎn)TTL的串口模塊[10]。Linux對(duì)所有設(shè)備的訪問(wèn)是通過(guò)設(shè)備文件進(jìn)行的,串口也是如此。要使用串口,只需打開(kāi)相應(yīng)的設(shè)備文件即可操作串口設(shè)備。在Linux系統(tǒng)下,設(shè)備文件位于系統(tǒng)/dev目錄之下。在操作串口前,需在樹(shù)莓派上查看串口型號(hào),Linux下/ttyS0和/ttyS1分別表示串口1和串口2,智能車(chē)所使用的串口為/ttyUSB0[11]。
樹(shù)莓派與STM32之間的通信流程如圖6所示,將USB轉(zhuǎn)TTL接入樹(shù)莓派,進(jìn)入python編譯環(huán)境,安裝serial,用于串口通信及USB通信:
Sudo apt-get install python-serial
調(diào)用serial庫(kù):
Import serial
將串口實(shí)體化:
ser=serial.Serial('/dev/ttyUSB0',9600,timeout=1)
STM32先進(jìn)行系統(tǒng)時(shí)鐘、NVIC,GPIO等一系列初始化,然后進(jìn)行串口配置,將樹(shù)莓派的串口與STM32的串口設(shè)備連接起來(lái),再將STM32與樹(shù)莓派串口波特率進(jìn)行匹配,便可實(shí)現(xiàn)通信。
圖6 通信軟件流程Fig.6 Communication software flow chart
3.2.2 PID 算法
智能車(chē)控制系統(tǒng)包括控制小車(chē)電機(jī)速度的PID算法和小車(chē)位置移動(dòng)。交通識(shí)別機(jī)器人的控制程序由Keil For ARM編寫(xiě)完成,機(jī)器人結(jié)合PID控制技術(shù),基于反饋的概念來(lái)減少不確定性,消除穩(wěn)態(tài)誤差,加快慣性系統(tǒng)響應(yīng)速度,其控制流程如圖7所示[12]。
圖7 PID程序流程Fig.7 PID program flow chart
PID控制器給定一個(gè)需求轉(zhuǎn)速,將實(shí)際測(cè)得的轉(zhuǎn)速與需求轉(zhuǎn)速相比較后,經(jīng)計(jì)算得到一個(gè)輸出信號(hào);將此信號(hào)轉(zhuǎn)化為PWM波的占空比,再反饋在電機(jī)的驅(qū)動(dòng)電路上,即可按所需控制電機(jī)的轉(zhuǎn)動(dòng),調(diào)節(jié)小車(chē)速度。該系統(tǒng)采用增量式PID算法,增量式數(shù)字PID為
式中:TP為比例系數(shù);TI為積分項(xiàng)積分時(shí)間常數(shù);TD為微分時(shí)間常數(shù)[13]。
在 Intel i7(3.5 GHz)處理器,8 GB 內(nèi)存,Mac OS 10.10(64 bit)平臺(tái)上,對(duì)原型系統(tǒng)進(jìn)行仿真試驗(yàn)。 采用GTSRB無(wú)人駕駛數(shù)據(jù)集。其中,有39209個(gè)訓(xùn)練集,12630個(gè)測(cè)試集,包括43種交通標(biāo)識(shí),如圖8所示。試驗(yàn)結(jié)果見(jiàn)表1。
圖8 交通標(biāo)志Fig.8 Traffic signs
表1 測(cè)試結(jié)果對(duì)比Tab.1 Comparison of test results
基于正確分類(lèi)率對(duì)測(cè)試集進(jìn)行評(píng)價(jià)。由表可知,通過(guò)與原有的方法Multi-scale CNN相比較,CNN with BatchNorm在該任務(wù)上有較為顯著的提升,網(wǎng)絡(luò)能很好地區(qū)分正確分類(lèi)與非正確分類(lèi)。同時(shí),通過(guò)可視化最后一個(gè)卷積層,可見(jiàn)網(wǎng)絡(luò)很好地捕捉到標(biāo)志的特征信息,仿真結(jié)果比較理想。
隨后,將圖像處理部分與控制部分結(jié)合,用于智能車(chē)的自動(dòng)駕駛,測(cè)試過(guò)程如圖9所示。在模擬的十字路口,智能車(chē)可根據(jù)交通標(biāo)志規(guī)劃路線,自動(dòng)前行、停止、左轉(zhuǎn)或右轉(zhuǎn),完成任務(wù)。
圖9 十字路口測(cè)試Fig.9 Test at intersections
隨著社會(huì)經(jīng)濟(jì)的發(fā)展,現(xiàn)代交通已經(jīng)非常發(fā)達(dá),交通識(shí)別技術(shù)作為未來(lái)交通系統(tǒng)的發(fā)展方向,將信息技術(shù)、數(shù)據(jù)通訊傳輸技術(shù)、控制、電子傳感技術(shù)及計(jì)算機(jī)技術(shù)等集成應(yīng)用,交通識(shí)別技術(shù)必將受到越來(lái)越廣泛的關(guān)注。交通標(biāo)志識(shí)別智能車(chē)便是將此種技術(shù)初步運(yùn)用的實(shí)驗(yàn),提高了機(jī)器人的智能型與可控性,取得了良好的效果。
[1] 朱雙東,陸曉峰.道路交通標(biāo)志識(shí)別的研究現(xiàn)狀及展望[J].計(jì)算機(jī)工程與科學(xué),2006,28(12):50-52,102.
[2] 陳暉,張軍國(guó),李默涵,等.基于STC89C52和nRF24L01的智能小車(chē)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2012,35(17):12-15.
[3] 王芳.交通禁止標(biāo)志的檢測(cè)和識(shí)別[D].西安:長(zhǎng)安大學(xué),2014.
[4] 郭亮,葉愛(ài)民,林濤,等.基于樹(shù)莓派和Java語(yǔ)言的溫濕度遠(yuǎn)程實(shí)時(shí)測(cè)量系統(tǒng)的設(shè)計(jì) [J].計(jì)算機(jī)測(cè)量與控制,2017,25(6):4-8,20.
[5] 李森,潘小琴,欽盼琛,等.基于遠(yuǎn)程控制的雙輪安防機(jī)器人系統(tǒng)設(shè)計(jì)[J].自動(dòng)化與儀表,2017,32(5):30-34.
[6] Sermanet Pierre,Lecun Y.Traffic sign recognition with multiscale convolutional networks[J].International Joint Conference on Neural Networks,2011,42(4):2809-2813.
[7] He H,Garcia E A.Learning from imbalanced data[J].IEEE Transactions on Knowledge and Data Engineering,2009,21(9):1263-1284.
[8] Perez Luis,Wang Jason.The effectiveness of data augmentation in image classification using deep learning[EB/OL].2017-12-13.a(chǎn)rXiv:1712.04621.
[9] Ioffe S,Szegedy C.Batch normalization:Accelerating deep network training by reducing internal covariate shift[C]//International Conference on Machine Learning,2015:448-456.
[10] 張俊才.嵌入式信息家電平臺(tái)中的紅外通信研究與實(shí)現(xiàn)[D].昆明:昆明理工大學(xué),2007.
[11] 郭勇,何軍.STM32單片機(jī)多串口通信仿真測(cè)試技術(shù)研究[J].無(wú)線電工程,2015,45(8):6-9,42.
[12] 李曉旭,周煥銀.基于STM32智能小車(chē)視覺(jué)控制導(dǎo)航的設(shè)計(jì)[J].電子設(shè)計(jì)工程,2017,25(9):105-107,112.
[13] 雷慧杰.基于STM32的直流電機(jī)PID調(diào)速系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2016,39(8):165-167,170.■