摘要:針對(duì)城市交通場(chǎng)景日益復(fù)雜以及自動(dòng)駕駛中行人與車輛實(shí)時(shí)檢測(cè)精度亟須提高的問題,本文提出了一種基于 YOLOv10s 的車輛與行人檢測(cè)方法。首先,對(duì)自動(dòng)駕駛常用的 KITTI 數(shù)據(jù)集進(jìn)行數(shù)據(jù)分類和格式轉(zhuǎn)換的預(yù)處理;然后,將數(shù)據(jù)集按照 8:1:1 的比例隨機(jī)劃分為訓(xùn)練集、驗(yàn)證集和測(cè)試集;最后,采用 YOLOv10s 模型進(jìn)行訓(xùn)練、驗(yàn)證和測(cè)試。實(shí)驗(yàn)結(jié)果表明,YOLOv10s 在 KITTI 數(shù)據(jù)集上的平均精度均值為 92.7%,其中 Car 類、Cyclist 類和 Pedestrian 類的 mAP 值分別為 98.4%、92.3% 和 87.4%,檢測(cè)效果較為優(yōu)秀。
關(guān)鍵詞:城市交通;自動(dòng)駕駛;行人車輛檢測(cè);KITTI 數(shù)據(jù)集;YOLOv10s
中圖分類號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2024)24-0025-03
開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID)
0 引言
計(jì)算機(jī)視覺被稱為計(jì)算機(jī)的眼睛,為智能交通、自動(dòng)駕駛等任務(wù)的實(shí)現(xiàn)提供了技術(shù)支持[1]。在自動(dòng)駕駛中,目標(biāo)檢測(cè)是最基本的任務(wù),是后續(xù)目標(biāo)識(shí)別、目標(biāo)跟蹤等任務(wù)的基礎(chǔ)。自動(dòng)駕駛中的目標(biāo)檢測(cè)包括對(duì)車輛、行人、建筑物等物體的實(shí)時(shí)檢測(cè),其中最重要的是對(duì)行駛道路上的車輛和行人的檢測(cè)。有效的車輛和行人檢測(cè)方法有助于自動(dòng)駕駛車輛及時(shí)避開障礙物、及時(shí)調(diào)整路線規(guī)劃,對(duì)自動(dòng)駕駛的研究和應(yīng)用具有重要意義。
近年來,許多學(xué)者在車輛和行人檢測(cè)算法方面進(jìn)行了大量研究,推出了許多優(yōu)秀的檢測(cè)方法。其中,YOLO系列因其在性能與效率之間的出色平衡而受到越來越多的歡迎,成為諸多檢測(cè)方法中熱點(diǎn)研究方向之一[2]。隨著 YOLO 系列算法的不斷更新,研究者們也提出了許多基于 YOLO 系列的改進(jìn)算法,這些改進(jìn)主要集中在非極大值抑制(NMS)、網(wǎng)絡(luò)結(jié)構(gòu)等方面。例如,王啟明等[3]通過改進(jìn) K-means 聚類算法生成先驗(yàn)框并使用軟非極大值抑制(Soft-NMS)來優(yōu)化對(duì)重疊目標(biāo)的檢測(cè);梁策等[4]通過優(yōu)化非極大值抑制算法,增加更多的特征層與殘差單元,提升對(duì)小目標(biāo)及多尺度目標(biāo)的識(shí)別能力;龔凱等[5]采用輕量化網(wǎng)絡(luò) Mobilenetv2 替代 YOLOv4 中原有的主干網(wǎng)絡(luò),以獲取有效特征層,并降低原有網(wǎng)絡(luò)的運(yùn)算量和參數(shù)量;郭志堅(jiān)等[6]通過加入 CA 注意力機(jī)制模塊和設(shè)計(jì) CSP2-DBL 模塊改進(jìn) YOLOv4 算法,提高網(wǎng)絡(luò)計(jì)算速度;秦憶南等[7]通過卷積模塊的替換,將 Neck 網(wǎng)絡(luò)變?yōu)?Slim-Neck 網(wǎng)絡(luò),提升算法的平均精度和計(jì)算速度。郝博等[8]通過融合 Swin Transform 模塊和 C3 模塊優(yōu)化 YOLOv7 模型,提高對(duì)小目標(biāo)的檢測(cè)精度;鄧天民等[9]通過融合內(nèi)容感知重組特征和自適應(yīng)權(quán)重改進(jìn) YOLOv5 模型,提高算法檢測(cè)精度。雖然以上算法在一定程度上提高了車輛和行人的檢測(cè)精度,但我國(guó)交通環(huán)境日益復(fù)雜,自動(dòng)駕駛下的車輛和行人實(shí)時(shí)檢測(cè)仍需進(jìn)一步提高。
1 數(shù)據(jù)預(yù)處理
1.1選擇數(shù)據(jù)集
本文選擇的數(shù)據(jù)集為KITTI 數(shù)據(jù)集。KITTI 數(shù)據(jù)集由德國(guó)卡爾斯魯厄理工學(xué)院和豐田美國(guó)技術(shù)研究院共同收集和建立,拍攝于德國(guó)卡爾斯魯厄及其周圍,涵蓋市區(qū)、鄉(xiāng)村和高速公路等場(chǎng)景,是目前國(guó)際上用于自動(dòng)駕駛場(chǎng)景中的計(jì)算機(jī)視覺算法評(píng)測(cè)最常用的數(shù)據(jù)集之一。
1.2數(shù)據(jù)分類
本文將 KITTI 數(shù)據(jù)集的數(shù)據(jù)分為三類,分別為機(jī)動(dòng)車(Car)、非機(jī)動(dòng)車(Cyclist)和行人(Pedestrian)。在分類中,筆者將 KITTI 數(shù)據(jù)集中的汽車(Car)、面包車(Van)、卡車(Truck)、有軌電車(Tram)合并為機(jī)動(dòng)車(Car)類;將行人(Pedestrian)和坐著的行人(Person_sitting)合并為行人(Pedestrian)類;非機(jī)動(dòng)車(Cyclist)類保持不變;而雜項(xiàng)(Misc)則被刪除。
1.3格式轉(zhuǎn)換
在 KITTI 數(shù)據(jù)集的訓(xùn)練數(shù)據(jù)中,每張圖像都有對(duì)應(yīng)的標(biāo)簽文件。原始標(biāo)簽文件中的每一行表示一個(gè)物體的標(biāo)注信息,信息包括類別、觀測(cè)角度、2D 邊界框等數(shù)據(jù)。YOLO 模型的訓(xùn)練和測(cè)試常用的標(biāo)簽格式是 TXT 格式,其標(biāo)注信息包含了類別和物體邊界框的中心點(diǎn)坐標(biāo)以及歸一化后的寬度和高度。因此,本文需要將 KITTI 數(shù)據(jù)集的原始標(biāo)簽轉(zhuǎn)換為 YOLO 模型常用的 TXT 格式標(biāo)簽。具體轉(zhuǎn)換步驟如下:
1)獲取每個(gè)原始標(biāo)簽文檔對(duì)應(yīng)圖像的寬[W]和高[H]。
2)獲取每個(gè)物體在原始標(biāo)簽文檔中的2D邊界值,包括左上角點(diǎn)坐標(biāo)[x1,y1]和右下角坐標(biāo)[(x2,y2)]。
3)根據(jù)公式(1)至公式(4),計(jì)算出邊界框的中心點(diǎn)坐標(biāo)[(x,y)]以及寬度[w]和高度[h],并將這些信息歸一化。
[x=x1+x22] (1)
[y=y1+y22] (2)
[w=x2-x1] (3)
[h=y2-y1] (4)
4)根據(jù)公式(5)至(8)進(jìn)行歸一化處理,得到歸一化后的中心點(diǎn)坐標(biāo)[(x,y)]以及邊界框的寬度[w]和高度[h]。
[x=xW] (5)
[y=yH] (6)
[w=wW] (7)
[h=hH] (8)
經(jīng)過數(shù)據(jù)預(yù)處理,本文將 KITTI 數(shù)據(jù)集的原始標(biāo)簽轉(zhuǎn)換為 YOLO 模型常用的 TXT 格式標(biāo)簽。然后,將預(yù)處理后的數(shù)據(jù)集按照 8:1:1 的比例隨機(jī)劃分為訓(xùn)練集、驗(yàn)證集和測(cè)試集。
2 YOLOv10 算法
YOLOv10 算法是 YOLO 系列的最新一代算法,旨在解決以往版本在目標(biāo)檢測(cè)中的后處理和模型架構(gòu)方面的不足。通過消除非極大值抑制(NMS)處理和優(yōu)化模型設(shè)計(jì),YOLOv10 提升了檢測(cè)性能和效率[10]。
2.1 無 NMS 訓(xùn)練
YOLOv10 算法采用了雙標(biāo)簽分配策略。在一對(duì)多標(biāo)簽分配策略的基礎(chǔ)上,引入了一對(duì)一標(biāo)簽分配策略。這使得模型不僅能夠提供豐富的監(jiān)督信號(hào),還能避免在推理過程中使用 NMS,從而提高模型的推理速度和效率。此外,YOLOv10 還采用一致性匹配公式,確保一對(duì)一標(biāo)簽分配策略能夠提供更高質(zhì)量的樣本,進(jìn)而提升整體性能,如圖 1 所示。
2.2 優(yōu)化模型設(shè)計(jì)
YOLOv10 模型在設(shè)計(jì)上進(jìn)行了優(yōu)化,包括使用輕量化分類頭、空間與通道解耦的下采樣方式,以及引入 CIB(Compact Inverted Block)模塊,旨在減少計(jì)算成本并提高效率。此外,通過采用大核卷積和部分自注意力(PSA,Partial Self-attention)機(jī)制,模型在保持低計(jì)算成本的同時(shí),提高了檢測(cè)精度,如圖 2 所示。
YOLOv10 系列包含5個(gè)模型,從小到大分別是 YOLOv10n、YOLOv10s、YOLOv10m、YOLOv10l 和 YOLOv10x。YOLOv10n 是最小但速度最快的模型,而 YOLOv10x 則是最精準(zhǔn)但速度相對(duì)較慢的模型。用戶可以根據(jù)具體的檢測(cè)場(chǎng)景需求選擇合適的模型??紤]到本文中檢測(cè)目標(biāo)大多為小目標(biāo),且對(duì)檢測(cè)實(shí)時(shí)性要求較高,因此選擇 YOLOv10s 模型作為車輛與行人檢測(cè)的模型。
3 基于 YOLOv10s 的車輛與行人檢測(cè)方法
本文提出的基于 YOLOv10s 的車輛與行人檢測(cè)方法如圖 3 所示。
1)選擇數(shù)據(jù)集。本文選擇的數(shù)據(jù)集是 KITTI 數(shù)據(jù)集。
2)數(shù)據(jù)預(yù)處理。
數(shù)據(jù)預(yù)處理包括數(shù)據(jù)分類和格式轉(zhuǎn)換。將 KITTI 數(shù)據(jù)集的數(shù)據(jù)分為3類,分別是機(jī)動(dòng)車(Car)、非機(jī)動(dòng)車(Cyclist)和行人(Pedestrian),并將原始標(biāo)簽轉(zhuǎn)換為 YOLO 模型常用的 TXT 格式標(biāo)簽。最后,將數(shù)據(jù)集按照 8:1:1 的比例隨機(jī)劃分為訓(xùn)練集、驗(yàn)證集和測(cè)試集。
3)訓(xùn)練模型。將預(yù)處理后的訓(xùn)練集輸入 YOLOv10s 模型進(jìn)行訓(xùn)練,從而得到訓(xùn)練后的車輛與行人檢測(cè)模型。
4)驗(yàn)證模型。將預(yù)處理后的驗(yàn)證集輸入訓(xùn)練好的車輛與行人檢測(cè)模型進(jìn)行驗(yàn)證,以獲得驗(yàn)證后的模型。
5)測(cè)試模型。將預(yù)處理后的測(cè)試集輸入經(jīng)過驗(yàn)證的車輛與行人檢測(cè)模型中進(jìn)行測(cè)試,以獲得檢測(cè)結(jié)果。
3 實(shí)驗(yàn)與結(jié)果分析
3.1 實(shí)驗(yàn)平臺(tái)
為驗(yàn)證本文方法的有效性,搭建了相關(guān)實(shí)驗(yàn)平臺(tái)。操作系統(tǒng)為 Windows 10 專業(yè)版,集成開發(fā)環(huán)境為 PyCharm 社區(qū)版 2023.3.2,編程語言為 Python 3.6,深度學(xué)習(xí)框架為 PyTorch 1.8.0,CPU 為 12th Gen Intel(R) Core(TM) i5-12400F 2.50GHz,GPU 為 NVIDIA GeForce RTX 3060 Ti。
3.2 實(shí)驗(yàn)評(píng)價(jià)指標(biāo)
本實(shí)驗(yàn)采用精確率(Precision)、召回率(Recall)和平均精度均值(mean Average Precision)三種指標(biāo)來衡量 YOLOv10s 模型對(duì)車輛與行人的檢測(cè)效果。其計(jì)算公式如下(9)、(10)、(11)、(12)所示。
[P=TPTP+FP×100%] (9)
[R=TPTP+FN×100%] (10)
[AP=01P(R)d R] (11)
[mAP=i=1kAPik] (12)
式中,[TP]代表檢測(cè)為正類的正樣本數(shù)量;[FP]代表檢測(cè)為正類的負(fù)樣本數(shù)量;[FN]表示檢測(cè)為負(fù)類的正樣本數(shù)量;[P]表示所有檢測(cè)為正類的集合中正樣本所占的比例;[R]表示所有正樣本集合中檢測(cè)為正類的樣本所占的比例;[AP]表示[PR]曲線與坐標(biāo)軸圍成的面積;[mAP]代表各類別[AP]的平均值。
3.3 實(shí)驗(yàn)結(jié)果及分析
本文將 YOLOv10s 模型應(yīng)用于經(jīng)過預(yù)處理的 KITTI 數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),各項(xiàng)結(jié)果如表 1所示。
由表 2 可以看出,YOLOv10s 模型在 KITTI 數(shù)據(jù)集上的平均精度均值[mAP]為 92.7%,檢測(cè)效果較好。其中 Car 類的[mAP]值最高,為 98.4%,而 Cyclist 類和 Pedestrian 類相對(duì)較低,分別為 92.3% 和 87.4%。其主要原因包括:1)樣本數(shù)量不同:數(shù)據(jù)集中 Car 類的樣本最多且最豐富,因此檢測(cè)效果最好,而 Cyclist 類和 Pedestrian 類樣本相對(duì)較少;2)樣本有相似之處:Cyclist 類和 Pedestrian 類的樣本存在類似之處,比如都涉及人,當(dāng)目標(biāo)距離較遠(yuǎn)時(shí),容易造成誤檢;3)目標(biāo)大小不同:Cyclist 類和 Pedestrian 類目標(biāo)比 Car 類小,檢測(cè)難度增加,增加了漏檢的可能性。
為了進(jìn)一步提升 Cyclist 類和 Pedestrian 類的檢測(cè)精度,筆者可以從數(shù)據(jù)集和模型等方面進(jìn)行改進(jìn)。例如,擴(kuò)展 KITTI 數(shù)據(jù)集,從數(shù)量和多樣性方面進(jìn)一步豐富 Cyclist 類和 Pedestrian 類的訓(xùn)練樣本;改進(jìn) YOLOv10s 模型,使其能夠更好地檢測(cè)較小目標(biāo)。
4 結(jié)束語
較好的車輛與行人實(shí)時(shí)檢測(cè)方法能夠提高自動(dòng)駕駛的安全性和實(shí)時(shí)性。本文提出的基于 YOLOv10s 的車輛與行人檢測(cè)方法,首先對(duì) KITTI 數(shù)據(jù)集進(jìn)行了數(shù)據(jù)預(yù)處理,然后按照 8:1:1 的比例隨機(jī)劃分為訓(xùn)練集、驗(yàn)證集和測(cè)試集,最后采用 YOLOv10s 模型進(jìn)行訓(xùn)練、驗(yàn)證和測(cè)試。實(shí)驗(yàn)表明,YOLOv10s 模型在 KITTI 數(shù)據(jù)集上的平均精度均值 (mAP) 為 92.7%,檢測(cè)效果較好,其中 Car 類、Cyclist 類、Pedestrian 類的 mAP 值分別為 98.4%、92.3%、87.4%。為了進(jìn)一步提rAvLyqZRXRNf+bx8zgBzOLSzuEnj+opTv3guWtgjVyg=升 Cyclist 類和 Pedestrian 類的檢測(cè)精度,我們可以通過擴(kuò)展 KITTI 數(shù)據(jù)集和改進(jìn) YOLOv10s 模型等方面進(jìn)行改進(jìn)。
參考文獻(xiàn):
[1] 王譯崧,華杭波,孔明,等.Rep-YOLOv8車輛行人檢測(cè)分割算法[J].現(xiàn)代電子技術(shù),2024,47(9):143-149.
[2] 張修懿,陳長(zhǎng)興,杜娟,等.輔助駕駛的車輛與行人檢測(cè)模型YOLO-DNF[J].計(jì)算機(jī)工程與應(yīng)用,2022,58(24):212-222.
[3] 王啟明,何梓林,張棟林,等.基于YOLOv3的霧天場(chǎng)景行人車輛檢測(cè)方法研究[J].控制工程,2024,31(3):510-517.
[4] 梁策,王景中,王寶成.基于YOLOv3的車輛行人目標(biāo)檢測(cè)算法改進(jìn)方法研究[J].計(jì)算機(jī)應(yīng)用與軟件,2022,39(7):201-206,226.
[5] 龔凱,陳垣衡,侯斐斐,等.基于Mobilenetv2-YOLOv4模型的行人車輛檢測(cè)算法[J].電腦與信息技術(shù),2023,31(4):1-5,37.
[6] 郭志堅(jiān),李江勇,祁海軍,等.基于改進(jìn)YOLOv4的紅外行人車輛檢測(cè)算法[J].激光與紅外,2023,53(4):607-614.
[7] 秦憶南,施衛(wèi),張馳皓,等.基于改進(jìn)YOLOv5s的道路行人與車輛檢測(cè)算法[J].電腦知識(shí)與技術(shù),2023,19(31):5-8.
[8] 郝博,谷繼明,劉力維.基于ST-YOLOv7的無人機(jī)視角下行人及車輛識(shí)別[J].兵器裝備工程學(xué)報(bào),2024,45(3):293-298.
[9] 鄧天民,劉金鳳,王春霞,等.基于內(nèi)容感知重組特征的車輛行人檢測(cè)算法[J].重慶交通大學(xué)學(xué)報(bào)(自然科學(xué)版),2023,42(10):132-141.
[10] WANG A, CHEN H, LIU L H, et al. YOLOv10: Real-Time End-to-End Object Detection[EB/OL]. arXiv, 2024. Available at: http://arxiv.org/abs/2405.14458.
【通聯(lián)編輯:唐一東】