黃開啟,劉小榮,錢艷群,黃茂云
(江西理工大學 電氣工程與自動化學院,江西 贛州 341000)
高級駕駛輔助系統(tǒng)(ADAS)旨在幫助駕駛員完全避免事故,進而大幅減少道路交通事故。車輛檢測是ADAS的重要組成部分,在檢測中準確知道并精準定位目標車輛,這對避免交通事故的發(fā)生起著極其重要的作用。
傳統(tǒng)車輛檢測算法采用滑動窗口的策略對整幅圖像進行遍歷,判斷車輛可能出現(xiàn)的位置,接著人工選取某個特征,對目標進行識別。例如劉家旭等[1]提出基于方向梯度直方圖(HOG)特征的車輛檢測算法,周行等[2]提出基于HOG特征和局部二值模式(LBP)特征融合檢測算法。傳統(tǒng)算法主要存在兩個問題:一是基于滑動窗口的區(qū)域選擇沒有針對性,冗余窗口太多;二是由于目標的形態(tài)、光照、背景等多樣性,手工設計的特征對于多樣性的變化魯棒性較差。隨著深度學習的快速發(fā)展,卷積神經(jīng)網(wǎng)絡在計算機視覺領(lǐng)域取得了巨大成功,目前基于卷積神經(jīng)網(wǎng)絡的目標檢測算法主要分為兩類:一類是以 YOLO[3]、SSD[4]、RefineDet[5]等為代表的分類回歸方法,另一類是以R-CNN[6]、Fast R-CNN[7]、Faster R-CNN[8]等為代表的基于候選框的兩階段方法。其中YOLOv3[9]作為性能較為出色的目標檢測算法被廣泛應用到車輛檢測任務中。馮加明等[10]提出通過刪減部分殘差以降低卷積層通道數(shù)并通過k-均值聚類與手動調(diào)節(jié)相結(jié)合的方式提高檢測的精度;杜金航等[11]、崔文靚等[12]和胡貴桂[13]利用k-均值重新聚類選取錨點預測邊界框,提高檢測速度與定位精度;吳仁彪等[14]提出利用卷積神經(jīng)網(wǎng)絡的去霧算法對采集的圖片進行預處理。汪昱東等[15]通過在檢測網(wǎng)絡中加入物濃度判斷模塊來提高網(wǎng)絡的適應性和魯棒性。
以上方法主要存在以下兩個問題:一是這些方法大多都是通過k-均值重新聚類錨框的方式側(cè)向提高定位準確性,而分類置信度與定位精度并不是強關(guān)聯(lián),所以它不能夠保證檢測框的可靠性;二是目標檢測的場景均為晴朗的白天,少有針對霧霾天氣進行檢測的研究。針對問題一,以YOLOv3為基礎(chǔ)網(wǎng)絡,加入正態(tài)分布模型,將標準差作為定位置信度用來定位,并改進非極大值抑制,引進軟化非極大值抑制降低漏檢率從而提高定位精度。針對問題二,霧霾天氣存在圖像退化嚴重,對比度低,細節(jié)信息有損失等問題,嚴重影響室外視覺檢測,筆者添加圖像去霧預處理操作,采用單尺度retinex 去霧算法對原圖進行圖像增強[16],以提高圖像對比度。
由于霧與霾有著本質(zhì)的不同,霾的物理模型更加復雜,基于大氣散射模型的圖像復原方法不適用于霧霾環(huán)境下的去霧處理。針對此問題本研究中通過圖像增強的方式共選取了單尺度retinex去霧算法、多尺度retinex去霧算法以及McCann retinex算法3種算法對圖像進行去霧處理并對去霧效果進行對比。
首先采用單尺度 retinex 算法(single scale retinex, SSR)、多尺度retinex算法(multi scale retinex, MSR)和迭代 retinex算法(McCann retinex)分別對圖像進行增強處理,增強效果如下圖1所示,可以看出SSR算法表現(xiàn)更好,所以本文中采用SSR算法對圖像進行去霧處理。
圖1 圖像增強效果對比圖Fig. 1 Contrast of image enhancement effect
YOLOv3采用了全新的網(wǎng)絡架構(gòu)Darknet-53(圖2),它包含了大量的3×3以及1×1卷積層,通過引用殘差模塊[17]解決隨著網(wǎng)絡層數(shù)加深模型在訓練過程中產(chǎn)生梯度爆炸以及梯度消失的問題。YOLOv3使用了上采樣操作,并將大特征圖和小特征圖上采樣后的特征圖進行拼接,使網(wǎng)絡能夠擁有既包含豐富的高層抽象特征又包含精確的位置信息特征的融合特征層。YOLOv3借鑒了FPN(金字塔網(wǎng)絡)[18]的思想,在3種不同的規(guī)模上進行預測,檢測結(jié)果分別會有3個不同尺度的輸出,它包含了目標的坐標位置,目標是正樣本還是負樣本,目標屬于那個類別的置信度,對于每個尺度的分支而言,在每個網(wǎng)格中會預測出3個結(jié)果(因為每個尺度下會有3個錨框)。最后將3個尺度的結(jié)果合并進行非極大值抑制(NMS)后輸出最終的檢測結(jié)果。
圖2 YOLOv3網(wǎng)絡結(jié)構(gòu)圖Fig. 2 YOLOv3 network structure diagram
原始算法中目標檢測框的輸出是以分類置信度為依據(jù)的,將擁有高的分類分數(shù)的候選包圍框作為結(jié)果輸出,實際上分類置信度與定位精度并不是絕對地成正比關(guān)系,選用分類置信度為依據(jù)并不能保證檢測框的正確可靠。原始算法中目標框只有位置信息而沒有概率值,檢測框的輸出無法以定位置信度作為依據(jù)。本研究中提出通過正態(tài)分布來對網(wǎng)絡輸出進行建模,將通過正態(tài)分布產(chǎn)生的標準差作為定位置信度。
(1)
(2)
(3)
與原YOLOv3算法一樣,這里需要對μtx和μty進行sigmoid操作,將值限定在(0,1)范圍內(nèi)。如果不做約束,預測的邊界框容易向任意方向偏移,會導致每個位置預測的邊界框可能落在圖片的任意位置,這就會導致模型訓練不穩(wěn)定,很難得到正確的偏移量;μtw和μth的處理與YOLOv3相同,不需要通過sigmoid操作,因為長寬的尺度變化可能為1。此外,新增的標準差σtx、σty、σtw和σth也需要通過sigmoid將值限定在(0,1)范圍內(nèi)。標準差表明了坐標的可靠程度,0表示可靠,1表示不可靠,這是因為正態(tài)分布中,方差越大,分布的變化越大,包圍框的估計結(jié)果越不可靠。
原始的YOLOv3進行邊界框回歸時,由于網(wǎng)絡預測輸出就是坐標本身,計算梯度時就利用了均方誤差的方式。本研究中改進的YOLOv3輸出的是均值和方差,所以使用了負對數(shù)似然損失函數(shù)。改進的邊界框損失函數(shù)L為:
(4)
式中m為網(wǎng)格數(shù)量。
原算法中選擇檢測框時使用NMS保留得分最高的包圍框并將與當前預測框重疊較多的預測框視作冗余,即將所有IOU(intersection-over-union,交并比)大于閾值的框全部刪除。但是對稠密物體進行檢測時,如果同類的兩個目標距離較近,檢測時有可能出現(xiàn)誤以為是同一個物體而造成漏檢的問題。所以針對這個問題對原始的NMS進行了改善。不是將IOU大于閾值的框刪除,而是將IOU大于閾值的框通過高斯加權(quán),降低其置信度。改進后的函數(shù)如下:
(5)
式中:si為第i個檢測框的高斯權(quán)重函數(shù);M為當前得分最高框,bi為待處理框,bi和M的IOU越大,最后得到的分類分數(shù)就越低;D為放最終檢測框的集合。
預測框的輸出要以定位置信度為依據(jù),對所有與M的IOU大于一定重疊度閾值的候選包圍框使用加權(quán)平均操作更新坐標位置,從而達到提高定位精度的目的。公式如下:
(6)
改進后的YOLOv3檢測數(shù)據(jù)如表1所示。
表1 單類別目標IOU檢測結(jié)果對比
改進后的YOLOv3檢測效果如圖3所示。
圖3 圖像檢測效果對比圖Fig. 3 Comparison of image detection effects
由表1可以看到改進的YOLOv3與原算法相比IOU提高了0.03,表明改進后的算法在定位精度上有所提升。由圖3可以看到改進的算法與YOLOv2算法相比可以檢測出更多目標車輛,與原YOLOv3算法相比,檢測框包圍目標更加精確。由圖3對比可以看到第一輛白色轎車的檢測框,很明顯改進的YOLOv3算法在定位上更加精確。原始的YOLOv3算法中多目標聚集在一起的時候會出現(xiàn)了誤檢的情況,如上圖中的左邊第2輛轎車,原YOLOv3算法中出現(xiàn)了2個檢測框,顯示此處有2輛車,很明顯這是誤檢,而通過改進的YOLOv3算法準確識別出了它是一輛車。經(jīng)過多次連續(xù)檢測,改進前后的算法在檢測速度上基本沒有改變,檢測一張圖片的時間基本都在0.19 s左右,這表明了改進后的YOLOv3算法沒有影響檢測的速度。
實驗測試在darknet框架下進行,訓練及測試的計算機硬件配置為Intel(R) Core(TM)i5-8625U CPU@1.60GHz,GPU為NVIDIA GeForce MX250,操作系統(tǒng)為Ubuntu18.04;mAP的計算采用voc2007的方式,閾值設置為0.5。
本實驗中用于目標圖像檢測的標準化數(shù)據(jù)集是從RESIDE數(shù)據(jù)集中抽取的有霧圖片與清晰圖片共計300張作為訓練集,圖片主要針對交通道路上容易出現(xiàn)的人、小型汽車、摩托車、自行車以及大型公共汽車5大類進行訓練。整個訓練過程使用批量隨機梯度下降法來優(yōu)化損失函數(shù),訓練大約迭代了55 000次,實驗動量系數(shù)設為0.9,初始學習率設為0.01,權(quán)重衰減值設為0.000 5,批量大小設為32。由圖4可以看出迭代至40 000次之后,損失函數(shù)明顯下降,40 000次之后下降逐漸變得緩慢,最后損失函數(shù)穩(wěn)定在0.5左右。
圖4 損失函數(shù)圖Fig. 4 Loss function diagram
為了驗證本文算法的有效性,首先將改進的YOLOv3結(jié)合NMS算法與原YOLOv3算法進行對比,然后再分別將不同去霧處理算法結(jié)合本研究中改進的目標檢測算法與原YOLOv3算法進行對比,實驗結(jié)果如表2所示。由表2可以得出以下結(jié)論:在不改變分類精度的前提下通過引入定位置信度以后,目標的定位精度提高了0.1%;經(jīng)過本文算法-SSR檢測得到的平均精度相對于原YOLOv3模型提升了0.44%,說明本文設計的檢測算法較原YOLOv3算法檢測效果更好。
表2 不同方法在數(shù)據(jù)集上的檢測結(jié)果
為了測試實際霧天檢測效果,設計了針對3種去霧算法的實際效果對比實驗,實驗得到的檢測效果如圖5所示。從圖中可以看出,本研究中設計的改進算法與原算法相比,在霧霾天氣情況下可以檢測到更多目標,目標定位也更加精確。
圖5 霧霾天氣圖像檢測效果對比圖Fig. 5 Comparison of haze-weather image detection effects
為了提高霧霾天氣車輛定位的準確性,通過改進YOLOv3的定位方法,使用標準差替代分類分數(shù)作為定位置信度,并通過單尺度retinex算法對圖像進行預處理。實驗結(jié)果表明,通過以上方法得到的檢測結(jié)果對不同場景環(huán)境均可保證較高的檢測準確率。但是本文中提出的算法仍然存在一些問題,如針對嚴重遮擋的目標的檢測存在定位不精確,以及對經(jīng)過去霧處理后的圖片仍存在一些目標沒有識別的情況,這將是后期工作需要改進的重點方向。