秦慧穎,雷曉春,2,江澤濤,2
(1.桂林電子科技大學(xué) 計(jì)算機(jī)與信息安全學(xué)院, 桂林 541004;2.桂林電子科技大學(xué) 廣西圖像圖形與智能處理重點(diǎn)實(shí)驗(yàn)室, 桂林 541004)
自動(dòng)駕駛近年來備受關(guān)注,如激光雷達(dá)、目標(biāo)檢測(cè)等相關(guān)技術(shù)得到飛速發(fā)展。無人車自動(dòng)行駛過程主要依靠車載的攝像頭、激光雷達(dá)、已建好的高精地圖等來完成。在指定場(chǎng)景下,如果沒有高精地圖,那么無人車將依靠激光雷達(dá)進(jìn)行避障以及車載攝像頭進(jìn)行目標(biāo)的識(shí)別與檢測(cè),從而能順利有序地進(jìn)行相應(yīng)的行駛操作。本文使用華為無人車(下文簡(jiǎn)稱無人車)作為實(shí)驗(yàn)對(duì)象,基于ModelArts平臺(tái)進(jìn)行數(shù)據(jù)集的制作與模型的訓(xùn)練?;緢?chǎng)景為模擬現(xiàn)實(shí)路況,采用紅綠燈、斑馬線、限速和解除限速等標(biāo)志,設(shè)置行人等障礙物,車道線形狀包括直線形、環(huán)形和S形,場(chǎng)景圖如圖1所示。
圖1 華為無人車挑戰(zhàn)賽模擬場(chǎng)景圖
無人車模擬交通場(chǎng)景,通過目標(biāo)檢測(cè)算法識(shí)別與檢測(cè)基本路況信息,來進(jìn)行相應(yīng)的控制操作。通過對(duì)不同數(shù)據(jù)集在不同算法以及不同參數(shù)下的幾組實(shí)驗(yàn)找到優(yōu)化模型,并實(shí)際應(yīng)用于無人車模擬路況行駛。本文對(duì)訓(xùn)練得到的模型準(zhǔn)確度進(jìn)行了測(cè)試,同時(shí)選出較好的模型部署在小車上進(jìn)行對(duì)比。同時(shí),模擬路況的一些實(shí)際情況,對(duì)模型進(jìn)行了改進(jìn),將顏色容易混淆的紅綠燈進(jìn)行位置劃分,對(duì)比未改進(jìn)之前的模型能更精確地判斷紅綠燈的狀態(tài)。
無人車在行駛過程中,分別使用攝像頭獲取實(shí)時(shí)路況信息,激光雷達(dá)檢測(cè)運(yùn)行過程中是否存在障礙物。實(shí)際運(yùn)行過程中,在激光雷達(dá)檢測(cè)到有障礙物時(shí),無人車應(yīng)進(jìn)行避障處理,應(yīng)減速或者直接停下,圖2為模擬行人過斑馬線的場(chǎng)景。而實(shí)時(shí)路況則是在相應(yīng)的路況下,無人車也應(yīng)及時(shí)作出相應(yīng)反應(yīng)?;韭窙r信息包括紅綠燈、斑馬線、限速和解除限速。例如,根據(jù)紅綠燈的規(guī)則,無人車在檢測(cè)當(dāng)時(shí)處于紅燈則應(yīng)在指定位置之前立即停下,遇到綠燈正常通行,在斑馬線處和遇到限速標(biāo)志后應(yīng)減速等。
圖2 模擬行人過斑馬線
無人車的控制部分分為兩個(gè)模塊,激光雷達(dá)和攝像頭獲取的信息同時(shí)對(duì)無人車的運(yùn)行情況進(jìn)行控制。激光雷達(dá)主要檢測(cè)前方障礙物;攝像頭主要用于識(shí)別相應(yīng)的基礎(chǔ)路況信息。而基礎(chǔ)路況信息是需要進(jìn)行處理和識(shí)別的。容易觀察到,基本路況信息中的目標(biāo)比較穩(wěn)定、容易識(shí)別,所以采用目標(biāo)檢測(cè)進(jìn)行處理比較合適。使用目標(biāo)檢測(cè)算法訓(xùn)練出模型,在實(shí)時(shí)路況中,無人車可以進(jìn)行路況識(shí)別檢測(cè),并作出相應(yīng)的反應(yīng)。無人車在運(yùn)行過程中使用模擬環(huán)境,訓(xùn)練數(shù)據(jù)也采用從模擬環(huán)境采集的信息。在訓(xùn)練模型的過程中,選擇幾種性能比較好的算法進(jìn)行訓(xùn)練,并通過比較訓(xùn)練模型的精度來進(jìn)行較好的模型選擇。
通過無人車攝像頭拍攝了3000多張模擬場(chǎng)景圖片,將這些圖片在ModelArts平臺(tái)上進(jìn)行數(shù)據(jù)標(biāo)注,制作成了原始數(shù)據(jù)集DSv1(下文該原始數(shù)據(jù)集均使用DSv1表示)。標(biāo)注目標(biāo)分別為紅綠燈中的紅、黃和綠燈,斑馬線、限速和解除限速六類目標(biāo)。由于數(shù)據(jù)集數(shù)量較少,且訓(xùn)練出來的模型效果不是很理想,所以要對(duì)數(shù)據(jù)集進(jìn)行圖像處理和圖像增強(qiáng),以提高數(shù)據(jù)集的訓(xùn)練效果。同時(shí),也對(duì)原始數(shù)據(jù)集進(jìn)行了數(shù)據(jù)清洗,增加數(shù)據(jù)集的質(zhì)量以及可用性,來訓(xùn)練出更適應(yīng)模擬環(huán)境的模型。圖像增強(qiáng)主要使用原始數(shù)據(jù)集進(jìn)行旋轉(zhuǎn)、疊加以及增加噪聲等處理。原始數(shù)據(jù)集加上進(jìn)行圖像增強(qiáng)之后的數(shù)據(jù)集,制作成了8000多張的數(shù)據(jù)集DSv2(下文該數(shù)據(jù)集均使用DSv2表示)以及20 000張的數(shù)據(jù)集DSv3(下文數(shù)據(jù)集均使用DSv3表示)。
訓(xùn)練的目標(biāo)是分別識(shí)別紅綠黃燈、斑馬線、限速以及解除限速標(biāo)志。于是對(duì)數(shù)據(jù)集進(jìn)行篩選,去掉容易混淆的數(shù)據(jù)集:如綠燈和黃燈,以及紅燈和黃燈容易混淆的圖像。并讓每個(gè)類別的數(shù)據(jù)量盡量相近。DSv2篩選之后剩余6000張圖片,制作成數(shù)據(jù)集DSv4(下文該數(shù)據(jù)集均使用DSv4表示)。經(jīng)過實(shí)驗(yàn)對(duì)比表明,訓(xùn)練集和驗(yàn)證集之間的比例參數(shù)在8∶2和9∶1時(shí)效果會(huì)較好。因此訓(xùn)練過程中,訓(xùn)練集和驗(yàn)證集之間的比例設(shè)置為8∶2或者9∶1,分別進(jìn)行訓(xùn)練,觀察模型的精度。不同的算法和不同的數(shù)據(jù)集獲得較佳的訓(xùn)練效果使用的比例也不同。大量訓(xùn)練之后的結(jié)果顯示,大多數(shù)算法中訓(xùn)練集與驗(yàn)證集的比值DSv1使用9∶1;DSv2使用8∶2進(jìn)行訓(xùn)練效果較好。而在實(shí)際實(shí)驗(yàn)中,我們使用不同的參數(shù)值進(jìn)行實(shí)驗(yàn),對(duì)比得出較好的比例參數(shù)。
數(shù)據(jù)集制作完成后,需要選擇目標(biāo)檢測(cè)算法進(jìn)行訓(xùn)練。不同的目標(biāo)檢測(cè)算法和相應(yīng)的參數(shù)都會(huì)對(duì)模型的精度造成影響。通過實(shí)驗(yàn)采用不同的數(shù)據(jù)集對(duì)不同的算法以及不同的參數(shù)設(shè)置來對(duì)比得到精度較高的模型。選擇使用并在ModelArts上進(jìn)行訓(xùn)練的算法主要有:YOLOv3ResNet18,F(xiàn)asterRCNNResNet50,RetinaNetResNet50,YOLOv3 Darknet53。其中不同的算法使用不同的預(yù)訓(xùn)練模型,對(duì)數(shù)據(jù)進(jìn)行遷移訓(xùn)練。下面將具體介紹算法的預(yù)訓(xùn)練模型,訓(xùn)練集與驗(yàn)證集的比值以及訓(xùn)練的效果(通過模型的參數(shù)值進(jìn)行體現(xiàn)),其中所有的實(shí)驗(yàn)環(huán)境均使用Python3,Tensorflow的版本為1.13.1。
模型的參數(shù)值為Recall(召回率、查全率),Precision(精確率、查準(zhǔn)率),Accuracy(準(zhǔn)確率)和F1 Score(F1值)。其中具體含義及計(jì)算為:
Recall:預(yù)測(cè)為正確的正例數(shù)據(jù)占實(shí)際為正例數(shù)據(jù)的比例,R=TP/(TP+FN)
Precision:預(yù)測(cè)正確的正例數(shù)據(jù)占預(yù)測(cè)為正例數(shù)據(jù)的比例,P=TP/(TP+FP)
Accuracy:正確分類的樣本個(gè)數(shù)占總樣本個(gè)數(shù),A=(TP+TN)/N
F1score:調(diào)和平均值,F(xiàn)=2/(1/P+1/R)=2*P*R/(P+R)
ResNet18網(wǎng)絡(luò)搭載YOLOv3使用ImageNet-1k預(yù)訓(xùn)練模型進(jìn)行訓(xùn)練。ResNet18中有18個(gè)帶權(quán)值的層(convl有一個(gè),conv1.x到conv2.x每一個(gè)含2×2個(gè),池化層有一個(gè)),ResNet網(wǎng)絡(luò)層次較深,故訓(xùn)練效果較好[2]。算法的流程見圖3所示。YOLOv3[3]訓(xùn)練速度快,同時(shí)在訓(xùn)練效果上會(huì)有所下降。表1展示了不同數(shù)據(jù)集下使用不同訓(xùn)練集與驗(yàn)證集比值訓(xùn)練模型的參數(shù)值。YOLOv3對(duì)比起較新的YOLOv4[4]來看,還是具備很好的性能。YOLOv4提升的是訓(xùn)練速度,就訓(xùn)練效果來看,延用YOLOv3會(huì)更適合本模型的訓(xùn)練。
表1 YOLOv3_ResNet18實(shí)驗(yàn)參數(shù)及結(jié)果展示
圖3 使用YOLOv3ResNet18訓(xùn)練模型流程圖
ResNet50網(wǎng)絡(luò)搭載FasterRCNN使用Pascal VOC2007預(yù)訓(xùn)練模型進(jìn)行訓(xùn)練。訓(xùn)練模型流程見圖4所示。ResNet50分為5個(gè)Stage,其中Stage0的結(jié)構(gòu)比較簡(jiǎn)單,相當(dāng)于對(duì)輸入進(jìn)行預(yù)處理,后四個(gè)Stage由Bottleneck(瓶頸層,也稱編碼層)組成,Stage1~Stage5分別包含3、4、6,3個(gè)Bottleneck。表2展示了不同數(shù)據(jù)集下使用不同訓(xùn)練集與驗(yàn)證集比值訓(xùn)練模型的參數(shù)值。Faster RCNN是在Fast RCNN基礎(chǔ)上的改進(jìn),使用區(qū)域建議網(wǎng)絡(luò)(Region Proposal Network, RPN)。RPN是端到端訓(xùn)練的,生成高質(zhì)量區(qū)域建議框,用于Fast RCNN來檢測(cè),這很好地改進(jìn)了Fast RCNN在計(jì)算區(qū)域建議遇到的問題[5]。
圖4 使用FasterRCNNResNet50訓(xùn)練模型流程圖
表2 FasterRCNN_ResNet50實(shí)驗(yàn)參數(shù)及結(jié)果展示
ResNet50網(wǎng)絡(luò)搭載RetinaNet使用VOC07預(yù)訓(xùn)練模型進(jìn)行訓(xùn)練(在VOC07上mAP為83.15%)。訓(xùn)練模型流程如圖5所示。該算法也使用ResNet50進(jìn)行搭載,RetinaNet誕生于YOLOv3之前,針對(duì)One-stage模型中前景和背景類別不平衡的問題,提出Focal Loss損失函數(shù),用來降低大量Easy Negatives(Easy Negatives指的是容易進(jìn)行區(qū)分的負(fù)樣本,相對(duì)應(yīng)的為Hard Negatives是較容易被劃分為正樣本的負(fù)樣本。Hard Negatives權(quán)重提高,對(duì)模型的訓(xùn)練是有好處的)在標(biāo)準(zhǔn)交叉熵中所占權(quán)重[6]。ReinaNet有效的檢測(cè)了Focal Loss損失函數(shù)的有效性。表3展示了不同數(shù)據(jù)集下使用不同訓(xùn)練集與驗(yàn)證集比值訓(xùn)練模型的參數(shù)值。
表3 RetinaNet_ResNet50實(shí)驗(yàn)參數(shù)及結(jié)果展示
圖5 使用RetinaNetResNet50訓(xùn)練模型流程圖
Darknet框架下搭載的YOLOv3使用YOLOv3-Darknet53的COCO預(yù)訓(xùn)練模型進(jìn)行訓(xùn)練。訓(xùn)練模型流程如圖6所示。Darknet是一個(gè)較為輕型的完全基于C與CUDA的框架,易于安裝,沒有任何依賴項(xiàng),移植性非常好,支持CPU和GPU兩種計(jì)算方式。由此可以看出Darknet因?yàn)檩^輕型,沒有很強(qiáng)大的API,但是相比起來也顯得比較靈活。Darknet框架自身的這些特點(diǎn),顯得更適配YOLO,這也與前面使用的ResNet18形成了對(duì)比。表4展示了不同數(shù)據(jù)集下使用不同訓(xùn)練集與驗(yàn)證集比值訓(xùn)練模型的參數(shù)值。
圖6 使用YOLOv3Darknet53訓(xùn)練模型流程圖
表4 YOLOv3_Darknet53實(shí)驗(yàn)參數(shù)及結(jié)果展示
從以上實(shí)驗(yàn)數(shù)值對(duì)比來看,RetinaNet_ResNet50的訓(xùn)練效果較好,同時(shí)觀察到訓(xùn)練時(shí)間也不是最長(zhǎng)的。將實(shí)驗(yàn)所得模型部署在ModelArts上并進(jìn)行預(yù)測(cè),得到預(yù)測(cè)結(jié)果如圖7~圖11所示??梢钥吹?,使用模型預(yù)測(cè)所得的限速、解除限速、斑馬線以及紅綠燈的識(shí)別效果。展示結(jié)果為實(shí)驗(yàn)結(jié)果較好的模型,模型選擇的為數(shù)據(jù)集為DSv3使用RetinaNet_ResNet50訓(xùn)練所得的模型。經(jīng)比較使用該算法綜合性能在四種算法最佳,較適合用來進(jìn)行訓(xùn)練這類數(shù)據(jù)集。選擇實(shí)驗(yàn)過程所得的幾個(gè)訓(xùn)練較好的模型進(jìn)行實(shí)際運(yùn)行測(cè)試。
圖7 使用模型預(yù)測(cè)限速、斑馬線
圖8 使用模型預(yù)測(cè)解除限速
圖9 使用模型預(yù)測(cè)黃燈
圖10 使用模型預(yù)測(cè)綠燈
圖11 使用模型預(yù)測(cè)紅燈
模型訓(xùn)練好之后,進(jìn)行實(shí)際環(huán)境的運(yùn)行來觀察模型是否真正適用,即對(duì)模型進(jìn)行實(shí)際場(chǎng)景下的測(cè)試。無人車在模擬路況下使用訓(xùn)練好的模型運(yùn)行,而在實(shí)際運(yùn)行過程中發(fā)現(xiàn)攝像頭會(huì)對(duì)現(xiàn)場(chǎng)的場(chǎng)景進(jìn)行二值化處理。由于紅綠燈主要通過顏色進(jìn)行區(qū)分,二值化處理之后模型效果會(huì)大幅下降。此時(shí)之前模型中對(duì)紅綠燈的訓(xùn)練效果大打折扣,對(duì)此的改進(jìn)為將標(biāo)注的紅綠燈轉(zhuǎn)化為標(biāo)注紅綠燈所在的位置,如圖12所示劃分。因?yàn)榧t綠燈分為三塊,每一塊的位置都是固定的,這種情況下在二值化處理之后仍會(huì)有很好的識(shí)別和檢測(cè)效果。在運(yùn)行過程中記錄運(yùn)行數(shù)據(jù),能起到類似測(cè)試的效果,會(huì)對(duì)模型的改進(jìn)方向起到了指引的作用。
圖12 紅綠燈按區(qū)域進(jìn)行劃分
同一個(gè)數(shù)據(jù)集在數(shù)據(jù)量較少的情況下,可以使用圖像增強(qiáng)的方式對(duì)數(shù)據(jù)集進(jìn)行擴(kuò)充,使得訓(xùn)練的效果會(huì)更好。同時(shí),在增大了數(shù)據(jù)集的情況下,需要適度地調(diào)整訓(xùn)練集和驗(yàn)證集之間的比例,以達(dá)到更好的訓(xùn)練效果以及更精確的模型。在同一個(gè)數(shù)據(jù)集下,不同的算法所得的精度也不同。不同的算法加上預(yù)訓(xùn)練模型適配的場(chǎng)景會(huì)有所差異,通過實(shí)驗(yàn)可以對(duì)比出差異,從而更好地訓(xùn)練出目標(biāo)模型。同時(shí),理論與現(xiàn)實(shí)存在著一些差異。由于模型的適用場(chǎng)景可能會(huì)不同,造成模型沒有訓(xùn)練時(shí)顯示的效果好。也會(huì)出現(xiàn)有些模型準(zhǔn)確度較高,但是在實(shí)際運(yùn)行環(huán)境中效果可能不如準(zhǔn)確度稍低的模型,經(jīng)過實(shí)際實(shí)驗(yàn)效果才能真正檢驗(yàn)一個(gè)模型所適應(yīng)的環(huán)境和它的優(yōu)劣。
注:本文為華為云人工智能大賽無人車挑戰(zhàn)杯比賽各階段相關(guān)技術(shù)測(cè)試及驗(yàn)證介紹,使用的無人小車為賽事提供的比賽車輛,基于華為云的AI開發(fā)平臺(tái)——ModelArts進(jìn)行數(shù)據(jù)標(biāo)注及模型訓(xùn)練。