茅智慧,朱佳利,吳 鑫,李 君
浙江萬里學院 信息與智能工程學院,浙江 寧波 315100
交通是一個國家經濟發展的重要基礎產業。隨著人們生活水平的提高,汽車已經成為人們日常出行的重要交通工具。據公安部統計,2021年我國汽車保有量達3.02億輛[1]。但汽車提供方便的同時,全國的交通事故數量居高不下,據估計,90%的車禍是由人為失誤造成的[2]。傳統汽車駕駛需要駕駛者高度集中注意力,時刻注意周圍環境的變換,然而疲勞、噪音、天氣、心理等多方面因素都會影響駕駛者的判斷,進而可能產生危險。作為未來汽車的發展方向,自動駕駛汽車擁有自主判斷能力,能較大程度地減少人為失誤。同時,自動駕駛汽車能更好地節能減排、減少污染[3],有良好的應用前景。
為使自動駕駛汽車能夠安全穩定地運行在道路上,對于參與道路交通的各類目標,如:車輛、行人、交通標志、燈光、車道線等,自動駕駛車輛都需要做出實時精確的檢測以及判斷。對實時目標的精準檢測、識別并做出判斷是保證其運行的基礎與核心。
目前,國內外學者圍繞自動駕駛技術做了不同領域的綜述,鄧偉文等[4]綜述了自動駕駛測試領域自動生成仿真場景的方法,呂品等[5]綜述了自動駕駛數據處理的邊緣計算技術,Zamanakos等[6]對基于激光雷達的目標檢測進行了綜述。本文則圍繞深度學習的YOLO系列算法在自動駕駛目標檢測識別中的應用進行綜述,并對其在提升實時檢測的效率與精度方面做出相應的總結與展望。
自動駕駛汽車中的自動駕駛系統是多技術融合的產物。所謂自動駕駛即通過多種車載傳感器(如攝像頭、激光雷達、毫米波雷達、GPS、慣性傳感器等)來識別車輛所處的周邊環境和狀態,并根據所獲得的環境信息(包括道路信息、交通信息、車輛位置和障礙物信息等)自主做出分析和判斷,從而自主地控制車輛運動,最終實現自動駕駛[7]。
根據車輛的智能性程度,2021年8月20日,工信部批準發布了GB/T 40429—2021《汽車駕駛自動化分級》標準[8]。該標準將自動駕駛劃分為L0~L5等級,具體分級標準如表1所示。

表1 GB/T 40429—2021《汽車駕駛自動化分級》標準Table 1 GB/T 40429—2021 Automotive driving automation classification standard
20世紀80年代,卡內基梅隆大學提出了最早的在結構化環境中駕駛的自動駕駛汽車項目[9],以及慕尼黑聯邦大學提出高速公路駕駛項目[10]。1986年,全球第一輛由計算機駕駛的汽車NavLab1誕生,1992年,國防科技大學成功研制出中國第一輛無人駕駛汽車[11]。此后,DARPA大挑戰[12-13]等項目不斷推動自動駕駛的技術向前發展。
在學術界之外,汽車制造商和科技公司也開展了研究,開發自己的自動駕駛汽車。2000年,美國通用汽車開發了一套自動碰撞預警/防止系統,夜視和后視報警系統的應用使得汽車具備L0的應急輔助功能[14]。各種高級駕駛輔助系統,如自適應巡航控制(adaptive cruise control,ACC)、車道保持輔助和車道偏離警告技術,為現代汽車提供了部分自主權,車輛進入L1的部分駕駛輔助階段;寶馬、奔馳、大眾、通用、特斯拉、上汽、吉利、小鵬等品牌汽車在2017年基本都已實現L2級別的整車落地與推廣,該級別車輛一般搭載有的車道內自動駕駛、換道輔助、自動泊車功能;2020年后,多款汽車(奔馳、通用、特斯拉、吉利、小鵬等)開始導入L3與L4級別以上的自動駕駛[15]。但至今,L2級別的汽車依然是企業商業化發展的重點。這些技術不僅提高了現代汽車的安全性,使駕駛變得更容易,而且還為完全自主的汽車鋪平了道路。在自動駕駛技術中,提升環境的感知能力能提供更安全的運行環境。
在介紹目標檢測的算法之前,需要了解在目標檢測中常用的評價指標。在判斷分類的精度一般使用準確度(accuracy)、精確度(precision)、召回率(recall rate)、AP(average precision)、mAP(mean average precision)等,在判斷定位的精度一般使用交并比(intersection over union,IoU),在判斷運行的速度時一般采用FPS(frames per second)。
假定待分類目標只有正例(positive)和負例(negative)兩種,則有以下四個指標:(1)TP(true positive),被正確識別成正例的正例;(2)FP(false positive),被錯誤識別成正例的負例;(3)TN(true negative),被正確識別成負例的負例;(4)FN(false negative),被錯誤識別成負例的正例。
(1)準確度是指所有預測中預測正確的比例。

(2)精確率是指在所有檢測出的目標中檢測正確的概率。

精確率是從預測結果的角度來定義。Accuracy針對所有樣本,而Precision僅針對檢測出來(包括誤檢)的那一部分樣本。
(3)召回率是指所有的正樣本中正確識別的概率。

(4)AP由P-R曲線和坐標圍起來的面積組成,用于表示不同召回率下檢測的平均正確性。mAP為各類別AP的平均值,用于對所有目標類別檢測的效果取平均值。性能越好,比值越高。
(5)IoU表示的是“預測的邊框”和原圖片標注的“真實邊框”的交疊率,是兩者交集與并集的比值。比值達到1時預測的效果達到最佳。
(6)FPS是目標檢測的速度性能評價指標,檢測速度代表目標檢測算法與模型的計算性能。FPS即每秒處理圖片的幀數,數值越大代表檢測速度越快。
早期的自動駕駛車輛系統嚴重依賴精確的傳感器數據,利用多傳感器設置和昂貴的傳感器(如激光雷達)提供精確的環境感知。這些自動駕駛車輛的參數由開發人員設置,并在模擬和現場測試后手動調整[16-17]。這種方法的缺點是需要大量時間手動調整參數[18],而且很難推廣到新的應用場景。繼深度學習廣泛應用于圖像分類和語音識別等領域后[19-20],人們開始將深度神經網絡(deep neural networks,DNN)應用在自動駕駛車輛上,包括規劃和決策[21]、感知[22]以及地圖和定位[23]。
目標檢測與識別是自動駕駛的感知系統的重要組成部分,在目標檢測領域近10年具有代表性的算法如圖1所示?;谏疃葘W習的目標檢測算法包含有Two-Stage目標檢測算法和One-Stage目標檢測算法兩類。

圖1 目標檢測代表性算法Fig.1 Representative object detection algorithms
在深度學習的Two-Stage目標檢測的經典主流算法主要有R-CNN[24]、SPP-Net[25]、Fast R-CNN[26]、Faster R-CNN[27]、R-FCN[28]以及NAS-FPN[29]等。Ross Girshick等[24]于2014年提出的R-CNN算法是第一個工業級精度的Two-Stage目標檢測算法,后期基于分類的Two-Stage算法雖然在檢測效果上有了很大提升,但是在算法的速度上,還是不能滿足目標檢測任務對于實時性的要求(如表2所示)。

表2 Two-Stage目標檢測算法的優缺點及實時性Table 2 Advantages,disadvantages and real-time performance of Two-Stage target detection algorithm
隨著One-Stage目標檢測算法的提出,目標檢測的效率得到了大幅度的提升,使將其應用于自動駕駛系統中的目標實時感知檢測成為可能。One-Stage目標檢測算法是學者們提出的新的一類基于回歸思想的檢測算法,其中典型的兩類算法是SSD(single shot multibox detector)系列[30]和YOLO(you only look once)系列。2016年Redmon等人提出YOLO算法[31],開創性地將檢測問題轉化為回歸問題,使用卷積神經網絡來直接完成目標類別的判定和邊界的預測。真正意義上實現了目標的實時檢測,開啟了目標檢測One-Stage算法的新紀元。
YOLO系列算法滿足了目標檢測的實時性,但在檢測精度上卻做出了一定的犧牲,尤其是YOLO v1對于分布密集的小物體,更是極易出現漏檢的情況。近幾年Redmon團隊不斷改進YOLO算法,將其更新至YOLO v3[32-33]。2020年,Bochkovskiy等人[34]在此基礎上改進并發布了YOLO v4,后續YOLO v5以及YOLO X版本的更迭,使得YOLO系列算法更適用于工程實踐,其精度及實時性都得到改善(見表3),學者們開始將YOLO算法應用到自動駕駛目標的實時監測。

表3 One-Stage目標檢測算法的優缺點及適用場景Table 3 Advantages,disadvantages and applicable scenarios of One-Stage target detection algorithm
隨著自動駕駛車輛和深度學習目標檢測不斷的研究,學者們將改進后的YOLO算法應用到自動駕駛車輛目標(車輛、行人、交通標志、燈光、車道線等)的實時監測中。
2.3.1 交通標志的檢測
在交通安全中,交通標志識別的準確性在高級駕駛員輔助系統、自動駕駛車輛中發揮著關鍵作用。
Zhang等[35]通過添加新圖像和變換圖像擴展了中國交通標志數據集(CTSD),形成新的數據集CCTSDB(CSUST Chinese traffic sign detection benchmark),并在YOLO v2算法網絡的中間層采用多個1×1卷積層,在頂層減少卷積層,降低計算復雜度。Yang等[36]同樣選擇了CCTSDB數據集,分別使用YOLO v3和YOLO v4訓練訓練集。通過測試對比為其在數據集測試中IoU的變化(如圖2),YOLO v4在目標檢測方面優于YOLO v3。

圖2 IoU對比圖Fig.2 Comparison of IoU
Dewi等[37]則使用生成式對抗網絡(generative adversarial networks,GAN)生成更逼真和多樣化的交通標志的訓練圖片,將合成圖像與原始圖像相結合,以增強數據集并驗證合成數據集的有效性。使用YOLO、YOLO v3和YOLO v4迭代。圖像混合后識別性能得到了提升,在YOLO v3上mAP(平均精度值)為84.9%,在YOLO v4 mAP為89.33%。
Mohd-Isa等[38]通過在YOLO v3框架中包含空間金字塔池化(SPP),進一步識別真實環境中的遠小交通標志。Mangshor等[39]使用YOLO訓練模型以進行識別五種警示交通標志,包括十字路口、右十字路口、左十字路口、馬來西亞交通標志的學童橫穿和碰撞。實時物體檢測的測試結果在交通標志檢測和識別上都達到了96.00%的準確率。
呂禾豐等[40]調整了YOLO v5算法的損失函數,使用EIOU(efficient intersection over union)損失函數代替GIOU(generalized intersection over union)損失函數來提高算法的精度,實現對目標更快速的識別;使用Cluster NMS(non-maximum suppression)代替Weighted-NMS算法,提高生成檢測框的準確率。
在使用YOLO算法進行交通標志的研究過程中,一般分為以下方式進行改變:(1)擴建數據集或者強化數據集。文獻[35]擴充了中國交通標志的數據集,文獻[37]通過虛擬圖片強化原有數據集,但是在實驗過程中涉及識別的數據類型并不完全,標注識別的數據圍繞三大類:指示標志、禁止標志、警告標志;(2)修改算法的損失函數或網絡結構,通常在保證一定的檢測速度優勢的基礎上提升原算法的檢測精度,文獻[38]添加池化層,文獻[40]使用GIOU損失函數取代(如表4所示)。

表4 交通標志的檢測研究工作Table 4 Research work on detection of traffic signs
2.3.2 交通燈的檢測
交通信號圖像是道路上最重要的信息之一,交通信號燈檢測是智能車輛和駕駛輔助系統的重要組成部分。
Jensen等[41]應用了實時目標檢測系統YOLO,檢測公共LISA交通燈數據集,該數據集包含大量在不同光照和天氣條件下捕獲的帶標簽的交通燈,達到了90%的準確率。Possatti等[42]使用YOLOv3模型,與智能汽車使用的先驗地圖相結合,識別預定義路線的相關交通燈。該實驗的數據集分類過程中只考慮了兩類對象:紅-黃和綠交通燈。通過混合紅色和黃色信號燈的方式,克服黃色樣品的不足,實現實時的現實交通信號燈的檢測。Gao等[43]使用YOLO v3和YOLO v4算法對道路上的交通信號圖像進行檢測和識別實驗,結果表明,YOLO v4網絡的準確率高于YOLO v3網絡。
在交通信號燈的檢測過程中,在較長時間內使用的公共數據集偏小,無法提供足夠的標簽來訓練,深度神經網絡。文獻[41]通過合并樣本的方式解決數據問題,文獻[44]則創建了一個覆蓋多種自然環境的大型的數據集。
2.3.3 交通車輛的檢測
隨著交通需求量的提升,道路交通壓力也在不斷的增加。不同的車輛類型都需要進行檢測,包括機動車與非機動車。
葉佳林等[45]在YOLO v3框架下,設計特征融合結構和采用GIOU損失函數,降低非機動車漏檢率,提高定位準確度。Zhou等[46]將毫米波雷達與攝像機信息融合,利用時空同步關聯多傳感器數據,通過YOLO v2算法實現深度融合對車輛的目標檢測識別。張成標等[47]改動原YOLO v2網絡框架,添加改進的殘差網絡(如圖3)和Kelu激活函數來提高檢測準確率,添加多尺度層來提升對圖片中不同尺寸目標的檢測精度。

圖3 改進殘差結構對比圖Fig.3 Comparison of improved residual structure
Chen等[48]提出YOLO v3-live,是在Tiny-YOLO v3的網絡層結構上進行裁剪,量化網絡中的網絡參數,這種方式降低了嵌入式設備的計算復雜度,速度得到提升可以達到28 FPS,但是在同樣的數據集上,mAP降低了18%。Wu等[49]在YOLO v5s神經網絡結構的基礎上,提出了YOLO v5-Ghost。調整了YOLO v5s的網絡層結構。計算復雜度降低,更適合嵌入式設備。用該結構實現車輛和距離的實時檢測,YOLO v5-Ghost的檢測速度提高19 FPS,但是mAP降低3%。
在使用YOLO算法進行交通車輛的研究過程中,文獻[45]使用GIOU損失函數,文獻[47]添加KeLU激活函數來提升監測精度。文獻[45]根據實際情況修改候選框的值、增加多尺度檢測,能在一定程度上降低漏檢率,提升不同尺度目標的檢測精度(如表5所示)。上述文獻所使用的數據集并不統一,測試出的準確度僅限參考。

表5 交通車輛的檢測研究工作Table 5 Research work on detection of traffic vehicles
2.3.4 行人的檢測
在交通中,行人同樣是研究的重要部分。智能或無人駕駛車輛需要檢測行人,識別他們的肢體運動,并了解他們行為的意義,然后再做出適當的響應決策。
Lan等[50]在YOLO v2的網絡結構中,將穿透層連接數從16層改為12層,檢測速度得到提升,同時由實驗結果看降低了漏檢率(Miss Rate)(如圖4)。

圖4 各算法行人檢測的漏檢率比較Fig.4 Comparison of missing detection rates of pedestrian detection algorithms
高宗等[51]提出在原有的YOLO網絡結構中,結合行人在圖像中表現出小縱橫比的特點,通過聚類選擇合適數量和規格的候選幀,改變YOLO網絡結構,調整候選幀在X軸和Y軸方向的分布密度,形成適合行人檢測的網絡結構。但是該方法將行人檢測視為二分類問題,使得在行人動態變化的檢測方面具有較大局限性。
郝旭政等[52]提出了一種基于深度殘差網絡和YOLO模型的行人檢測與識別方法。Zhang等[53]的Caps-YOLO檢測模型則基于YOLO v3,該模型采用dense connection代替了原有網絡中的shortcut connection,構造了dense block組件,提高了feature map的利用率。同時采用向量神經元結合動態路由機制來實現該模型的檢測功能,降低漏檢和誤檢姿態復雜的行人的概率,在不同的數據集上精度提升1.81%~6.63%不等。Liu等[54]采用K-means聚類方法直接計算anchor使用數據集的幀大小。通過引入SE模塊(squeeze-and-excitation networks,SENet)和集成DIOU(distance-IoU)損失函數。提高對智能駕駛系統中小尺度行人目標的檢測精度。
Zhang等[55]基于Tiny-YOLOv3網絡提出了在原有網絡的基礎上增加了三層卷積,提高了模型提取特征的能力;引入了1×1卷積核對特征進行降維,減少加深模型引起的計算量,保證了檢測的實時性,但是仍存在漏檢,小目標的識別不夠準確問題。
進行行人的研究過程中,使用的數據集一般以PASCAL VOC為主,再與其他數據集結合,增大數據的樣本集。在研究過程中會有增加或減少YOLO網絡結構的操作,但是在現有的One-Stage的算法中,其精度還落后于Two-Stage的算法,減少網絡層的方式能提高檢測速度,卻造成了精度的降低。雖然進一步修改網絡結構是為提升精度或速度,但是在設計實施過程中還需更多的經驗支撐(如表6所示)。

表6 行人的檢測研究工作Table 6 Research work on detection of pedestrian
2.3.5 車道線的檢測
實現高效的車道檢測是無人駕駛車輛道路環境感知模塊的重要組成部分之一,車道線檢測的準確性同樣影響到無人駕駛車輛的安全性。
Zhang等[56]構建了一個基于YOLO v3的兩階段學習網絡,對YOLO v3算法的結構參數進行了修改,采用基于Canny算子的自適應邊緣檢測算法對第一階段模型檢測到的車道進行重新定位,并將處理的圖像作為標簽數據用于第二階段模型的訓練,提高復雜場景下車道檢測的準確性。圖5顯示了KITTI和Caltech數據集上的P-R(精確召回)曲線的結果?;赮OLO系列的檢測算法在車道檢測方面優勢明顯,尤其是基于YOLO v3的S×2S結構模型表現最好。崔文靚等[57]在原YOLO v3的基礎上,利用K-means++聚類算法優化網絡anchor參數,并改進YOLO v3算法卷積層結構,使最終結果較原始算法平均檢測準確率提升了11%。

圖5 兩個數據集上不同算法的P-R曲線Fig.5 P-R curves of different algorithms on two datasets
Ji等[58]根據車道線圖縱向和橫向分布密度不一致的特點,將車道線圖劃分為S×2S網格,并簡化網絡將原YOLO v3算法中的卷積層從53層調整為49層,以及對簇中心距離和損失函數等參數進行了改動。最終平均檢測準確率為92.03%,處理速度為48 FPS,該改動更適合于3車道線等小目標的檢測。張翔等[59]同樣采用S×2S網格密度的YOLO v3算法,并在雙向循環門限單元(bidirectional gated recurrent unit,BGRU)的基礎上,提出基于車道線分布關系的車道線檢測模型(BGRU-Lane,BGRU-L)。最后利用基于置信度的D-S(Dempster-Shafer)算法融合YOLO v3(S×2S)和BGRU-L的檢測結果,提高了模型檢測小尺寸、大寬高比物體的準確度。
Deng等[60]采用MobileNetV3作為特征提取塊,用引入了注意力機制CBAM(convolutional block attentionmodule)的YOLO v4和SegNet作為分支來檢測車輛和車道線,適用于跟車場景的車輛和車道線多任務聯合檢測模型。
在進行車道線的研究過程中,文獻[56]提出了一種標簽圖片的自動標注算法,豐富了數據集的同時提高了標注效率,文獻[60]通過使用輕量級網絡MobileNetV3提高網絡檢測速度,或者通過修改網絡密度使算法更適用于車道線的檢測。但是在對于大坡度以及復雜場景中的車道線的識別還存在局限性,需要進一步的進行研究(如表7所示)。

表7 車道線的檢測研究工作Table 7 Research work on detection of lane line
通過對基于YOLO算法的自動駕駛目標檢測現狀綜述,了解到要擁有更精確和實時的檢測效果,實現自動駕駛汽車的普遍推廣應用,還面臨眾多挑戰。本文針對這些挑戰,提出如下可能的解決方案和潛在的發展方向:
(1)在檢測上擴大目標檢測的內容范圍。以交通標志為例,道路設計的過程中,涉及到的交通路標遠不止現階段實驗的標志,現階段檢測的交通標志以指示標志、禁止標志、警告標志為主,但是實際情況中還包含眾多的指路標志和輔助標志。對于這些標志還需進一步擴展相關數據集、設計能夠理解道路規則和其他道路使用者行為的自動駕駛車輛,以確保自動駕駛車輛在停車標志、減速標識、紅燈及會車等情況自動降低車速,做出合理應答。
(2)在檢測場景上進一步考慮多種復雜環境,有效控制復雜環境對檢測效果的影響。仿真測試驗證是現在自動駕駛測試領域的主要使用手段,仿真環境的可信度直接影響著測試結果的準確度,現階段的仿真往往會忽略掉一些環境因素對其準確性的影響,在未來的仿真測試中考慮包括霧霾、大雨等自然環境干擾,添加場地、交通對其的影響,將實驗室效果越接近自然且真實的環境,越能降低現場測試的成本。
(3)訓練深度學習模型需要大量數據,龐大的計算量會降低檢測速度,所以可以通過加入輕量級網絡,如MobileNet系列、ShuffleNet系列等保證網絡的實時性,同時通過改變參數和相關函數提升檢測精度。
(4)自動駕駛車輛的通信資源寶貴,計算資源有限,當系統的計算資源出現不足時將嚴重影響自動駕駛車輛目標檢測的精度。隨著網絡技術的發展,可以通過網絡共享協同的方式,將周邊不同車輛的檢測內容進行共享,減少網絡的數據處理量,進一步提升檢測實時性。但同時也要注意關注信息冗余,減少不必要信息的共享,避免資源浪費。
深度學習方法助力著自動駕駛目標檢測技術的快速發展,是未來的重要研究方向之一。本文綜述了YOLO系列算法和自動駕駛車輛的發展歷程及其在自動駕駛目標實時檢測中的應用,將該方法應用到真實環境中還面臨著許多挑戰。
在交通標志的檢測過程中由于數據集采集標注的問題,交通標志的識別類別不夠完整;在交通燈的檢測過程中,黃燈數據集偏小,對于深度學習的準確性產生了一定的影響;在車輛及行人的檢測過程中,關注于改進網絡結構以及損失函數;在車道線的檢測過程中,會選擇將算法的網格密度修改為S×2S。
通過不同的方式不斷的改進自動駕駛目標檢測的實時性與精確性,但是現階段的實驗結果還存在一定的局限性,同時在綜述過程中發現文章關注的性能不同,導致羅列較多性能但是同樣的性能對比卻不多。同時新階段YOLO系列的算法在不斷更新,推出了YOLO-X版本,但是YOLO-v4后的研究論文還有一定的空缺,需要進一步從不同角度進行研究。