張緒德,李 康
(凱里學(xué)院,貴州 黔東南苗族侗族自治州 556011)
隨著人工智能科學(xué)的不斷發(fā)展,智能交通逐漸走進(jìn)大眾的視野中,汽車作為人們?nèi)粘3鲂械闹饕煌üぞ?,自?dòng)駕駛將陸續(xù)應(yīng)用于汽車中,對(duì)車輛進(jìn)行實(shí)時(shí)的目標(biāo)檢測(cè)是自動(dòng)駕駛系統(tǒng)中非常重要的內(nèi)容。在研究中對(duì)道路車輛的檢測(cè)可以分為基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法和基于人工特征的目標(biāo)檢測(cè)算法,其中基于人工的檢測(cè)算法首先需要從圖像中提取出特征,然后將提取出來的特征進(jìn)行分類利用機(jī)器學(xué)習(xí)的方法進(jìn)行訓(xùn)練[1]。
隨著計(jì)算機(jī)硬件的發(fā)展和CNN網(wǎng)絡(luò)成熟,基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法在實(shí)時(shí)性和準(zhǔn)確性方面顯現(xiàn)出優(yōu)勢(shì),成為計(jì)算機(jī)視覺領(lǐng)域的研究熱點(diǎn)。根據(jù)是否預(yù)生成候選框,基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法分為Two-stage目標(biāo)檢測(cè)算法和One-stage目標(biāo)檢測(cè)算法[2]。Two-stage算法精度較高,速度較慢[3-4],如Faster R-CNN[5]算法;One-stage算法速度更快,精度會(huì)有所損失,如YOLO[6]系列算法、SSD[7]算法等。
道路中車輛檢測(cè)要求檢測(cè)速度快、檢測(cè)精度能很好滿足要求,應(yīng)該采用One-stage算法,在One-stage算法中,YOLOv3具有魯棒性好、檢測(cè)精度較高、算法結(jié)構(gòu)簡單、檢測(cè)速度快等優(yōu)點(diǎn),在實(shí)際道路中通過調(diào)參可以獲得具體場(chǎng)景下的目標(biāo)檢測(cè)模型,可以很好地檢測(cè)目標(biāo)車輛,對(duì)車輛進(jìn)行屬性識(shí)別。
YOLOv3算法是One-stage中的經(jīng)典算法模型,其整體結(jié)構(gòu)采用主干網(wǎng)絡(luò)為Darknet53,主干網(wǎng)絡(luò)Darknet53進(jìn)行特征提取,利用多尺度特征進(jìn)行對(duì)象檢測(cè),在最后對(duì)象分類時(shí)使用Logistic[8],YOLOv3算法中的Darknet53網(wǎng)絡(luò)采用了23處殘差結(jié)構(gòu)來增加網(wǎng)絡(luò)的深度,提高了網(wǎng)絡(luò)提取特征的能力,網(wǎng)絡(luò)中大部分采用1×1和3×3的卷積結(jié)構(gòu)減少計(jì)算量。YOLOv3算法的整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)沒有池化層,使用的是一個(gè)全卷積網(wǎng)絡(luò),改變卷積層步長可以實(shí)現(xiàn)對(duì)網(wǎng)路的下采樣,當(dāng)網(wǎng)絡(luò)下采樣時(shí),通道數(shù)變?yōu)樵瓉淼?倍,有利于減少網(wǎng)絡(luò)中信息的損失,并且增加信息特征的維度,更能提取到網(wǎng)絡(luò)的抽象特征,最后隨著卷積層數(shù)的加深,神經(jīng)網(wǎng)絡(luò)會(huì)出現(xiàn)過擬合現(xiàn)象,為了抑制過擬合,Darknet53網(wǎng)絡(luò)在卷積層后添加了批量歸一化層。
YOLOv3算法中不同尺度的感受野能表達(dá)不同層次的語義信息,為了實(shí)現(xiàn)對(duì)圖中不同大小信息的檢測(cè),YOLOv3采用FPN[9]結(jié)構(gòu),F(xiàn)PN結(jié)構(gòu)指出可以采用不同特征圖對(duì)目標(biāo)對(duì)象進(jìn)行檢測(cè)。如當(dāng)輸入圖片尺寸為416×416時(shí),在進(jìn)行道路車輛目標(biāo)檢測(cè)時(shí),對(duì)于大尺度檢測(cè)目標(biāo),選取的是網(wǎng)絡(luò)結(jié)構(gòu)中79層32倍下采樣13×13大小的特征圖,此特征圖相比于其他尺度特征圖相比感受野大,適合對(duì)大物體目標(biāo)進(jìn)行檢測(cè);對(duì)于中等尺度檢測(cè)物體,選取的是網(wǎng)絡(luò)結(jié)構(gòu)中79層特征圖做上采樣然后和61層特征圖拼接,得到16倍下采樣26×26大小的特征圖,此特征圖跟其他尺度特征圖相比感受野適中,適合對(duì)中等物體目標(biāo)進(jìn)行檢測(cè);對(duì)于小尺度檢測(cè)物體,選取的是26×26大小的特征圖做上采樣然后和36層特征圖拼接,得到8倍下采樣52×52大小的特征圖,此特征圖跟其他尺度特征圖相比感受野較小,適合對(duì)小物體目標(biāo)進(jìn)行檢測(cè)[10]。
在進(jìn)行YOLOv3的算法研究中,選取合適的數(shù)據(jù)集是研究的基礎(chǔ),應(yīng)該選取類別均衡、使用場(chǎng)景普及化、數(shù)據(jù)量大的數(shù)據(jù)集,數(shù)據(jù)集選取不標(biāo)準(zhǔn),訓(xùn)練過程中容易出現(xiàn)飽和和過擬合的現(xiàn)象[11],會(huì)引起檢測(cè)模型應(yīng)用范圍小、泛化能力不足等問題。采用YOLOv3算法時(shí)需要用到圖片對(duì)應(yīng)的標(biāo)簽文件,數(shù)據(jù)集不存在標(biāo)簽文件時(shí),需要利用labelimg制作自己的深度學(xué)習(xí)目標(biāo)檢測(cè)數(shù)據(jù)集,因此在選擇數(shù)據(jù)集時(shí)可以選擇自動(dòng)生成標(biāo)簽數(shù)據(jù)集,節(jié)省訓(xùn)練時(shí)間。經(jīng)綜合考慮在進(jìn)行車輛目標(biāo)檢測(cè)時(shí)選取的數(shù)據(jù)集是UA-DETRAC,該數(shù)據(jù)集包括在中國北京和天津的24個(gè)區(qū)域道路的監(jiān)控視頻。UA-DETRAC數(shù)據(jù)集為每個(gè)文件夾中的圖片提供xml文件,xml文件中的目標(biāo)為car,不需要進(jìn)行手動(dòng)標(biāo)識(shí),只需要將xml文件分成對(duì)應(yīng)每個(gè)圖片的xml,然后再將xml文件轉(zhuǎn)換成YOLOv3規(guī)定的txt文件即可,如圖1所示。由于數(shù)據(jù)集中照片數(shù)量太大,為了節(jié)省訓(xùn)練時(shí)間,隨機(jī)選取其中6 000多張圖片用來進(jìn)行訓(xùn)練。
圖1 轉(zhuǎn)換成txt文件形式
UA-DETRAC數(shù)據(jù)集在制作完成后,利用目標(biāo)檢測(cè)算法對(duì)數(shù)據(jù)集進(jìn)行模型訓(xùn)練。數(shù)據(jù)集在訓(xùn)練時(shí)采用ultralytics-YOLOv3版本,ultralytics-YOLOv3版本檢測(cè)速度快,版本一直在優(yōu)化中。本實(shí)驗(yàn)采用的硬件配置是服務(wù)器為NVIDIA RTX 3050TI的GPU,軟件環(huán)境選擇pycharm腳本編輯器、YOLOv3目標(biāo)檢測(cè)算法。使用網(wǎng)絡(luò)結(jié)構(gòu)時(shí),首先需要檢測(cè)的對(duì)象對(duì)算法進(jìn)行分類與檢測(cè)修改,網(wǎng)絡(luò)結(jié)構(gòu)選用YOLOv3-spp.cfg進(jìn)行參數(shù)配置,需要對(duì)卷積層的卷積核個(gè)數(shù)、目標(biāo)分類數(shù)進(jìn)行配置,為了減少訓(xùn)練次數(shù),可以選取YOLOv3-spp.weights為預(yù)訓(xùn)練權(quán)重。根據(jù)現(xiàn)有GPU實(shí)際情況,將模型訓(xùn)練的batch-size設(shè)為2,subdivisions設(shè)為64,然后對(duì)數(shù)據(jù)進(jìn)行模型訓(xùn)練,訓(xùn)練過程中自動(dòng)保存訓(xùn)練日志、訓(xùn)練模型和最優(yōu)訓(xùn)練模型。訓(xùn)練過程如圖2所示。在采用ultralytics-YOLOv3版本進(jìn)行UA-DETRAC數(shù)據(jù)集訓(xùn)練時(shí),需要進(jìn)行不斷調(diào)節(jié)參數(shù),使訓(xùn)練過程不斷優(yōu)化。在訓(xùn)練的前期階段,訓(xùn)練時(shí)采用學(xué)習(xí)率較大的量級(jí),在訓(xùn)練過程后期,可以采用相對(duì)之前學(xué)習(xí)率較小的量級(jí),其次考慮動(dòng)量對(duì)訓(xùn)練過程的影響,當(dāng)對(duì)UA-DETRAC數(shù)據(jù)集訓(xùn)練達(dá)到瓶頸時(shí)修改動(dòng)量,以提高預(yù)測(cè)精度[12]。在對(duì)訓(xùn)練集進(jìn)行200次訓(xùn)練迭代后,取訓(xùn)練權(quán)重中最好的權(quán)重進(jìn)行模型驗(yàn)證,獲得最優(yōu)的訓(xùn)練模型。
圖2 訓(xùn)練過程
模型訓(xùn)練完成后在對(duì)實(shí)際道路中不同交通場(chǎng)景情況下進(jìn)行圖像數(shù)據(jù)的測(cè)試,測(cè)試時(shí)對(duì)道路交通場(chǎng)景下的圖像數(shù)據(jù)進(jìn)行測(cè)試,主要考慮車輛在道路的覆蓋、不同光線、不同角度以及道路擁堵等問題。測(cè)試時(shí)采用的實(shí)際道路測(cè)試場(chǎng)景選擇應(yīng)該具有多樣化,涵蓋城市道路、鄉(xiāng)鎮(zhèn)的十字路口、單向道路、多向道路等多種場(chǎng)景,以保證該多目標(biāo)檢測(cè)適用于監(jiān)控下的實(shí)時(shí)檢測(cè)。本次研究訓(xùn)練結(jié)果的評(píng)價(jià)指標(biāo)是精準(zhǔn)率P值、召回率R值、均值平均精度mAP值。
對(duì)于此次車輛目標(biāo)檢測(cè)任務(wù),當(dāng)預(yù)測(cè)框和真實(shí)檢測(cè)框的IOU大于預(yù)設(shè)值時(shí),則視其為正確結(jié)果,表示檢測(cè)到車輛;否則為錯(cuò)誤的結(jié)果,表示沒有檢測(cè)到車輛模型。測(cè)試所有類別的AP的平均值就是均值平均精度mAP,本次目標(biāo)檢測(cè)只具有車輛一個(gè)類型,AP值和mAP值相等。
訓(xùn)練完成后通過觀察圖3可以看到數(shù)據(jù)集的P值為0.834,R值為0.991,mAP@0.5值為0.956。
圖3 訓(xùn)練結(jié)果
在對(duì)實(shí)際道路中的車輛圖像數(shù)據(jù)進(jìn)行測(cè)試時(shí),選取圖片需要考慮不同光線、不同場(chǎng)景、不同時(shí)間、不同角度中實(shí)際情況。
圖4為將白天的照片輸入進(jìn)行驗(yàn)證的情況,圖5為晚上道路車輛圖片輸入進(jìn)行驗(yàn)證的情況,通過觀察可以看到,無論白天還是晚上對(duì)車輛的識(shí)別都取得不錯(cuò)效果。
圖4 白天圖片測(cè)試
圖5 晚上圖片測(cè)試
本研究基于pytorch深度學(xué)習(xí)框架下YOLOv3目標(biāo)檢測(cè)算法在實(shí)際道路場(chǎng)景中進(jìn)行車輛目標(biāo)檢測(cè),通過數(shù)據(jù)集選取與制作、數(shù)據(jù)集訓(xùn)練、測(cè)試結(jié)果驗(yàn)證YOLOv3目標(biāo)檢測(cè)算法在實(shí)際道路中的應(yīng)用。實(shí)驗(yàn)表明,YOLOv3目標(biāo)檢測(cè)算法在車輛檢測(cè)中取得了良好的效果,平均檢測(cè)精度達(dá)到95.6%?;赮OLOv3道路車輛檢測(cè)算法可以很好地對(duì)道路車輛進(jìn)行檢測(cè),此算法可以很好地減少車輛檢測(cè)過程中存在的誤檢、漏檢問題,但也需要充分認(rèn)識(shí)到車輛檢測(cè)在實(shí)際應(yīng)用中存在的諸多挑戰(zhàn):車輛真實(shí)道路行駛過程中時(shí),遇到的環(huán)境復(fù)雜多變,在夜間情況下光線不足時(shí),極端復(fù)雜天氣、道路車輛進(jìn)行高速移動(dòng)時(shí)復(fù)雜場(chǎng)景下,基于YOLOv3道路車輛檢測(cè)算法依然面臨非常大的挑戰(zhàn)性,在后續(xù)的車輛檢測(cè)算法研究中依然任重而道遠(yuǎn)。