胡超超 劉軍 張凱 高雪婷
(江蘇大學(xué),鎮(zhèn)江 212013)
主題詞:YOLO-R網(wǎng)絡(luò) 卡爾曼濾波 目標(biāo)檢測 深度學(xué)習(xí)
行人、騎行者作為道路交通環(huán)境中的弱勢群體,其安全問題不容小覷,建立完善的行人和騎行者檢測系統(tǒng)已成為研究熱點。另外,深度神經(jīng)網(wǎng)絡(luò)在機器視覺領(lǐng)域表現(xiàn)出優(yōu)異的性能,已獲得學(xué)者們廣泛的關(guān)注,將深度學(xué)習(xí)用于駕駛輔助系統(tǒng)正成為發(fā)展趨勢。本文以車輛前方行人、自行車作為研究對象,開展了基于深度學(xué)習(xí)的目標(biāo)檢測及跟蹤算法的研究。
YOLO(You Only Look Once)v2網(wǎng)絡(luò)相比于YOLO網(wǎng)絡(luò),在檢測率和檢測速度上均有大幅提高,為使網(wǎng)絡(luò)模型更適合檢測行人和騎行者目標(biāo),本文進(jìn)一步優(yōu)化了YOLOv2網(wǎng)絡(luò):
a.使用K-means聚類的方法對樣本集中標(biāo)注的目標(biāo)矩形框進(jìn)行維度聚類,確定anchor boxes的初始規(guī)格和數(shù)量。YOLOv2中anchor參數(shù)是通過在Pascal VOC數(shù)據(jù)集中聚類得到的,涉及種類眾多,不適合用于訓(xùn)練檢測行人和騎行者的模型,因此本文在自制的行人和騎行者樣本庫中重新聚類,獲得anchor參數(shù)。
b.YOLOv2網(wǎng)絡(luò)通過Passthrough層將淺層特征按不同通道數(shù)進(jìn)行重組,再與深層特征結(jié)合,得到細(xì)粒度特征。但當(dāng)小目標(biāo)成群出現(xiàn)時,即使使用了細(xì)粒度特征,檢測效果仍然不佳[1]。為了解決該問題,在原有YOLOv2網(wǎng)絡(luò)結(jié)構(gòu)的基礎(chǔ)上,去掉Passthrough層,增加殘差網(wǎng)絡(luò)(Residual Network,ResNet),構(gòu)成YOLO-R網(wǎng)絡(luò)。修改后的網(wǎng)絡(luò)結(jié)構(gòu)不僅實現(xiàn)了淺層外觀信息與深層語義信息的進(jìn)一步融合,提高了網(wǎng)絡(luò)對群簇小目標(biāo)的檢測性能,而且降低了網(wǎng)絡(luò)的訓(xùn)練難度,防止出現(xiàn)梯度消失現(xiàn)象。
為了加快收斂速度,提高目標(biāo)檢測的位置精度,YOLOv2中使用K-means方法對樣本集中的目標(biāo)真實框進(jìn)行聚類分析,得到適合樣本集的最優(yōu)anchor的尺寸和個數(shù)。
K-means聚類通常將歐式距離作為評價相似性的準(zhǔn)則函數(shù),但本文需對候選框的尺寸進(jìn)行聚類,如果采用距離評價指標(biāo),大框會比小框產(chǎn)生更大的誤差,因此改用預(yù)測框與真實框的交并比(Intersection Over Union,IOU)來反映兩者的差異,IOU越大,兩者的相似度越高。聚類的準(zhǔn)則函數(shù)為:
式中,k、ni分別為聚類數(shù)和第i個聚類中心的樣本集數(shù);box、centroidi分別為真實框和聚類得到的矩形框;IOU(box,centroidi)為box、centroidi面積的交并比。
聚類數(shù)k對聚類效果影響較大,不合理的k值會導(dǎo)致K-means算法最終輸出局部最優(yōu)而非全局最優(yōu)解。為了解決該問題,本文根據(jù)聚類算法中類內(nèi)相似度最大差異度最小和類間差異度最大相似度最小的基本原則[2],提出了基于IOU的評價函數(shù)F。F越小,說明聚類效果越好,其定義為:
同時,k值也影響模型復(fù)雜度,其值越大,模型越復(fù)雜。因此,k值的選擇必須綜合考慮模型復(fù)雜度S和評價函數(shù)F。本文用416像素×416像素的圖片需要預(yù)測的候選框數(shù)目表示模型復(fù)雜度S,S=13×13×k。由于這兩個評價指標(biāo)具有不同的量綱,因此先使用minmax標(biāo)準(zhǔn)化方法歸一化數(shù)據(jù),再作出S、F與k的關(guān)系圖,結(jié)果如圖1所示,在平衡了模型復(fù)雜度和聚類效果后,本文將k=5的聚類結(jié)果作為最終選取的anchor boxes的尺寸。
圖1 評價函數(shù)及模型復(fù)雜度變化曲線
殘差網(wǎng)絡(luò)可在網(wǎng)絡(luò)層數(shù)較多時防止梯度消失,減輕深層網(wǎng)絡(luò)訓(xùn)練的負(fù)擔(dān),其基本模塊如圖2所示。假設(shè)網(wǎng)絡(luò)的輸入為x,要學(xué)習(xí)的函數(shù)映射為H(x),定義殘差映射F(x)為H(x)~x,則原始的函數(shù)映射H(x)變?yōu)镕(x)+x,即H(x)由線性映射x→x和非線性映射F(x)組成。試驗證明,學(xué)習(xí)殘差映射F(x)較學(xué)習(xí)原始映射H(x)容易得多[3]。
圖2 殘差網(wǎng)絡(luò)基本模塊
本文在YOLOv2網(wǎng)絡(luò)結(jié)構(gòu)的基礎(chǔ)上,利用殘差學(xué)習(xí)思想,引入跨層捷徑,構(gòu)成了如圖3所示的YOLO-R網(wǎng)絡(luò)結(jié)構(gòu),其中C層表示卷積層,步長為1,S層表示池化層,方式為最大池化,步長為2。去除YOLOv2網(wǎng)絡(luò)原有的Passthrough層后,增加了4條捷徑。為減少訓(xùn)練過程中的資源空間和計算量,所有捷徑的輸入都選擇原網(wǎng)絡(luò)中池化操作后的特征圖。第1條捷徑連接第2個池化層與第5個卷積層后的特征圖,第2條連接第3個池化層與第8個卷積層后的特征圖,第3條連接第4個池化層與第13個卷積層后的特征圖,最后一條連接第5個池化層與第20個卷積層后的特征圖。在所有捷徑上增加一個1×1的卷積層,使捷徑與主徑保持相同的維度。捷徑與主徑匯合使淺層特征與深層特征深入融合,更加充分地利用淺層特征,提高了群簇小目標(biāo)的檢測性能。
圖3 YOLO-R網(wǎng)絡(luò)結(jié)構(gòu)
YOLO網(wǎng)絡(luò)檢測過程如下:
a.將圖像及標(biāo)簽信息輸入到訓(xùn)練好的網(wǎng)絡(luò)模型中,圖像被劃分為13×13個單元格,每個單元格預(yù)測5個候選框,共預(yù)測13×13×5=845個候選框,然后利用網(wǎng)絡(luò)前向算法預(yù)測每個候選框的相對位置、置信度以及所屬類別的后驗概率P。
b.對預(yù)測的相對位置以及置信度進(jìn)行映射變換,得到與anchor box更接近的窗口作為檢測框。檢測框位置預(yù)測如圖4所示。
圖4 檢測框位置預(yù)測
c.通過設(shè)定閾值T(本文取T=0.25),去除可能性較小的檢測框。具體做法是:將σ(t0)與max(p)相乘,得到檢測框?qū)儆谀愁悇e的置信度。如果結(jié)果大于閾值T,保留該檢測框,否則去除。
d.對每個類別分別進(jìn)行非極大值抑制[4]處理,去除冗余窗口,具體步驟為:對每個類別的檢測框按置信度[5]大小排列;找出置信度最高的檢測框,依次與其他框計算IOU,當(dāng)IOU大于閥值0.4時刪除此框,否則保留此框;從未處理的檢測框中選出置信度最高的,重復(fù)上述步驟,直到所有窗口處理完畢;輸出留下的檢測框的位置、類別和置信度。
圖像中的騎行者經(jīng)過網(wǎng)絡(luò)模型檢測后,會輸出行人和自行車2個矩形框。因此本文利用匹配算法對檢測算法輸出結(jié)果進(jìn)一步融合,完成行人、騎行者分類。
圖5 匹配算法
本文基于Kalman濾波設(shè)計了多目標(biāo)跟蹤算法,流程如圖6所示,該算法包含預(yù)測、匹配和更新過程,具體步驟如下:
a.根據(jù)前一幀的目標(biāo)跟蹤結(jié)果,利用Kalman濾波器預(yù)測目標(biāo)在當(dāng)前幀的位置,獲得目標(biāo)的預(yù)測結(jié)果Kt。
b.在當(dāng)前幀中,根據(jù)檢測結(jié)果和預(yù)測結(jié)果判斷匹配情況。通常將歐氏距離作為損失函數(shù)[6],但其無法很好地表達(dá)兩個矩形框之間的匹配程度,因此本文使用預(yù)測框和檢測框的IOU來衡量匹配度,定義損失函數(shù)為:
利用匈牙利匹配算法[7]將檢測結(jié)果與預(yù)測結(jié)果進(jìn)行最優(yōu)相似度匹配,匹配過程通過最小化損失函數(shù)之和實現(xiàn)。
c.處理匹配結(jié)果。對于匹配成功的檢測目標(biāo),用當(dāng)前幀的預(yù)測及檢測結(jié)果得到目標(biāo)位置的最優(yōu)估計值。
d.顯示跟蹤結(jié)果并進(jìn)行下一幀的預(yù)測。
系統(tǒng)所用的硬件包括1個前視攝像頭、1個視頻采集卡、1個GPS模塊和1臺計算機(英特爾酷睿i7-7700K@3.0 GHz,NVIDIA GTX 1060)如圖7所示。
圖6 基于Kalman濾波的多目標(biāo)跟蹤流程
圖7 硬件安裝
在Visual Studio 2015的編程環(huán)境下,采用GPU并行計算架構(gòu)CUDA 8.0、深度學(xué)習(xí)加速庫cuDNN以及OpenCV 2.4.10計算機視覺庫實現(xiàn)系統(tǒng)軟件編寫。并通過微軟基礎(chǔ)類(Microsoft Foundation Classes,MFC)應(yīng)用程序進(jìn)行圖形用戶界面設(shè)計。
為了評估本文開發(fā)的前方行人和騎行者檢測算法的檢測性能,在不同背景環(huán)境下進(jìn)行行人和騎行者檢測測試,結(jié)果如圖8所示。從圖8可以看出,本文開發(fā)的檢測算法對不同背景下的目標(biāo)檢測效果良好,并且算法的魯棒性較好,對于不同姿態(tài)以及群簇目標(biāo)的檢測情況,效果也較理想。但當(dāng)目標(biāo)與背景顏色過于相近或目標(biāo)被遮擋嚴(yán)重時,也會出現(xiàn)一些漏檢。
圖8 前方行人和騎行者檢測試驗結(jié)果
對本文檢測算法的檢測性能進(jìn)行定量分析,一般用精度(Precision)和召回率(Recall)評價分類器的性能。精度是指檢測結(jié)果中正例的數(shù)量與檢測結(jié)果總數(shù)的比值,召回率是指檢測結(jié)果中正例的數(shù)量與樣本集中標(biāo)注的目標(biāo)總數(shù)的比值。以精度為縱坐標(biāo),以召回率為橫坐標(biāo),繪制PR曲線后,曲線下的面積即為平均正確率(Average Precision,AP),所有類別AP的均值為(mean Average Precision,mAP):
式中,C為類別數(shù);p為精度;r為召回率。
圖9、圖10所示為在測試集上分別利用YOLOv2和YOLO-R模型獲得的行人和自行車的PR曲線。使用的YOLOv2和YOLO-R網(wǎng)絡(luò),除結(jié)構(gòu)及anchor boxes尺寸不同外,訓(xùn)練樣本、迭代次數(shù)及其他網(wǎng)絡(luò)參數(shù)相同。
圖9 行人的PR曲線對比
圖10 自行車的PR曲線對比
從圖9、圖10中可以看出,優(yōu)化后的網(wǎng)絡(luò)在對行人、自行車的檢測上,明顯優(yōu)于原YOLOv2網(wǎng)絡(luò)。對比原YOLOv2網(wǎng)絡(luò)和YOLO-R網(wǎng)絡(luò)的mAP和平均檢測時間,結(jié)果如表1所示,其中平均檢測時間是指網(wǎng)絡(luò)模型檢測測試集中4 500張圖片所用時間的平均值。
表1 mAP和平均檢測時間的比較結(jié)果
從表1可以看出:在訓(xùn)練樣本、網(wǎng)絡(luò)參數(shù)都相同的情況下,YOLO-R網(wǎng)絡(luò)的mAP提高了3.4%,這表明YOLO-R網(wǎng)絡(luò)不僅保留了原YOLOv2網(wǎng)絡(luò)的優(yōu)勢,其增加的殘差網(wǎng)絡(luò)結(jié)構(gòu)還提升了行人、自行車群簇出現(xiàn)時的目標(biāo)檢測性能;同時,YOLO-R的平均檢測時間略高于YOLOv2,主要原因是YOLO-R在結(jié)構(gòu)上比YOLOv2多了4個卷積層,但YOLO-R網(wǎng)絡(luò)完全可以滿足實時性的要求。
本文對YOLOv2結(jié)構(gòu)進(jìn)行改進(jìn),構(gòu)建了YOLO-R網(wǎng)絡(luò),通過訓(xùn)練模型進(jìn)行目標(biāo)檢測。為了進(jìn)一步區(qū)分行人和騎行者,在目標(biāo)檢測中添加了匹配算法,并利用Kalman濾波完成了對多個目標(biāo)的跟蹤。試驗結(jié)果表明,與YOLOv2相比,在滿足速度要求的前提下,本文構(gòu)建的YOLO-R網(wǎng)絡(luò)檢測效果更優(yōu),YOLO-R網(wǎng)絡(luò)的mAP提高了3.4%。