羅國榮
(廣州科技職業(yè)技術(shù)大學(xué) 自動(dòng)化工程學(xué)院,廣州 510550)
隨著我國人們生活水平的提高,汽車已普遍進(jìn)入千家萬戶,而城鎮(zhèn)化的快速發(fā)展導(dǎo)致城市人口越來越密集,以致道路交通壓力也不斷上升.與此同時(shí),道路阻塞、安全事故頻發(fā)等問題嚴(yán)重影響了人們的出行和生命安全,人們?yōu)榻鉀Q這些問題設(shè)計(jì)開發(fā)無人駕駛汽車.無人駕駛汽車安全穩(wěn)定,不會(huì)因人為因素造成交通事故,因此越來越受人們關(guān)注.無人駕駛汽車的發(fā)展需要道路目標(biāo)檢測技術(shù)的支撐,目標(biāo)檢測技術(shù)可分為傳統(tǒng)的目標(biāo)檢測算法和基于深度學(xué)習(xí)的目標(biāo)檢測算法.傳統(tǒng)的目標(biāo)檢測算法主要依賴人為設(shè)計(jì)特征,首先從圖像中利用窮舉法選取候選區(qū)域,然后提取其特征,最后利用分類器對(duì)其進(jìn)行分類,然而人為設(shè)計(jì)特征的泛化性和魯棒性差,難以適應(yīng)復(fù)雜的實(shí)際場景;并且利用窮舉法提取候選區(qū)域的時(shí)間復(fù)雜度高滿足不了實(shí)時(shí)性.
基于深度學(xué)習(xí)的目標(biāo)檢測算法又分為基于候選區(qū)域(兩階段)和基于回歸(一階段)兩類.基于候選區(qū)域的算法主要包括R-CNN、Fast R-CNN、Faster R-CNN等,張昭等針對(duì)Faster R-CNN對(duì)遠(yuǎn)距離小目標(biāo)車輛的檢測效果較差的問題,提出了反卷積反向特征融合Faster R-CNN算法.不僅降低了訓(xùn)練難度,而且有效改善梯度消失問題,提高對(duì)遠(yuǎn)距離小目標(biāo)車輛信息的多尺度特征的提取和表達(dá)能力[1];龔強(qiáng)在Cityscapes數(shù)據(jù)集上,使用Mask R-CNN算法與關(guān)鍵點(diǎn)檢測算法進(jìn)行訓(xùn)練和測試,對(duì)道路前方的目標(biāo)進(jìn)行檢測,提升Mask R-CNN的準(zhǔn)確度[2];張曉雪為了提高目標(biāo)檢測精度,使用目標(biāo)檢測分割的經(jīng)典算法Mask R-CNN,通過在其算法的基礎(chǔ)上將淺層特征圖與高層特征圖相融合來對(duì)算法進(jìn)行優(yōu)化,最終達(dá)到提高M(jìn)ask R-CNN算法在目標(biāo)識(shí)別的精確度[3],此類檢測算法速度普遍較慢,在交通場景中檢測的實(shí)時(shí)性還不能滿足,但檢測精度在不斷提升.
基于回歸的算法主要包括Yolov1、Yolov2、Yolov3、SSD等,周慧海等為檢測道路場景中遠(yuǎn)距離的小目標(biāo),提出一種改進(jìn)網(wǎng)絡(luò)RFG_SSD算法,首先在原SSD主干部分和檢測部分之間引入改進(jìn)特征金字塔網(wǎng)絡(luò),其次在檢測層使用全局平均池化層替換全連接層,降低參數(shù)從而提高檢測速度,小目標(biāo)檢測個(gè)數(shù)相較于原SSD檢測個(gè)數(shù)高出3倍多,小目標(biāo)檢測性能效果顯著提升[4];袁不平等針對(duì)Yolov3對(duì)中小目標(biāo)檢測效果不理想的問題,提出改進(jìn)算法DX-Yolo(densely ResneXt with Yolov3).首先對(duì)Yolov3的特征提取網(wǎng)絡(luò)Darknet-53進(jìn)行改進(jìn),使用ResneXt殘差模塊替換原有殘差模塊,在Darknet-53中引入密集連接,利用K-means算法對(duì)數(shù)據(jù)集進(jìn)行維度聚類,最后通過試驗(yàn)獲得較好的效果[5].蔡英鳳等提出了一種SLSTMAT(Social-LSTM-Attention)算法,創(chuàng)新性地引入目標(biāo)車輛社交特征并通過卷積神經(jīng)網(wǎng)絡(luò)提取,建立了基于深度學(xué)習(xí)的車輛行為識(shí)別模型,應(yīng)用注意力機(jī)制來捕捉行為時(shí)窗中的多時(shí)步信息,實(shí)現(xiàn)了周邊車輛行為準(zhǔn)確識(shí)別[6];隗寒冰等提出一種基于網(wǎng)狀分類器與融合歷史軌跡的多目標(biāo)檢測與跟蹤算法,該算法考慮各目標(biāo)之間的遮擋關(guān)系,利用具有目標(biāo)融合功能的網(wǎng)狀分類器對(duì)多尺度滑動(dòng)窗獲取的待檢窗口進(jìn)行多目標(biāo)檢測,在處理目標(biāo)遮擋的復(fù)雜場景時(shí)具有較好的識(shí)別效果[7];羅玉濤等提出一種由攝像頭采集的圖像信息與激光雷達(dá)采集的點(diǎn)云信息進(jìn)行空間匹配與特征疊加后生成的稀疏彩色點(diǎn)云結(jié)構(gòu),通過改進(jìn)的PointPillars神經(jīng)網(wǎng)絡(luò)算法對(duì)融合后的彩色稀疏點(diǎn)云進(jìn)行運(yùn)算,提升了識(shí)別平均精度[8];高春艷等提出一種改進(jìn)的Yolov3目標(biāo)檢測算法,該方法分別從多尺度圖像訓(xùn)練、增加Inception-res模塊和省去大尺度特征輸出分支3個(gè)方面對(duì)Yolov3網(wǎng)絡(luò)進(jìn)行改進(jìn),能夠更好地檢測出藏匿于車底部位的危險(xiǎn)品目標(biāo)[9];程騰等本文提出一種基于特征融合的多層次多模態(tài)融合方法,提取針對(duì)不同大小目標(biāo)的層級(jí)特征,在此基礎(chǔ)上進(jìn)行多模態(tài)的多層次特征融合,并進(jìn)行6次對(duì)比實(shí)驗(yàn)驗(yàn)證,取得較好的效果[10];陳瓊紅等提出一種針對(duì)霧天環(huán)境下車輛和行人的檢測方法.將AOD-Net去霧算法與SSD目標(biāo)檢測算法相結(jié)合,實(shí)現(xiàn)了城市交通霧天環(huán)境下的車輛和行人檢測[11].此類算法檢測速度快、實(shí)時(shí)性較好,但是檢測精度與準(zhǔn)確度相對(duì)于兩階段的算法還是較差[12].
為了無人駕駛汽車能在道路上實(shí)時(shí)檢測車輛目標(biāo),本文提出一種改進(jìn)Yolov3算法,該算法是將ResNet50網(wǎng)絡(luò)代替Darknet-53網(wǎng)絡(luò)作為基礎(chǔ)特征提取網(wǎng)絡(luò),舍棄ResNet50網(wǎng)絡(luò)中第5組及后面的網(wǎng)絡(luò),再在此基礎(chǔ)上增加2個(gè)檢測網(wǎng)絡(luò),最后設(shè)置6個(gè)邊界框,以提高目標(biāo)定位的準(zhǔn)確率.
Yolov3是基于回歸的一類目標(biāo)檢算法,其最大特點(diǎn)是檢測速度快,能滿足實(shí)時(shí)性要求.其核心思想是將一幅圖像劃分為互不重疊的網(wǎng)格塊,通過回歸分析來確定目標(biāo)及其位置,克服了基于候選區(qū)域目標(biāo)檢測算法滑動(dòng)窗口帶來的檢測速度慢的缺點(diǎn).Yolov3結(jié)構(gòu)可分為特征提取塊和目標(biāo)檢測塊兩部分.如圖1所示.
圖1 Yolov3結(jié)構(gòu)圖Fig.1 Structure diagram of Yolov3
特征提取塊采用Darknet-53網(wǎng)絡(luò)的架構(gòu),由DBL(卷積網(wǎng)絡(luò))和Resn(殘差網(wǎng)絡(luò))堆疊而成.卷積網(wǎng)絡(luò)(DBL)由Conv(卷積)層、BN(歸一化)、Leaky relu(激活函數(shù))組成.殘差網(wǎng)絡(luò)(Resn)中的n表示數(shù)字,此處分別表示1、2、4、8,由zero padding(零填充)、DBL(卷積網(wǎng)絡(luò))和res unit(殘差單元)組成.殘差單元通過引入shortcut(短路連接),這樣可以增加網(wǎng)絡(luò)深度,同時(shí)可以保證網(wǎng)絡(luò)性能不下降.
目標(biāo)檢測塊分別由y1、y2、y3三個(gè)不同尺度的檢測網(wǎng)絡(luò)組成.由于淺層卷積網(wǎng)絡(luò)的卷積計(jì)算得到的是物體的邊緣信息,邊緣信息包含物體的尺寸和位置;而深層卷積網(wǎng)絡(luò)的卷積計(jì)算得到的是物體更為抽象的語義信息,但物體的尺寸和位置隨著卷積層的深度增加而逐漸丟失.為了檢測圖像中不同尺寸的物體,Yolov3的分別由上述三個(gè)不同尺度的檢測網(wǎng)絡(luò),主要方法是將深層特征先進(jìn)行上采樣,使得圖像尺寸與不同層次的殘差網(wǎng)絡(luò)的輸出特征相同,再將兩者進(jìn)行連接.這種方法即可將深層特征與淺層特征進(jìn)行融合,實(shí)現(xiàn)對(duì)場景中不同尺度大小的物體進(jìn)行檢測.
目標(biāo)檢測算法的優(yōu)化主要是從修改Yolov3的基礎(chǔ)網(wǎng)絡(luò)、邊界框兩個(gè)方面進(jìn)行.
Darknet-53網(wǎng)絡(luò)架構(gòu)的殘差單元雖然能在網(wǎng)絡(luò)加深時(shí)抑制收斂變慢的問題,但仍存在訓(xùn)練困難、梯度消失的情況.為了進(jìn)一步提升網(wǎng)絡(luò)的特征提取性能,本文在原殘差單元的基礎(chǔ)上增加1個(gè)卷積層,使得網(wǎng)絡(luò)能夠提取出更豐富的特征信息,如圖2(b)所示的Res_b結(jié)構(gòu).改進(jìn)的殘差單為減少通道數(shù)量,先在第一層使用1×1卷積核,接著采用3×3卷積核進(jìn)行特征提取,最后采用1×1卷積核恢復(fù)通道數(shù)量,這樣在不增加參數(shù)的情況下拓展了卷積網(wǎng)絡(luò)的寬度,因此降低了模型的復(fù)雜度,提高了網(wǎng)絡(luò)的運(yùn)行效率.另外,為了防止殘差單元輸入和輸出的維度不同導(dǎo)致殘差單元之間不能連續(xù)串聯(lián),在短路連接處增加1個(gè)卷積層,用于改變殘差單元的輸出維度,方便后續(xù)的殘差單元串聯(lián),如圖2(b)所示的Res_a 結(jié)構(gòu).
圖2 殘差單元結(jié)構(gòu)圖Fig.2 Structural diagram of residual cells
在改進(jìn)后的殘差單元的基礎(chǔ)上用ResNet50網(wǎng)絡(luò)代替Darknet-53網(wǎng)絡(luò)作為基礎(chǔ)特征提取網(wǎng)絡(luò),并舍棄第5組及后面的網(wǎng)絡(luò),然后在ResNet50網(wǎng)絡(luò)中第Res4組的第2個(gè)res_b后增加一個(gè)Yolo2檢測輸出網(wǎng)絡(luò),然后在第4組的最后1個(gè)block再連接一個(gè)Yolo1檢測輸出網(wǎng)絡(luò),以提升車輛目標(biāo)的檢測準(zhǔn)確率,其中Yolo1與Yolo2網(wǎng)絡(luò)結(jié)構(gòu)相同,基礎(chǔ)特征提取網(wǎng)絡(luò)框架如圖3所示.
邊界框大小是采用一種基于交并比(IoU)距離度量的K-均值(K-means)聚類算法進(jìn)行計(jì)算.首先統(tǒng)計(jì)圖像數(shù)據(jù)集中的真實(shí)標(biāo)注框,方法是計(jì)算每幅圖像真實(shí)標(biāo)注框的縱橫比和面積,組建一個(gè)縱橫比-面積數(shù)據(jù)集,并繪制縱橫比和面積關(guān)系圖,如圖4所示.
圖4 縱橫比與面積關(guān)系圖Fig.4 Horizontal and horizontal ratio and area relationship
從圖4可以看出,具有相似縱橫比和面積的標(biāo)注框聚集在一起,此處利用K-均值聚類距離的算法對(duì)邊界框的大小進(jìn)行計(jì)算,其計(jì)算公式為:
d=1-IoU,
(1)
(2)
式中:d為邊界框與標(biāo)注框的距離;IoU為邊界框與標(biāo)注框的交并比;A為邊界框;B為標(biāo)注框;area(A∩B)為邊界框與標(biāo)注框相交的面積;area(A∪B)為邊界框與標(biāo)注框相并的面積.
K-均值聚類算法流程如下:
(1)采用K-means ++ 算法選擇K個(gè)均值聚類初始簇中心集合α={α1,α2,α3,…,αk}.
(2)針對(duì)縱橫比-面積數(shù)據(jù)集中每個(gè)樣本xi,計(jì)算它到K個(gè)聚類中心的距離并將其分到距離最小的聚類中心所對(duì)應(yīng)的類中.
(3)針對(duì)每個(gè)類別ci,重新計(jì)算它的聚類中心,計(jì)算公式如下:
(3)
式中,x是屬于類別ci的一個(gè)數(shù)據(jù)點(diǎn).
(4)重復(fù)步驟2到3,直到簇分配不變,或達(dá)到最大迭代次數(shù).
由于K-means算法的初始聚類中心需要人為確定,而且不同的初始聚類中心會(huì)產(chǎn)生不同的聚類結(jié)果.為了改善K-means算法,采用了K-means ++ 算法自動(dòng)地確定聚類初始簇中心集合.其算法流程如下:
(1)從輸入的數(shù)據(jù)點(diǎn)集合中隨機(jī)選擇一個(gè)點(diǎn)作為第一個(gè)聚類中心,表示為α1.
(2)對(duì)于數(shù)據(jù)集中的每一個(gè)點(diǎn)xi,計(jì)算它與最近聚類中心(指已選擇的聚類中心)的距離,表示為d(xi,αj).
(3)選擇一個(gè)新的數(shù)據(jù)點(diǎn)作為新的聚類中心α2,選擇的原則是:d(xi,αj)較大的點(diǎn),被選取作為聚類中心的概率較大.
(4)重復(fù)(2)和(3)直到K個(gè)聚類中心被選出來.
最后設(shè)置6個(gè)邊界框,以提高目標(biāo)定位的準(zhǔn)確率.
開發(fā)環(huán)境使用win10操作系統(tǒng),軟件環(huán)境平臺(tái)為matlab2021.在硬件配置上CPU使用英特爾酷睿i9-7900X; GPU為英偉達(dá)GTX 1080Ti 11G顯存.
實(shí)驗(yàn)采用的圖像是通過對(duì)行車記錄儀記錄的視頻按一定的時(shí)間間隔進(jìn)行截取,包含市區(qū)、鄉(xiāng)村和高速公路等場景采集的真實(shí)圖像數(shù)據(jù),共350張,通過圖像數(shù)據(jù)增強(qiáng)技術(shù),對(duì)原始圖像進(jìn)行旋轉(zhuǎn)、移動(dòng)、縮放、倒影、剪切變換、顏色抖動(dòng)增強(qiáng)等變換,如圖5所示.
圖5 圖像數(shù)據(jù)增強(qiáng)Fig.5 Image data enhancement
變換后的圖像集為2 800張,并將數(shù)據(jù)集以7∶1∶2的比例分成訓(xùn)練集、驗(yàn)證集和測試集.并應(yīng)用matlab內(nèi)置的“image labeler”標(biāo)注工具將每張圖像的汽車對(duì)象標(biāo)注出來.
訓(xùn)練設(shè)置如下:最大世代(epochs)次數(shù)為80,最小批尺寸大小為8,學(xué)習(xí)率為設(shè)置為動(dòng)態(tài),分指數(shù)上升期、穩(wěn)定期和下降期三個(gè)階段,其中初始學(xué)習(xí)率為0.001,訓(xùn)練期間學(xué)習(xí)率的變化如圖6所示.
圖6 訓(xùn)練學(xué)習(xí)率Fig.6 Training learning rate
L2正則化因子設(shè)置為0.000 5,懲罰閾值設(shè)置為0.5,與真實(shí)值重疊小于0.5的檢測將被懲罰,采用隨動(dòng)量變化的隨機(jī)梯度下降(SGDM)的求解算法沿著損失函數(shù)的負(fù)梯度方向更新網(wǎng)絡(luò)參數(shù).
訓(xùn)練損失由邊界框、置信度和分類這三種部分構(gòu)成的誤差組成,其中邊界框采用均方差計(jì)算,置信度和分類采用二值交叉墑?dòng)?jì)算,其損失函數(shù)計(jì)算公式為:
(4)
(5)
(6)
totalloss=boxloss+clsloss+objloss,
(7)
訓(xùn)練損失結(jié)果如圖7所示.可以看出,整個(gè)訓(xùn)練期間,邊界框損失和分類損失維持在低值范圍,說明邊界框和分類的預(yù)測較準(zhǔn)確,而置信損失經(jīng)過200次迭代從1 180下降到90,說明訓(xùn)練收斂速度較快,而且逐漸接近0,說明訓(xùn)練學(xué)習(xí)率的設(shè)計(jì)較為合理.三者疊加起來的總損失能使模型訓(xùn)練損失接近0,說明模型的訓(xùn)練是成功的.
模型訓(xùn)練結(jié)束后,需要對(duì)模型進(jìn)行評(píng)估,評(píng)估指標(biāo)采用平均精度(mAP)、精確率(precision)和召回率(recall),結(jié)合本文場景,平均精度(mAP)計(jì)算如下:
(8)
式中:Ci為單張圖片中目標(biāo)檢測的精確率;n為圖片總數(shù).
精確率(precision)計(jì)算如下:
(9)
式中:TP為模型預(yù)測為正樣本,實(shí)際為正樣本,即是被正確檢出的樣本數(shù);FP為模型預(yù)測為正樣本,實(shí)際為負(fù)樣本,即是被錯(cuò)誤檢出的樣本數(shù).
(a)邊界框損失;(b)置信度損失;(c)分類損失;(d)訓(xùn)練總損失圖7 訓(xùn)練損失結(jié)果Fig.7 Training loss results
召回率(recall)計(jì)算如下:
(10)
其中,F(xiàn)N表示模型將預(yù)測為負(fù)樣本,實(shí)際為正樣本,即是被漏檢的樣本數(shù).
本文使用相同的數(shù)據(jù)集和訓(xùn)練參數(shù)分別對(duì)以基于ResNet50為基礎(chǔ)網(wǎng)絡(luò)的改進(jìn)Yolov3模型、以Darknet為基礎(chǔ)網(wǎng)絡(luò)的原Yolov3模型進(jìn)行訓(xùn)練,兩種模型評(píng)估的P-R(精確率-召回率)曲線如圖8、圖9所示.
圖8 以ResNet50為基礎(chǔ)網(wǎng)絡(luò)的改進(jìn)Yolov3模型Fig.8 An improved Yolov3 model with a ResNet50-based network
圖9 以Darknet為基礎(chǔ)網(wǎng)絡(luò)的原Yolov3模型Fig.9 The original Yolov3 model with the Darknet-based network
由圖可以看出,改進(jìn)后Yolov3模型的平均精確度比原Yolov3模型提高了0.5%.在P-R曲線中,曲線接近坐標(biāo)(1,1)位置,說明精確度和召回率都很高,就越說明模型性能越好.當(dāng)召回率為0.7時(shí),改進(jìn)后Yolov3模型的精確度比原Yolov3模型高,同時(shí)曲線比原Yolov3模型更接近坐標(biāo)(1,1)位置,這說明改進(jìn)后的Yolov3模型綜合性能更好,檢測準(zhǔn)確率和定位精度更高.當(dāng)對(duì)大小為1 280×720像素的mp4格式的視頻進(jìn)行檢測時(shí),幀速率不低于40幀/s,可以滿足對(duì)視頻實(shí)時(shí)檢測的要求.
本文基于Yolov3網(wǎng)絡(luò),修改了殘差網(wǎng)絡(luò)單元,在基礎(chǔ)特征提取網(wǎng)絡(luò)中,利用ResNet50網(wǎng)絡(luò)代替Darknet-53網(wǎng)絡(luò),剪切了ResNet50網(wǎng)絡(luò)中第5個(gè)殘差模塊,最后添加了2個(gè)Yolo檢測網(wǎng)絡(luò),組合成一個(gè)新的改進(jìn)型Yolov3網(wǎng)絡(luò).
通過K-means聚類算法選擇邊界框和通過數(shù)據(jù)采集和處理,進(jìn)行模型訓(xùn)練實(shí)驗(yàn),結(jié)果顯示,在驗(yàn)證集中獲得較好的精確率和召回率,同時(shí)對(duì)訓(xùn)練數(shù)據(jù)之外的數(shù)據(jù)也獲得良好的檢測效果.