尹譽(yù)翔
(蘭州交通大學(xué)交通運(yùn)輸學(xué)院,蘭州 730070)
隨著自動(dòng)駕駛技術(shù)[1]的快速發(fā)展,如何能夠準(zhǔn)確檢測(cè)包括各類車輛、行人等在內(nèi)的環(huán)境目標(biāo)已成為自動(dòng)駕駛系統(tǒng)面臨的關(guān)鍵問題。實(shí)時(shí)性和檢測(cè)準(zhǔn)確率是衡量目標(biāo)檢測(cè)算法優(yōu)劣的兩大關(guān)鍵指標(biāo)。作為當(dāng)下主流的目標(biāo)檢測(cè)算法之一,YOLOv5通過多尺度特征融合[2]方法實(shí)現(xiàn)了檢測(cè)速度快與檢測(cè)精度高的良好平衡。模擬平臺(tái)的出現(xiàn)為目標(biāo)檢測(cè)算法的開發(fā)與驗(yàn)證提供了新思路。如Carla模擬環(huán)境[3]可通過配置各類交通工具、行人模型等元素構(gòu)建細(xì)致的交通場(chǎng)景,生成包含復(fù)雜目標(biāo)的圖像數(shù)據(jù),為評(píng)估目標(biāo)檢測(cè)算法性能提供了可靠的平臺(tái)支持。本研究構(gòu)建了Carla模擬環(huán)境,通過配置各種靜態(tài)和動(dòng)態(tài)目標(biāo)元素收集包含多類別車輛、行人及動(dòng)物的視覺數(shù)據(jù),采用主流的YOLOv5目標(biāo)檢測(cè)算法,訓(xùn)練模型對(duì)這些目標(biāo)進(jìn)行識(shí)別與定位,考察模型在模擬生成的復(fù)雜場(chǎng)景[4]中的泛化能力,通過增強(qiáng)模型訓(xùn)練的數(shù)據(jù)量和場(chǎng)景的多樣性提高模型的魯棒性。整個(gè)研究遵循嚴(yán)謹(jǐn)?shù)膶?shí)驗(yàn)設(shè)計(jì)方法,從多個(gè)角度全面考察YOLOv5在模擬平臺(tái)上的檢測(cè)性能,研究成果可為后續(xù)進(jìn)行目標(biāo)檢測(cè)算法優(yōu)化提供有價(jià)值的借鑒。未來的研究將更側(cè)重于提高模型在復(fù)雜環(huán)境中的檢測(cè)穩(wěn)定性,將在仿真環(huán)境中獲得的模型更好地遷移到實(shí)際的自動(dòng)駕駛應(yīng)用中。
YOLOv5是一種基于深度學(xué)習(xí)的單階段目標(biāo)檢測(cè)算法,由Ultralytics Lab團(tuán)隊(duì)在2020年開源,對(duì)之前的YOLOv4版本[5]進(jìn)行優(yōu)化升級(jí)。YOLOv5最大的特點(diǎn)是端到端實(shí)現(xiàn)目標(biāo)檢測(cè),無需生成候選框,直接在特征圖上完成分類與框回歸,從而實(shí)現(xiàn)檢測(cè)速度快且準(zhǔn)確率高的平衡。相比YOLOv4繼續(xù)使用Darknet53作為特征提取骨干網(wǎng)絡(luò),YOLOv5采用了參數(shù)量更少、特征提取能力更強(qiáng)的CSPDarknet,有效減小了模型大小,提升了檢測(cè)效率。在網(wǎng)絡(luò)頭部使用FPN(特征金字塔網(wǎng)絡(luò))模塊進(jìn)行多尺度特征的提取和融合,而YOLOv4中默認(rèn)使用的是PANet結(jié)構(gòu),FPN增強(qiáng)了模型對(duì)各種尺度目標(biāo)的適應(yīng)性。在預(yù)測(cè)模塊,YOLOv5沿用了YOLOv3中的設(shè)計(jì)思路,即在不同尺度的特征圖上同時(shí)預(yù)測(cè)目標(biāo)類別和位置信息。在訓(xùn)練過程中,YOLOv5使用各式數(shù)據(jù)增強(qiáng)技術(shù)[6],如CutMix、Mosaic等,增強(qiáng)了模型對(duì)場(chǎng)景和目標(biāo)變化的魯棒性。YOLOv5采用了兼具分類損失、置信度損失及框回歸損失的復(fù)合損失函數(shù),使模型收斂更加平穩(wěn)。綜合來看,YOLOv5在速度和準(zhǔn)確度方面都超過了之前的版本,在公開數(shù)據(jù)集上的MAP指標(biāo)可達(dá)45%左右,保持了實(shí)時(shí)檢測(cè)的能力要求。由于其性能高效穩(wěn)定,已得到了廣泛應(yīng)用,如在工業(yè)質(zhì)檢[7]及學(xué)術(shù)研究等領(lǐng)域。圖1為YOLOv5的網(wǎng)絡(luò)結(jié)構(gòu)。
圖1 YOLOv5的網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Network structure of YOLOv5
Carla是一款開源自動(dòng)駕駛仿真系統(tǒng)[8],用于自動(dòng)駕駛算法的開發(fā)、訓(xùn)練及驗(yàn)證。Carla最大的特點(diǎn)是可以生成細(xì)致逼真的城市交通環(huán)境,場(chǎng)景中包含復(fù)雜的道路交通網(wǎng)絡(luò)、各類建筑、豐富的天氣效果及時(shí)間環(huán)境等因素,既具有真實(shí)感又可編程可控制虛擬環(huán)境。Carla提供了靈活開放的編程接口,允許用戶通過Python或C++兩種語言進(jìn)行交互,如讀取車載虛擬傳感器數(shù)據(jù)及控制虛擬車輛運(yùn)動(dòng)等。Carla的主要功能是提供靈活的傳感器配置選項(xiàng),可模擬生成類似相機(jī)、激光雷達(dá)、IMU、GPS在內(nèi)的多種傳感器數(shù)據(jù);支持豐富的環(huán)境效果,如時(shí)序的日夜光照變化、多種天氣條件的模擬;包含復(fù)雜的交通流模塊,可模擬車輛、行人和自行車的運(yùn)動(dòng)行為;開放式的地圖自定義功能,用戶可根據(jù)需要生成交通網(wǎng)絡(luò);智能Agent API基于強(qiáng)化學(xué)習(xí)方法使訓(xùn)練智能體成為可能。綜上所述,Carla提供了一個(gè)功能全面且可定制的仿真環(huán)境生成平臺(tái),可大幅提升自動(dòng)駕駛算法研究的效率。圖2為Carla模擬環(huán)境概念圖,通過Unreal Engine實(shí)現(xiàn)了逼真的3D場(chǎng)景渲染和復(fù)雜的交通流模擬,提供了開放的編程接口,使其成為自動(dòng)駕駛算法研究的強(qiáng)大工具。
圖2 Carla模擬環(huán)境概念圖Fig.2 Concept map of Carla simulation environment
Carla作為一個(gè)開源的自動(dòng)駕駛仿真平臺(tái),提供了構(gòu)建虛擬交通環(huán)境的工具和豐富的接口功能。為了在該平臺(tái)上進(jìn)行自動(dòng)駕駛算法的開發(fā)與評(píng)估,需正確配置和搭建Carla的軟硬件運(yùn)行環(huán)境。圖3為Carla的系統(tǒng)架構(gòu)及各核心模塊,包括運(yùn)動(dòng)規(guī)劃、控制、感知等部分及連接環(huán)境和算法接口,支持開發(fā)閉環(huán)的自動(dòng)駕駛仿真系統(tǒng)。具體的搭建流程為根據(jù)Carla發(fā)布的系統(tǒng)配置要求,在Window系統(tǒng)下安裝指定版本的Python解釋器、CUDA工具包、英偉達(dá)顯卡驅(qū)動(dòng)等相關(guān)軟硬件。Carla對(duì)運(yùn)行環(huán)境有較高要求,需嚴(yán)格參考指南選擇合適的配置。從GitHub上克隆或下載Carla的最新源代碼,獲取包含城市資源和python接口的完整代碼庫(kù)。Carla作為開源項(xiàng)目在GitHub上進(jìn)行維護(hù)更新。使用Makefile或CMake等方法編譯Carla源代碼。編譯過程會(huì)自動(dòng)下載城市地圖資源并檢查相關(guān)依賴庫(kù)的可用性。在UnityEditor中打開編譯好的Carla項(xiàng)目,運(yùn)行并播放場(chǎng)景即可進(jìn)入高保真的三維虛擬城市環(huán)境中。運(yùn)行Carla提供的示例Python或C++腳本,驗(yàn)證Carla是否被正確安裝和配置,所有的接口功能正常工作。通過配置質(zhì)量水平、分辨率比例等參數(shù)以平衡視覺效果和仿真的運(yùn)行流暢度。根據(jù)項(xiàng)目需要編寫Python或C++代碼,利用Carla提供的豐富接口連接感知模塊、控制模塊及評(píng)估工具等,構(gòu)建閉環(huán)的仿真實(shí)驗(yàn)系統(tǒng)。
搭建好Carla仿真環(huán)境后,利用該平臺(tái)生成用于模型訓(xùn)練和驗(yàn)證的數(shù)據(jù)集。需根據(jù)實(shí)驗(yàn)要求設(shè)計(jì)虛擬傳感器,定義場(chǎng)景元素,通過控制API采集包含不同目標(biāo)的圖像數(shù)據(jù)。在Carla中配置虛擬攝像頭采集數(shù)據(jù)的設(shè)置,可以看到攝像頭的位置和角度拍攝到了場(chǎng)景中的多類目標(biāo),包括行人、車輛等元素。對(duì)采集的數(shù)據(jù)進(jìn)行整理,使用標(biāo)注工具完成目標(biāo)的框選注釋。這一部分詳述了在Carla平臺(tái)上收集和標(biāo)注圖像數(shù)據(jù)集的關(guān)鍵過程?;贑arla模擬環(huán)境收集圖像數(shù)據(jù)集的一般流程如下:①定義場(chǎng)景與傳感器配置。根據(jù)實(shí)驗(yàn)需求設(shè)定所需的場(chǎng)景元素,如車輛、行人、交通信號(hào)和道路條件等,配置所需的攝像頭等虛擬傳感器參數(shù)。②播放模擬場(chǎng)景生成數(shù)據(jù)。啟動(dòng)Carla服務(wù)器,加載定義好的場(chǎng)景,通過編程控制相機(jī)進(jìn)行數(shù)據(jù)采集。這一過程可通過手動(dòng)操作完成,也可編寫自動(dòng)化的腳本程序?qū)崿F(xiàn)。③導(dǎo)出記錄的原始數(shù)據(jù)。Carla支持圖片或視頻格式,批量導(dǎo)出虛擬傳感器采集到的圖像、點(diǎn)云等數(shù)據(jù)。需對(duì)這些原始數(shù)據(jù)進(jìn)行整理,方便后續(xù)處理。④對(duì)導(dǎo)出的數(shù)據(jù)進(jìn)行標(biāo)注。采用標(biāo)注軟件手動(dòng)標(biāo)注感興趣的目標(biāo),如行人、車輛等,生成含標(biāo)注的圖像數(shù)據(jù)集。⑤數(shù)據(jù)清洗與增強(qiáng)。刪除錯(cuò)誤數(shù)據(jù),校驗(yàn)并修正標(biāo)注框,采用旋轉(zhuǎn)、擾動(dòng)等操作對(duì)數(shù)據(jù)集進(jìn)行增廣。⑥劃分訓(xùn)練集和測(cè)試集。按比例將增強(qiáng)后的最終數(shù)據(jù)集分為訓(xùn)練和測(cè)試用途。
模型搭建和訓(xùn)練是基于Pytorch深度學(xué)習(xí)框架進(jìn)行的。為實(shí)現(xiàn)高效的并行計(jì)算,調(diào)用了NVIDIA的GPU設(shè)備及CUDA并行計(jì)算架構(gòu)。借助GPU強(qiáng)大的并行處理能力及CUDA和CuDNN等加速庫(kù)的優(yōu)化,模型訓(xùn)練速度顯著提升。具體環(huán)境配置見表1。表1給出了主要軟硬件信息,包括GPU型號(hào)、CUDA和CuDNN版本等。充分利用高性能的計(jì)算環(huán)境,有助于高效訓(xùn)練出性能優(yōu)異的目標(biāo)檢測(cè)模型。
表1 實(shí)驗(yàn)運(yùn)行環(huán)境
輸入圖像被 resize 到 640x640 像素,這個(gè)尺寸經(jīng)過多項(xiàng)試驗(yàn)驗(yàn)證可在檢測(cè)速度和效果之間取得最佳平衡。標(biāo)注數(shù)據(jù)集按照通常的比例劃分為 80% 訓(xùn)練數(shù)據(jù)和 20% 驗(yàn)證數(shù)據(jù),前者可使模型獲得充分學(xué)習(xí),后者可評(píng)估模型泛化能力??紤]到檢測(cè)任務(wù)的特點(diǎn),模型選用隨機(jī)梯度下降(SGD)算法進(jìn)行優(yōu)化,初始學(xué)習(xí)率為 0.01,采用分段常量衰減策略,即每 10 個(gè)epoch時(shí)降低10倍,以便模型快速接近局部最優(yōu)解。作為優(yōu)化目標(biāo)的損失函數(shù)采用 YOLOv5 預(yù)定義的包含分類、置信度及邊框回歸三項(xiàng)的綜合損失,全面兼顧各個(gè)性能指標(biāo)。根據(jù)GPU的計(jì)算能力將訓(xùn)練時(shí)的批大小(batch size)設(shè)置為8或16,在充分利用并行資源的同時(shí)避免過大的計(jì)算開銷。總的訓(xùn)練周期設(shè)置為100~300 個(gè)epoch,取決于具體的數(shù)據(jù)集規(guī)模,周期數(shù)越多模型效果越好,但需要平衡計(jì)算時(shí)間成本。應(yīng)用隨機(jī)裁剪、翻轉(zhuǎn)等多種圖像增強(qiáng)手段,進(jìn)一步提高模型泛化性。
為評(píng)估構(gòu)建的YOLOv5模型檢測(cè)效果,使用單塊RTX3050 GPU對(duì)模型進(jìn)行訓(xùn)練,參考4.1設(shè)置超參數(shù)。訓(xùn)練過程分為3個(gè)階段:①模型初始化階段。隨機(jī)初始化網(wǎng)絡(luò)參數(shù),配置SGD優(yōu)化算法和分段衰減學(xué)習(xí)率策略,引導(dǎo)模型訓(xùn)練方向。②由于參數(shù)較為隨機(jī),損失函數(shù)值開始較高,在訓(xùn)練迭代過程中隨著訓(xùn)練批數(shù)增加,模型參數(shù)持續(xù)更新優(yōu)化,損失函數(shù)值明顯下降。但可能遭遇梯度消失等難題,需調(diào)整優(yōu)化策略以維持損失下降速度。③模型收斂階段。損失函數(shù)值趨于平穩(wěn),訓(xùn)練可以終止。從表2可以看出,隨著訓(xùn)練輪次的增加,YOLOv5模型在訓(xùn)練集和驗(yàn)證集上的損失均持續(xù)下降,在200輪后趨于穩(wěn)定,驗(yàn)證集損失無明顯變化,說明模型已收斂。測(cè)試了模型在驗(yàn)證集上的檢測(cè)性能。YOLOv5在Carla數(shù)據(jù)集上最終取得了88%以上的mAP,達(dá)到了較優(yōu)的檢測(cè)效果。說明構(gòu)建的模型可有效完成對(duì)Carla場(chǎng)景中的目標(biāo)檢測(cè),后續(xù)工作將在更復(fù)雜場(chǎng)景中進(jìn)一步評(píng)估模型的泛化能力。
表2 算法結(jié)果
針對(duì)自動(dòng)駕駛場(chǎng)景中的目標(biāo)檢測(cè)任務(wù),探索了一種基于仿真的檢測(cè)系統(tǒng)設(shè)計(jì)方案,在Carla平臺(tái)構(gòu)建仿真環(huán)境,采集多傳感器數(shù)據(jù)樣本。該平臺(tái)可靈活配置場(chǎng)景,高效獲取標(biāo)注數(shù)據(jù)集,通過標(biāo)注數(shù)據(jù)訓(xùn)練YOLOv5檢測(cè)模型評(píng)估結(jié)果顯示,基于仿真數(shù)據(jù)訓(xùn)練的模型可達(dá)到較優(yōu)的檢測(cè)性能,驗(yàn)證了仿真技術(shù)的有效性,為后續(xù)遷移學(xué)習(xí)應(yīng)用奠定了基礎(chǔ)。研究還提出并驗(yàn)證了從仿真場(chǎng)景構(gòu)建到模型訓(xùn)練及評(píng)估端到端的檢測(cè)系統(tǒng)設(shè)計(jì)流程,為仿真與實(shí)際需求的融合提供了范例。仿真與真實(shí)場(chǎng)景可能存在差異,需要多方面評(píng)估模型的泛化能力,繼續(xù)增強(qiáng)仿真場(chǎng)景的多樣性,提高模型的魯棒性。未來可深入研究不同遷移學(xué)習(xí)技術(shù),彌補(bǔ)仿真與現(xiàn)實(shí)的差距。探索目標(biāo)檢測(cè)領(lǐng)域中仿真技術(shù)的新應(yīng)用為多源異構(gòu)建模等方向奠定了基礎(chǔ),為集成仿真與實(shí)際應(yīng)用需求提供范例,對(duì)自動(dòng)駕駛領(lǐng)域具有啟發(fā)意義。但該研究仍存在限制與可改進(jìn)之處,如僅構(gòu)建了有限的仿真場(chǎng)景,未來需繼續(xù)豐富場(chǎng)景模式,提高仿真環(huán)境的逼真度。模型當(dāng)前僅在仿真平臺(tái)上評(píng)估,離實(shí)際應(yīng)用還有一定差距,未來需在真實(shí)場(chǎng)景中部署模型,評(píng)估其檢測(cè)性能,研究不同的遷移學(xué)習(xí)技術(shù)以彌補(bǔ)仿真與實(shí)際的鴻溝。當(dāng)前研究側(cè)重目標(biāo)檢測(cè)任務(wù),未來可將更多視覺子任務(wù)如語義分割、運(yùn)動(dòng)預(yù)測(cè)等集成到系統(tǒng)中,構(gòu)建端到端的視覺場(chǎng)景理解框架。