劉子瑄,賀子祺,聶文鵬,郭炬?zhèn)?/p>
(東北林業(yè)大學交通學院,黑龍江哈爾濱,150000)
基于深度學習的無人駕駛方法能在行駛過程中對周圍環(huán)境有良好的掌控效果,經(jīng)過大量樣本數(shù)據(jù)訓練過的CNN,能夠根據(jù)周圍環(huán)境相應的樣本給出最正確答案,可以廣泛應用于物體識別[1]。物體識別中最主要的技術便是圖像識別,圖像識別是人工智能領域中最廣泛應用的技術之一,因為深度學習具有明顯的優(yōu)勢,目前已在各大應用場景展開應用,其中包括在自動駕駛、目標識別、人臉檢測、車牌識別、工業(yè)檢測等領域。
隨著深度學習技術的發(fā)展、計算視覺的提高、數(shù)據(jù)處理能力的增長,視覺智能計算技術有了突飛猛進的發(fā)展,因此越來越多的人開始對機器視覺感興趣,在這些先進技術的支持下,無人駕駛技術也愈發(fā)成熟,儼然成為車輛領域的前沿技術,交通信號的識別方法在無人駕駛領域有著重要地位,一套優(yōu)秀的識別方法能大幅度提高無人駕駛的安全性。而現(xiàn)有的交通信號識別技術,對交通信號的識別存在一定的失誤率[2],識別效果和準確度較低。
為獲得更準確、更具針對性的識別方法來實現(xiàn)交通信號燈的識別,該樣本從實際環(huán)境中采集樣本圖像以哈爾濱市交通信號燈為主,其余地區(qū)為輔??紤]到交通信號燈的全面性與不同性,從網(wǎng)絡上也選取了大量圖像數(shù)據(jù)為樣本[3],為達到更好的訓練效果,還對圖片進行專屬的修改,采用了圖像生成技術,對圖像進行裁切、色彩修改、 噪聲增加等方法,從而獲得大量相同格式的樣本圖像。本文只提供了部分樣本數(shù)據(jù)如圖,樣本總體定為三大類圖像數(shù)據(jù),展示的是紅燈的部分圖片。
圖1 部分樣本圖
機器視覺中,卷積神經(jīng)網(wǎng)路通過運用卷積層來實現(xiàn)自主學習訓練交通信號燈的屬性特征,避免了人工定義交通信號燈的本質特征而刻畫力度不夠的影響,使得通過卷積神經(jīng)網(wǎng)路提取的交通信號燈的屬性特征更準確、更符合客觀事實、更便于得到準確的檢測結果[4]。
CNN 主要組成部分:(1)輸入層:主要作用是向神經(jīng)網(wǎng)絡中輸入數(shù)據(jù),并對輸入進行預處理操作。(2)卷積層:通過卷積核計算,先對圖片中所有特征進行局部感知,然后更高層次的對局部進行綜合操作,從而獲得全局信息。(3)激勵層:即對卷積層的輸出結果做一次非線性映射。(4)池化層:主要用于特征降維,來壓縮數(shù)據(jù)和參數(shù),降低過擬合,并提高模型的容錯性。5 輸出層:經(jīng)歷前面若干層的卷積層、激勵層、池化層后,在輸出層中模型會將學到一個高質量的特征圖片的全連接層。因可能出現(xiàn)過擬合現(xiàn)象,常隨機刪除神經(jīng)網(wǎng)絡中的部分神經(jīng)元,還可以進行局部歸一化,來增加魯棒性以降低該現(xiàn)象。
CNN 的整體構建過程如圖,可劃分為兩步,第一步為訓練檢測神經(jīng)網(wǎng)絡,第二步為目標檢測步驟。
訓練檢測網(wǎng)絡階段:訓練樣本來源于兩個部分,一個部分是從網(wǎng)絡上爬蟲爬取一定量的的圖片;另外一部分是實際生活下采集的交通信號燈圖片,并將其改統(tǒng)一格式,通過以上兩部分圖片建立squeeze net 模型,將測試集的圖像數(shù)據(jù)輸入已經(jīng)訓練完成的卷積神經(jīng)網(wǎng)絡,得到每一圖像交通信號的類型,檢測其準確度,并通過激活函數(shù)優(yōu)化。目標檢測階段:將攝像頭拍攝下的路況交通信號的圖像數(shù)據(jù)輸入到訓練好的模型中,根據(jù)圖像處理后所得信息,匹配至模型中相同的交通信號,得到最后的交通信號燈檢測結果[5]。最終可通過其他手段針對每一個交通信號,確定該交通信號在當前路況環(huán)境下最優(yōu)的位置信息,并判斷當前信號對行駛的影響,并給出相應提示。
首先讀取數(shù)據(jù),應用python 語言作為編程語言,設置TensorFlow 所需要的環(huán)境使識別更迅速,通過TensorFlow框架構建CNN 并調(diào)用通過已有圖像數(shù)據(jù)訓練而成的squeeze net 神經(jīng)網(wǎng)絡模型,再結合TensorFlow 深度學習開源框架、OpenCV 圖像庫,將所需要的識別的圖片帶入模型中配比,確實所識別圖片類型[6]。從而實現(xiàn)了一套TensorFlow 深度學習框架結構設計的深度網(wǎng)絡結構,在實際環(huán)境應用過程中,結合OpenCV 圖像庫實現(xiàn)的在線圖片的接入與實時處理的完整的圖像識別系統(tǒng)。
請參下圖,設備包括接收模塊1、處理器2、存儲器3、輸出設備4 等部件。本領域技術人員可以理解,圖2 中所示出的交通信號識別設備還可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。接收模塊1 主要由攝像頭構成,用以采集外界的數(shù)據(jù)。處理器2 主要通過樹莓派進行處理;可連接計算機或外接屏幕進行操作,能夠連接網(wǎng)絡,是交通信號的控制處理中心,可以和多個部件相連。存儲器3 其中主要存儲計算機編程、操作系統(tǒng)等、相關數(shù)據(jù)等,可以存儲交通信號數(shù)據(jù)在相應時刻傳輸給處理器。輸出設備4 主要來展示識別的結果,給出相應環(huán)境下的應對方法。存儲器3 將已經(jīng)編寫完成的程序及操作系統(tǒng)傳輸?shù)教幚砥?,接收模塊1 采集當前路況圖像數(shù)據(jù)并傳輸至處理器2,處理器進行數(shù)據(jù)處理,做出相應決定傳輸至輸出設備4 并做出指示。
圖2 構建流程圖
圖3 實物結構圖
為驗證本文提出的交通信號燈識別方法的可行性和有效性,本文特意選擇了一種異同方法作為驗證,借用MATLAB軟件共同確定其有效性。
結果如下:通過大量的數(shù)據(jù)實驗,得到驗證結果的準確性在97.37%左右,總共經(jīng)歷了20 周期,共迭代180 次,每周期迭代9 次,識別速度也可達到了實時在線的工作。
最終測試模型的結果時生成了一個1x2 的測試,因為隨機從測試集中選取的圖片,則分別選取了紅燈和綠燈且輸出結果皆正確。
本文利用開源深度學習框架TensorFlow,實現(xiàn)了交通環(huán)境下的神經(jīng)網(wǎng)絡結構訓練模型。將訓練好的神經(jīng)網(wǎng)絡結合OpenCV,利用OpenCV 開源圖像庫檢測待測目標,實現(xiàn)了交通信號燈的識別[7],且識別精度和識別速度均達到了實時的性能要求。
就目前來說,國內(nèi)的深度學習的技術還需要進一步發(fā)展,在未來深度學習會涉及更多領域,從而占據(jù)大多市場。然而目前我們所使用的有關于深度學習的軟件大多是歐美國家開發(fā)的,我國也要有自己的技術,擺脫技術封鎖,設計我們自己的深度學習軟件。
圖4 模型訓練圖