張傳偉,李妞妞,岳向陽,楊滿芝,王 睿,丁宇鵬
(西安科技大學(xué) 機(jī)械工程學(xué)院,西安 710054)
隨著社會(huì)生活的發(fā)展,汽車已然變成人們?nèi)粘I钪兄匾慕M成,但交通事故死亡率卻一直居高不下[1,2].高級(jí)輔助駕駛的提出對(duì)降低交通堵塞,避免交通事故發(fā)生以及對(duì)無人駕駛應(yīng)用都有著重要的意義.交通標(biāo)志的實(shí)時(shí)識(shí)別也是無人駕駛不可缺少的一部分[3-5].因此無論對(duì)交通標(biāo)志檢測(cè)理論研究和實(shí)際研究都有著很高的價(jià)值.
交通標(biāo)志的研究即使已經(jīng)普遍進(jìn)行,能否達(dá)到準(zhǔn)確、快速檢測(cè)交通標(biāo)志仍然是一個(gè)值得深究的問題[6,7].對(duì)交通標(biāo)志識(shí)別最早展開的研究可回歸到上個(gè)世紀(jì)80年代.日本大阪大學(xué)推出一套交通標(biāo)志自動(dòng)識(shí)別系統(tǒng)[8],但對(duì)路況多樣化環(huán)境下的交通標(biāo)志識(shí)別準(zhǔn)確率仍需提高.Tr?snea 等[9]采用思路簡(jiǎn)單,計(jì)算量小的模板匹配來實(shí)現(xiàn)交通標(biāo)志的識(shí)別,但是在實(shí)際場(chǎng)景應(yīng)用中實(shí)時(shí)識(shí)別性不強(qiáng).Armingol 等[10]提出基于HIS 的紅色分割方法.王洋[11]提出基于HSV 的多閥值分割方法.Gao 等[12]提出了一種在魯棒性上較優(yōu)的CIECAM97顏色空間分割方法,但不足之處是運(yùn)算量大.隨著無人駕駛的發(fā)展,交通標(biāo)志檢測(cè)的研究已經(jīng)取得眾多成果,但是實(shí)時(shí)性和準(zhǔn)確性仍然有很大提升的空間,因此進(jìn)行研究很有必要.
交通標(biāo)志的檢測(cè)需要對(duì)圖像進(jìn)行預(yù)處理,使得圖像增強(qiáng),為檢測(cè)提供高質(zhì)量的圖像[13,14].本文先對(duì)圖像采用了直方圖均衡化、BM3D 預(yù)先處理的方法,再基于YOLOv2 算法,對(duì)網(wǎng)絡(luò)頂層卷積層輸出特征圖劃分更細(xì),得到高細(xì)粒度的特征圖來檢測(cè)小尺寸的交通標(biāo)志,網(wǎng)絡(luò)結(jié)構(gòu)及損失函數(shù)優(yōu)化得到R-YOLOv2,并通過實(shí)驗(yàn)驗(yàn)證了R-YOLOv2 的準(zhǔn)確性以及實(shí)時(shí)性.
在具有多因素影響的自然場(chǎng)景下取得的交通標(biāo)志,例如:不同光照條件的問題,背景復(fù)雜、遮擋、運(yùn)動(dòng)模糊等,為了盡可能提高檢測(cè)效果.所以對(duì)圖像進(jìn)行預(yù)先處理來增強(qiáng)圖像品質(zhì)是非常有必要的.
(1)彩色圖像的直方圖均衡化
在眾多的圖像增強(qiáng)處理方法中,圖像直方圖均衡化是被應(yīng)用最廣泛的,也是效果最突出的,原因在于其簡(jiǎn)易性和高效性,很好的提高圖像的亮度和清晰度[15].RGB 圖像可以拆分為3 個(gè)灰度圖像,彩色圖像直方圖均衡化即為對(duì)模型的三分量R,G,B 分別進(jìn)行處理.
將原圖的每個(gè)灰度等級(jí)根據(jù)灰度變換表變換成一個(gè)新的灰度等級(jí),再將這些變換后的灰度級(jí)組合起來,即完成R 分量的均衡化圖像,G 分量和B 分量的灰度化同R 分量的灰度化,將三者單獨(dú)處理的結(jié)果組合成彩色圖,得到彩色圖像均衡后的效果圖[16].如圖1所示.
圖1 彩色直方圖均衡化
(2)圖像降噪
NLM 算法采用的是inter-patchcorrelation,但Wavelet shrinkage 采用的卻是intra-patch correlation[17].由于兩種算法的去噪效果都不錯(cuò),所以本文使用的是將兩者結(jié)合起來的去噪算法BM3D.如圖2所示是算法BM3D 的去噪步驟.
圖2 BM3D 的去噪步驟
BM3D 算法主要通過2 個(gè)步驟實(shí)現(xiàn)圖像去噪:步驟1 先在噪聲圖像中尋找相似塊,運(yùn)用硬閥值定義相似性,然后疊加成不同的塊.再對(duì)不同的組塊做3D 線性變換,以及變換譜的收縮,最后逆變換得到塊估計(jì).根據(jù)前面得到的補(bǔ)丁質(zhì)量對(duì)所有塊輸入不同的權(quán)值,其次對(duì)其加權(quán)平均操作.聚合是利用圖像的冗余性進(jìn)行復(fù)原.步驟2 和步驟1 類似,不同之處有兩點(diǎn),步驟2 對(duì)比的是過濾后的補(bǔ)丁而不是原始補(bǔ)丁,在處理新的3D 組塊時(shí)將硬閥值處理換成維納過濾.步驟2 相比較步驟1 恢復(fù)圖像細(xì)節(jié)更多,去噪性能更好.
常用去噪算法有中值濾波、均值濾波、BM3D 濾波,運(yùn)用Matlab 對(duì)3 種去噪方法進(jìn)行比較,去噪結(jié)果如表1所示.
表1 3 種算法信噪比
從表1的數(shù)據(jù)可以看出BM3D、均值濾波、中值濾波的信噪比提高量依次遞減.其中,BM3D 濾波的信噪比提高量最大,BM3D 的濾波效果最好.BM3D 去噪效果對(duì)比如圖3所示.
(3)實(shí)驗(yàn)驗(yàn)證
為了表明直方圖均衡化和去噪算法對(duì)檢測(cè)結(jié)果的影響,利用控制變量法對(duì)YOLOv2 和R-YOLOv2 模型進(jìn)行預(yù)處理前后的對(duì)比實(shí)驗(yàn),檢測(cè)結(jié)果如表2所示.
表2 去噪算法對(duì)檢測(cè)效果對(duì)比
由于噪聲和光照不均衡都會(huì)對(duì)圖像造成影響,從上表可以看出加入直方圖均衡化預(yù)處理對(duì)YOLOv2和R-YOLOv2 的mAP 分別提高0.4 和0.3,FPS 均未改變,BM3D 預(yù)處理對(duì)YOLOv2 和R-YOLOv2 的mAP 分別提高0.7 和0.9,對(duì)FPS 都提高了1,驗(yàn)證了加入預(yù)處理對(duì)檢測(cè)算法有著一定程度的提高,因此在檢測(cè)前進(jìn)行預(yù)處理是很有必要.
交通標(biāo)志識(shí)別出現(xiàn)頻率較高的檢測(cè)算法有兩個(gè)大的方向(圖4),即傳統(tǒng)目標(biāo)檢測(cè)算法和回歸的深度學(xué)習(xí)算法.對(duì)于利用候選區(qū)域來檢測(cè)交通標(biāo)志的準(zhǔn)確度較高,而基于深度學(xué)習(xí)的回歸法對(duì)目標(biāo)檢測(cè)速度更快,兩者各有優(yōu)勢(shì)[18].
圖4 目標(biāo)檢測(cè)算法分類
兩大算法主體想法大都相同,即都是利用算法將原始圖像分割成許多有關(guān)或者無關(guān)候選區(qū)域,再將特征向量提取、輸入、分類.由于交通標(biāo)志的實(shí)時(shí)識(shí)別是無人駕駛的核心部分,因此兩者算法對(duì)比,為了達(dá)到實(shí)時(shí)性要求,基于回歸的目標(biāo)檢測(cè)算法更具有優(yōu)勢(shì).
(1)基本原理
YOLOv2 算法借鑒了R-CNN 系列算法采用候選區(qū)域搭建檢測(cè)框架,把目標(biāo)檢測(cè)問題處理成回歸問題,用網(wǎng)絡(luò)模型實(shí)現(xiàn)端到端的目標(biāo)檢測(cè),其網(wǎng)絡(luò)結(jié)構(gòu)如圖5所示.
YOLOv2 算法模型是將輸入圖片劃分為S×S的網(wǎng)格,且S為劃分的網(wǎng)格數(shù),目標(biāo)中心的檢測(cè)由所劃分的每個(gè)格子來負(fù)責(zé),所有格子所含目標(biāo)的邊界框(bounding boxes)、定位置信度(confidence)以及所有類別概率向量(class probability map)通過一次預(yù)測(cè)來對(duì)圖像進(jìn)行目標(biāo)分類,結(jié)合多次訓(xùn)練,找到最優(yōu)權(quán)值,最后得到圖像的目標(biāo)邊框.但是YOLOv2 算法存在以下兩個(gè)缺點(diǎn):①在尺度上的泛化能力較差.由于網(wǎng)格單元是固定的正方形,對(duì)于相同種類目標(biāo)顯露嶄新、少見的長(zhǎng)寬關(guān)系時(shí),標(biāo)準(zhǔn)的變化相較于推測(cè)的框線來更為敏銳.②對(duì)于小型的目標(biāo),由于實(shí)踐中大型目標(biāo)和小型目標(biāo)的損失值存在不一樣的效果,YOLOv2 的損失函數(shù)對(duì)小尺寸的檢測(cè)和大尺寸的檢測(cè)結(jié)合在一起計(jì)算,使得小型目標(biāo)損失一部分精度,檢測(cè)失敗.針對(duì)這兩個(gè)缺點(diǎn),在此提出R-YOLOv2 模型:①在YOLOv2 淺層結(jié)構(gòu)中加入多個(gè)1×1 卷積層,以進(jìn)一步簡(jiǎn)化網(wǎng)絡(luò)結(jié)構(gòu)以及減少參數(shù)數(shù)量,以此增加網(wǎng)絡(luò)的泛化能力和跨通道學(xué)習(xí)能力;②改進(jìn)原網(wǎng)絡(luò)的損失函數(shù),采用歸一化及根據(jù)各自的損失部分情況給定權(quán)重值使網(wǎng)絡(luò)適用于小目標(biāo)檢測(cè).
圖5 YOLOv2 網(wǎng)絡(luò)結(jié)構(gòu)圖
(2)網(wǎng)絡(luò)結(jié)構(gòu)
整個(gè)交通標(biāo)志識(shí)別網(wǎng)絡(luò)模型如表3所示.
表3 交通標(biāo)志識(shí)別網(wǎng)絡(luò)模型
對(duì)R-YOLOv2 模型,該網(wǎng)絡(luò)結(jié)構(gòu)使用12 個(gè)卷積層,而相對(duì)應(yīng)的卷積核尺寸采用3×3 和1×1 這兩種尺寸,設(shè)計(jì)將網(wǎng)絡(luò)頂層卷積層輸出特征圖劃分更細(xì),以得到高細(xì)粒度的特征圖來檢測(cè)小尺寸的交通標(biāo)志,提高對(duì)小目標(biāo)的檢測(cè)率.對(duì)每個(gè)卷積層后接著池化層,1×1 的卷積層以及無量綱化層,對(duì)特征圖利用無量綱化層提升網(wǎng)絡(luò)學(xué)習(xí)新樣本能力.利用3 層全連接完成交通標(biāo)志的類別判定以及定位.模型中passthrough 層是把之前高解析度的特征圖注入,再連結(jié)到之后的低解析度的特征圖上.前面的特征圖維數(shù)相當(dāng)于之后的2 倍,passthrough 層挨個(gè)抽取上一層2×2 的特征圖,接著將特征圖維數(shù)轉(zhuǎn)變成通道維數(shù),passthrough 層的池化處理變成拆分處理,然后對(duì)此處理后的特征圖做卷積預(yù)測(cè),提高網(wǎng)絡(luò)的精度.整個(gè)交通標(biāo)志識(shí)別網(wǎng)絡(luò)模型如表3所示.
(3)損失函數(shù)
YOLOv2 原損失函數(shù)分為3 部分,即位置損失函數(shù)計(jì)算公式:
預(yù)測(cè)損失函數(shù)公式:
類別損失函數(shù)公式:
YOLOv2 的損失函數(shù)即為:
表示為第i個(gè)網(wǎng)格對(duì)第j個(gè)出現(xiàn)目標(biāo)對(duì)象做出的預(yù)測(cè),(xi,yi,wi,hi)表示目標(biāo)當(dāng)前位置相應(yīng)的坐標(biāo),wi,hi表示邊框的寬度和高度,表示預(yù)標(biāo)注目標(biāo)的坐標(biāo),Ci為第i個(gè)網(wǎng)格預(yù)先得到的目標(biāo)種類,為第i個(gè)網(wǎng)格預(yù)標(biāo)注所預(yù)先得到的目標(biāo)種類,B為的單個(gè)網(wǎng)格預(yù)先得到的邊框量,S為未定義網(wǎng)格個(gè)數(shù).
但YOLOv2 損失函數(shù)有3 個(gè)問題:(1)對(duì)小目標(biāo)的損失置信度相比較大目標(biāo)檢測(cè)容易被忽略;(2)定位損失和分類損失權(quán)重相同,而實(shí)際檢測(cè)其實(shí)并不相同;(3)不包含目標(biāo)對(duì)象網(wǎng)絡(luò)對(duì)梯度更新的貢獻(xiàn)度將遠(yuǎn)大于包含目標(biāo)對(duì)象網(wǎng)格對(duì)梯度更新的貢獻(xiàn)度,這會(huì)使網(wǎng)絡(luò)訓(xùn)練十分不穩(wěn)定.
解決這3 個(gè)問題的方法:(1)采用歸一化可以提高對(duì)小比例的寬度w和高度h的關(guān)注度;(2)在目標(biāo)預(yù)測(cè)時(shí),令置信度評(píng)分的損失比例λ1為5;(3)當(dāng)要檢測(cè)的邊框內(nèi)未有目標(biāo)時(shí),則令損失比例λ2為0.5.同時(shí),包含目標(biāo)對(duì)象邊框和類別預(yù)測(cè)的損失權(quán)重為1.因此改進(jìn)后的損失函數(shù)如式(5)所示.
(1)網(wǎng)絡(luò)模型訓(xùn)練過程
通過帶標(biāo)簽的數(shù)據(jù)集對(duì)模型進(jìn)行多次訓(xùn)練從而使得網(wǎng)絡(luò)模型具有高識(shí)別性能,此過程為網(wǎng)絡(luò)模型的訓(xùn)練.實(shí)驗(yàn)環(huán)境硬件采用的是CPU:i7,試驗(yàn)平臺(tái):Tensorflow,OpenCV,Python.
對(duì)于交通標(biāo)志識(shí)別迄今為止還沒有開放源代碼標(biāo)示注明的交通標(biāo)志數(shù)據(jù)集合,因此需要對(duì)其進(jìn)行標(biāo)示注明,方便后續(xù)的識(shí)別.結(jié)合CCTSD 數(shù)據(jù)集[19]和TT100K 數(shù)據(jù)集制作新的數(shù)據(jù)集,針對(duì)不同模型訓(xùn)練測(cè)試.數(shù)據(jù)集13 748 張訓(xùn)練集,3072 張做測(cè)試集,采用Labellmg 進(jìn)行標(biāo)注,生成XML 文件.XML 文件內(nèi)的信息統(tǒng)一記錄到csv 表格,從csv 表格中創(chuàng)建TFRecords格式.將標(biāo)注好的圖片作為訓(xùn)練樣本,模型訓(xùn)練時(shí)每隔10 批訓(xùn)練樣本改變輸入圖片大小,進(jìn)行多尺度訓(xùn)練.
由于數(shù)據(jù)集中僅標(biāo)注了3 類交通標(biāo)志,因此在損失函數(shù)中類別取3.訓(xùn)練中設(shè)置邊界框數(shù)k=5,S=19,輸出19×19×40 的特征圖.在訓(xùn)練過程中學(xué)習(xí)率初始值為0.0001,觀察損失的下降率,當(dāng)損失值穩(wěn)定在大于1的時(shí)候?qū)W(xué)習(xí)率改為0.001,使得網(wǎng)絡(luò)模型的收斂速度提升.通過設(shè)定閾值t,來評(píng)定是否采用這些圖像的候選框,t則是結(jié)合位置信息和類別的總置信度分?jǐn)?shù).表4所示為不同閾值t下R-YOLOv2 模型的精度和召回率,可知在閾值和精確率成正比,和召回率成反比,且在t=0.4 或0.5 時(shí),模型性能較優(yōu).
表4 不同時(shí)間閾值下的精確度和召回率數(shù)值
采用相同網(wǎng)絡(luò)結(jié)構(gòu)除卻loss 模型,且采用相同數(shù)據(jù)集對(duì)模型進(jìn)行訓(xùn)練測(cè)試.YOLOv2 采用的原損失函數(shù),R-YOLOv2 采用改進(jìn)的損失函數(shù),YOLOv3-tiny 模型就是在YOLOv3 的基礎(chǔ)上去掉了一些特征層,只保留了2 個(gè)獨(dú)立預(yù)測(cè)分支,且相對(duì)簡(jiǎn)化,因此采用YOLOv3-tiny 作為對(duì)比模型,其損失函數(shù)變化如圖6所示.
對(duì)兩個(gè)損失函數(shù)模型進(jìn)行訓(xùn)練,初訓(xùn)練時(shí)前面的損失值偏大是由于剛開始訓(xùn)練學(xué)習(xí)到的準(zhǔn)確率不高,隨著訓(xùn)練次數(shù)的增加,模型的性能越來越好.如圖7所示是YOLOv2、YOLOv3 和R-YOLOv2 模型訓(xùn)練損失函數(shù)變化曲線圖,由圖6可以看出對(duì)損失函數(shù)的改進(jìn)使得模型性能有一定程度的提升,即R-YOLOv2 的損失函數(shù)模型優(yōu)于YOLOv2,且優(yōu)于YOLOv3 的損失函數(shù).
(2)網(wǎng)絡(luò)模型的測(cè)試
為了測(cè)試模型的準(zhǔn)確性,使用訓(xùn)練好的模型對(duì)3072 張從實(shí)景中選取的圖片進(jìn)行識(shí)別,目標(biāo)檢測(cè)以研究重點(diǎn)不同而有多種評(píng)價(jià)指標(biāo),在此采用平均精度均值(mean Average Precision,mAP)來描述檢測(cè)精度,每秒幀數(shù)(Frames Per Second,FPS)描述檢測(cè)速率,統(tǒng)計(jì)檢測(cè)的結(jié)果如表5所示,準(zhǔn)確率的變化曲線見圖7.
圖6 模型訓(xùn)練損失函數(shù)對(duì)比變化曲線圖
圖7 準(zhǔn)確率變化曲線圖
表5 模型性能比較
由表5可以看出R-YOLOv2 模型性能優(yōu)于現(xiàn)有算法YOLOv2,YOLOv3,且較于YOLOv2 準(zhǔn)確率提高了8.7%.檢測(cè)速率提高了15 FPS.較于YOLOv3 準(zhǔn)確率提高了4.2%.檢測(cè)速率提高了3 FPS,表明網(wǎng)絡(luò)結(jié)構(gòu)的改進(jìn)對(duì)mAP 和FPS 有著提升.
由于剛開始學(xué)習(xí)率低,圖7可以看出改進(jìn)后的模型R-YOLOv2 較YOLOv2 在初始準(zhǔn)確率都不高,且基本一致,在迭代值達(dá)到6000 時(shí),R-YOLOv2 與YOLOv2差距出現(xiàn),達(dá)到15 000 次時(shí)兩者的準(zhǔn)確率變換趨于平緩.在改進(jìn)后的網(wǎng)絡(luò)模型R-YOLOv2 較于YOLOv2,YOLOv3 的準(zhǔn)確率有一定程度的提高,驗(yàn)證了網(wǎng)絡(luò)結(jié)構(gòu)的改進(jìn)對(duì)準(zhǔn)確率的提升.
如圖8所示是部分圖像檢測(cè)結(jié)果,圖8(a)、8(c)兩圖是采用原始模型檢測(cè)的結(jié)果圖,圖8(b)、8(d)兩圖是采用改進(jìn)后的模型檢測(cè)的結(jié)果圖.結(jié)果表明由于RYOLOv2 將網(wǎng)絡(luò)頂層卷積層輸出特征圖劃分更細(xì),損失函數(shù)加入歸一化和權(quán)值的改變,且使用高細(xì)粒度的特征圖來檢測(cè)小尺寸的交通標(biāo)志,因此較于YOLOv2模型,R-YOLOv2 模型對(duì)小目標(biāo)的檢測(cè)更優(yōu).
圖8 部分圖像測(cè)試結(jié)果
為更好的分析測(cè)試結(jié)果,設(shè)定閾值t=0.5,以保證較高的準(zhǔn)確精度.如表6所示即為3 種方法的分類結(jié)果對(duì)比,時(shí)間為檢測(cè)單張圖片時(shí)間的均值.
從表6和可以看出得到的指示標(biāo)志和警告標(biāo)志的召回率最好,達(dá)到了75.23%和83.41%,且可以看出改進(jìn)的模型R-YOLOv2 比YOLOv2 和YOLOv3 都檢測(cè)速率都快,YOLOv2 模型識(shí)別每張圖片需0.161 s;YOLOv3 模型識(shí)別每張圖片需0.041 s,而R-YOLOv2模型識(shí)別每張圖片僅需0.016 s,上述結(jié)果顯示在網(wǎng)絡(luò)結(jié)構(gòu)中加入1×1×64 卷積層,以及簡(jiǎn)化網(wǎng)絡(luò)結(jié)構(gòu)以及減少參數(shù)數(shù)量,使得網(wǎng)絡(luò)的泛化能力和檢測(cè)速率都有所提升.
表6 3 種方法分類結(jié)果比較
為了進(jìn)一步具體的表明3 種模型的性能,進(jìn)行精準(zhǔn)率(P)和召回率(R)曲線圖繪制來對(duì)實(shí)驗(yàn)結(jié)果進(jìn)一步評(píng)價(jià),因此3 個(gè)超類別的P-R 曲線如圖9所示.
圖9 3 個(gè)超分類P-R 曲線圖
AUC 值表明的是線下面積值,從圖9可以看出RYOLOv2 模型較于YOLOv2 模型和YOLOv3 模型在指示、禁止、警告中的AUC 值最大,表明R-YOLOv2模型的性能比YOLOv2 模型和YOLOv3 模型更穩(wěn)定.
從以上結(jié)果分析驗(yàn)證了對(duì)模型的改進(jìn)有效提升了模型檢測(cè)的準(zhǔn)確率和速率.
本文先對(duì)目標(biāo)采用了直方圖均衡化、BM3D 等一系列預(yù)處理,再改進(jìn)了YOLOv2 模型以及其損失函數(shù),提高了模型的檢測(cè)性能,主要是對(duì)網(wǎng)絡(luò)頂層卷積層輸出特征圖劃分更細(xì),利用高細(xì)粒度的特征圖來檢測(cè)小尺寸的交通標(biāo)志,模型損失函數(shù)加入了歸一化處理提高泛化能力和對(duì)小目標(biāo)的檢測(cè),以及將passthrough 層的池化處理改為拆分對(duì)準(zhǔn)確率提高了8.7%,并簡(jiǎn)化了網(wǎng)絡(luò)結(jié)構(gòu),運(yùn)算速率提高了15 FPS.本文通過將訓(xùn)練好的模型通過Ttensorflow 進(jìn)行實(shí)驗(yàn),結(jié)果表明該模型識(shí)別率和實(shí)時(shí)性優(yōu)于現(xiàn)有模型.但有些工作仍需完善,未能通過對(duì)視頻的實(shí)際操作測(cè)試,以及實(shí)車實(shí)驗(yàn),后續(xù)將其重點(diǎn)研究放在與實(shí)車結(jié)合部分上.