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