李子康, 徐桂芝, 郭苗苗
(河北工業(yè)大學(xué) 電氣工程學(xué)院 電氣工程及其自動(dòng)化系,天津 300131)
智能交通系統(tǒng)[1](intelligent transportation system,ITS)背景下基于機(jī)器視覺(jué)的交通信號(hào)燈檢測(cè)識(shí)別技術(shù)對(duì)于智能汽車的安全駕駛至關(guān)重要。交通信號(hào)燈通常設(shè)在道路交叉口處,復(fù)雜背景環(huán)境給信號(hào)燈準(zhǔn)確識(shí)別帶來(lái)了很大的困難。
傳統(tǒng)的交通信號(hào)燈的檢測(cè)算法思路大多是選擇合適的色彩空間[2,3]對(duì)圖像進(jìn)行分割,并對(duì)其二值圖像進(jìn)行連通域標(biāo)記,通過(guò)設(shè)定閾值對(duì)其進(jìn)行篩選濾波獲取交通燈燈區(qū),然后通過(guò)模板匹配[3~5]、支持向量機(jī)(support vector machine,SVM)[6]和Adaboost[7]等方法對(duì)目標(biāo)區(qū)域進(jìn)行識(shí)別。隨著對(duì)交通信號(hào)識(shí)別算法的不斷深入研究,使尺度不變特征轉(zhuǎn)換(scale-invariant feature transform,SIFT)[8]算法、SSD(single shot multibox detector)[9]算法以及Faster-RCNN[10]算法的交通信號(hào)燈識(shí)別等都取得了較高的準(zhǔn)確率與召回率,但以上方法對(duì)較遠(yuǎn)處(像素較少)、易混淆的交通信號(hào)燈仍然難以區(qū)分。SSD算法基于使用縮放變體模板來(lái)提取不同尺寸的圖像特征,小目標(biāo)的特征很容易被縮放變體模板忽略,因此召回率較低;Faster RCNN通過(guò)感興趣的區(qū)域(region of interest,ROI)池提取不同尺寸下的特征進(jìn)行識(shí)別檢測(cè),雖然可處理尺寸變化問(wèn)題,但未解決目標(biāo)的上下文語(yǔ)境問(wèn)題,因此準(zhǔn)確率稍有不足。
本文將上下文特征引入交通信號(hào)燈識(shí)別領(lǐng)域,結(jié)合CNN算法[13]的優(yōu)點(diǎn),提出一種漸變特征的識(shí)別算法,經(jīng)實(shí)驗(yàn)證實(shí),本文算法較傳統(tǒng)算法與單純的CNN算法,有較高的召回率與準(zhǔn)確率。
本文針對(duì)交通信號(hào)燈識(shí)別設(shè)計(jì)了一種CNN網(wǎng)絡(luò)結(jié)構(gòu),如圖1所示。
圖1 CNN模型結(jié)構(gòu)
該CNN網(wǎng)絡(luò)以32×32像素大小的三通道圖像為輸入,共有9層,其中卷積層與池化層交替連接共有7層,最后2個(gè)隱含層為全連接層。針對(duì)輸入的32像素×32像素的三通道圖像,以圖2中的結(jié)構(gòu)對(duì)圖像交替進(jìn)行特征提取與下采樣操作,可以得到25維度的特征;在全連接層對(duì)特征進(jìn)行線性回歸;由Softmax分類器得到分類結(jié)果。CNN網(wǎng)絡(luò)的具體參數(shù)設(shè)置如表1所示。
表1 CNN模型的具體參數(shù)
該CNN網(wǎng)絡(luò)卷積層中卷積核個(gè)數(shù)先增加后減小,呈現(xiàn)金字塔結(jié)構(gòu),可以更好地保留有效信息;通過(guò)對(duì)特征池化,使得網(wǎng)絡(luò)結(jié)構(gòu)對(duì)微小的平移和形變具有好的魯棒性;全連接層采用了Dropout機(jī)制,以一定概率隨機(jī)使網(wǎng)絡(luò)的某些隱含層權(quán)重停止更新,防止CNN網(wǎng)絡(luò)因訓(xùn)練集較小出現(xiàn)過(guò)擬合現(xiàn)象。
為使CNN模型具有更好的特征提取能力,本文借鑒遷移學(xué)習(xí)思想,使用cifar10數(shù)據(jù)集對(duì)CNN模型訓(xùn)練至損失(loss)收斂,如圖2所示,訓(xùn)練中只保存卷積層所有參數(shù)。
圖2 預(yù)訓(xùn)練損失
為使CNN模型具有區(qū)分車尾燈的能力,本文將交通信號(hào)燈連同其背景,作為原始圖像。針對(duì)同一交通信號(hào)燈,分別裁剪出32×32,64×64,128×128大小的3種圖像作為訓(xùn)練集。
將交通信號(hào)燈分為直行綠燈、左拐綠燈、直行黃燈、左拐黃燈、直行紅燈、左拐紅燈,共6類40 681張圖像。設(shè)批處理(batch)為128,學(xué)習(xí)率從0.001漸變至0.000 01,卷積層取預(yù)訓(xùn)練后的模型參數(shù),全連接層以最大似然估計(jì)初始化,Dropout設(shè)為0.75,更新卷積層及全鏈接層參數(shù),直至loss收斂。如圖3所示。
圖3 數(shù)據(jù)loss
為提升檢測(cè)的性能,引入上下文特征并結(jié)合CNN優(yōu)點(diǎn),提出一種引入漸變特征的檢測(cè)算法。在整副圖像中隨機(jī)選取一個(gè)點(diǎn)P,以點(diǎn)P為中心,以一定步長(zhǎng),按方形擴(kuò)散,逐一檢測(cè)每一次擴(kuò)散后的圖像,若經(jīng)過(guò)3次擴(kuò)散均識(shí)別為同一交通信號(hào)燈,則認(rèn)為點(diǎn)P所處區(qū)域?yàn)樵摻煌ㄐ盘?hào)燈。算法詳細(xì)描述為:
輸入:CNN模型,檢測(cè)閾值d
輸出:T,交通信號(hào)燈類別
初始化:已檢測(cè)區(qū)域列表D為空
重復(fù)隨機(jī)產(chǎn)生點(diǎn)P(x,y)
如果:P不屬于D,那么Ai=R(P,step×i)
如果:任意i∈(1,3),CNN(Ai)>d
那么:將區(qū)域Ai存入D
返回信號(hào)燈識(shí)別類型T
直到 所有區(qū)域均被標(biāo)記
為了驗(yàn)證本文方法的有效性,以計(jì)算機(jī)視覺(jué)與機(jī)器人研究實(shí)驗(yàn)室在美國(guó)圣地亞哥采集的LISA交通信號(hào)燈數(shù)據(jù)集[8]作為測(cè)試數(shù)據(jù),由固定在測(cè)試車頂?shù)腂umblebee XB3型攝像機(jī)拍攝,圖像包含圓形和箭頭形的紅、綠、黃共6類交通燈以及負(fù)樣本。采集頻率為16幀/s,圖像分辨率為1 280像素×960像素。該數(shù)據(jù)集包含兩個(gè)白天與夜晚的圖像視頻序列,25 913幀圖像,視頻長(zhǎng)23'10″,地面實(shí)況(ground truth)包含交通信號(hào)燈注釋64 137個(gè)。
在每一步擴(kuò)散中,將擴(kuò)散后的圖像等比縮放至步長(zhǎng)×步長(zhǎng)(step×step)大小進(jìn)行處理。若step過(guò)大,容易得到過(guò)多的冗余信息;若step過(guò)小,容易將交通信號(hào)燈切分,使重要特征不完整,也會(huì)影響性能。設(shè)計(jì)5組不同的step值,使用實(shí)驗(yàn)數(shù)據(jù)集,計(jì)算其對(duì)應(yīng)的召回率,如圖4所示??梢钥闯?,當(dāng)step分別為16,32,48時(shí)具有較高的召回率,且當(dāng)step=32 時(shí)的召回率最高。由于需要以圖像中一隨機(jī)點(diǎn)P為中心進(jìn)行3次方形擴(kuò)散(每次擴(kuò)散的步長(zhǎng)為step×i,(i=1,2,3)),因此選取step為16。
圖4 不同步長(zhǎng)下的召回率
在step=16時(shí),選取了包含汽車尾燈的數(shù)據(jù)進(jìn)行測(cè)試實(shí)驗(yàn),如圖5所示。
圖5 step=16下的測(cè)試實(shí)驗(yàn)結(jié)果
對(duì)于汽車尾燈,在擴(kuò)散前,CNN識(shí)別其為紅燈直行,隨著擴(kuò)散次數(shù)增加,其概率逐漸降低,準(zhǔn)確地避免對(duì)汽車尾燈的誤檢。在LISA測(cè)試數(shù)據(jù)集上對(duì)算法進(jìn)行測(cè)試,白天與夜晚分開(kāi)實(shí)驗(yàn),并同其他方法進(jìn)行準(zhǔn)確率—召回率(P-R)比較,結(jié)果如圖6所示。
圖6 P-R曲線對(duì)比數(shù)據(jù)
本文以交通燈識(shí)別的任務(wù)特點(diǎn)為出發(fā)點(diǎn),針對(duì)其他方法的不足而提出應(yīng)對(duì)措施,雖能有效提升召回率與準(zhǔn)確率,但也存在諸多可改進(jìn)的地方,如:按步長(zhǎng)擴(kuò)散時(shí),可以通過(guò)當(dāng)前狀態(tài)值,計(jì)算出下一次擴(kuò)散需要的步長(zhǎng),同時(shí)針對(duì)不同步長(zhǎng)設(shè)定不同閾值,進(jìn)而檢測(cè),為進(jìn)一步研究?jī)?nèi)容。