李子康, 徐桂芝, 郭苗苗
(河北工業大學 電氣工程學院 電氣工程及其自動化系,天津 300131)
智能交通系統[1](intelligent transportation system,ITS)背景下基于機器視覺的交通信號燈檢測識別技術對于智能汽車的安全駕駛至關重要。交通信號燈通常設在道路交叉口處,復雜背景環境給信號燈準確識別帶來了很大的困難。
傳統的交通信號燈的檢測算法思路大多是選擇合適的色彩空間[2,3]對圖像進行分割,并對其二值圖像進行連通域標記,通過設定閾值對其進行篩選濾波獲取交通燈燈區,然后通過模板匹配[3~5]、支持向量機(support vector machine,SVM)[6]和Adaboost[7]等方法對目標區域進行識別。隨著對交通信號識別算法的不斷深入研究,使尺度不變特征轉換(scale-invariant feature transform,SIFT)[8]算法、SSD(single shot multibox detector)[9]算法以及Faster-RCNN[10]算法的交通信號燈識別等都取得了較高的準確率與召回率,但以上方法對較遠處(像素較少)、易混淆的交通信號燈仍然難以區分。SSD算法基于使用縮放變體模板來提取不同尺寸的圖像特征,小目標的特征很容易被縮放變體模板忽略,因此召回率較低;Faster RCNN通過感興趣的區域(region of interest,ROI)池提取不同尺寸下的特征進行識別檢測,雖然可處理尺寸變化問題,但未解決目標的上下文語境問題,因此準確率稍有不足。
本文將上下文特征引入交通信號燈識別領域,結合CNN算法[13]的優點,提出一種漸變特征的識別算法,經實驗證實,本文算法較傳統算法與單純的CNN算法,有較高的召回率與準確率。
本文針對交通信號燈識別設計了一種CNN網絡結構,如圖1所示。

圖1 CNN模型結構
該CNN網絡以32×32像素大小的三通道圖像為輸入,共有9層,其中卷積層與池化層交替連接共有7層,最后2個隱含層為全連接層。針對輸入的32像素×32像素的三通道圖像,以圖2中的結構對圖像交替進行特征提取與下采樣操作,可以得到25維度的特征;在全連接層對特征進行線性回歸;由Softmax分類器得到分類結果。CNN網絡的具體參數設置如表1所示。

表1 CNN模型的具體參數
該CNN網絡卷積層中卷積核個數先增加后減小,呈現金字塔結構,可以更好地保留有效信息;通過對特征池化,使得網絡結構對微小的平移和形變具有好的魯棒性;全連接層采用了Dropout機制,以一定概率隨機使網絡的某些隱含層權重停止更新,防止CNN網絡因訓練集較小出現過擬合現象。
為使CNN模型具有更好的特征提取能力,本文借鑒遷移學習思想,使用cifar10數據集對CNN模型訓練至損失(loss)收斂,如圖2所示,訓練中只保存卷積層所有參數。

圖2 預訓練損失
為使CNN模型具有區分車尾燈的能力,本文將交通信號燈連同其背景,作為原始圖像。針對同一交通信號燈,分別裁剪出32×32,64×64,128×128大小的3種圖像作為訓練集。
將交通信號燈分為直行綠燈、左拐綠燈、直行黃燈、左拐黃燈、直行紅燈、左拐紅燈,共6類40 681張圖像。設批處理(batch)為128,學習率從0.001漸變至0.000 01,卷積層取預訓練后的模型參數,全連接層以最大似然估計初始化,Dropout設為0.75,更新卷積層及全鏈接層參數,直至loss收斂。如圖3所示。

圖3 數據loss
為提升檢測的性能,引入上下文特征并結合CNN優點,提出一種引入漸變特征的檢測算法。在整副圖像中隨機選取一個點P,以點P為中心,以一定步長,按方形擴散,逐一檢測每一次擴散后的圖像,若經過3次擴散均識別為同一交通信號燈,則認為點P所處區域為該交通信號燈。算法詳細描述為:
輸入:CNN模型,檢測閾值d
輸出:T,交通信號燈類別
初始化:已檢測區域列表D為空
重復隨機產生點P(x,y)
如果:P不屬于D,那么Ai=R(P,step×i)
如果:任意i∈(1,3),CNN(Ai)>d
那么:將區域Ai存入D
返回信號燈識別類型T
直到 所有區域均被標記
為了驗證本文方法的有效性,以計算機視覺與機器人研究實驗室在美國圣地亞哥采集的LISA交通信號燈數據集[8]作為測試數據,由固定在測試車頂的Bumblebee XB3型攝像機拍攝,圖像包含圓形和箭頭形的紅、綠、黃共6類交通燈以及負樣本。采集頻率為16幀/s,圖像分辨率為1 280像素×960像素。該數據集包含兩個白天與夜晚的圖像視頻序列,25 913幀圖像,視頻長23'10″,地面實況(ground truth)包含交通信號燈注釋64 137個。
在每一步擴散中,將擴散后的圖像等比縮放至步長×步長(step×step)大小進行處理。若step過大,容易得到過多的冗余信息;若step過小,容易將交通信號燈切分,使重要特征不完整,也會影響性能。設計5組不同的step值,使用實驗數據集,計算其對應的召回率,如圖4所示。可以看出,當step分別為16,32,48時具有較高的召回率,且當step=32 時的召回率最高。由于需要以圖像中一隨機點P為中心進行3次方形擴散(每次擴散的步長為step×i,(i=1,2,3)),因此選取step為16。

圖4 不同步長下的召回率
在step=16時,選取了包含汽車尾燈的數據進行測試實驗,如圖5所示。

圖5 step=16下的測試實驗結果
對于汽車尾燈,在擴散前,CNN識別其為紅燈直行,隨著擴散次數增加,其概率逐漸降低,準確地避免對汽車尾燈的誤檢。在LISA測試數據集上對算法進行測試,白天與夜晚分開實驗,并同其他方法進行準確率—召回率(P-R)比較,結果如圖6所示。

圖6 P-R曲線對比數據
本文以交通燈識別的任務特點為出發點,針對其他方法的不足而提出應對措施,雖能有效提升召回率與準確率,但也存在諸多可改進的地方,如:按步長擴散時,可以通過當前狀態值,計算出下一次擴散需要的步長,同時針對不同步長設定不同閾值,進而檢測,為進一步研究內容。