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