李志剛,張 娜
(華北理工大學(xué) 人工智能學(xué)院,河北 唐山 063210)
隨著深度神經(jīng)網(wǎng)絡(luò)的發(fā)展,交通標(biāo)志圖像識別精度越來越高,與此同時(shí)其層數(shù)也在不斷加深,從而增加了模型的復(fù)雜度,導(dǎo)致了交通標(biāo)志識別實(shí)時(shí)性不佳的問題。
在交通標(biāo)志識別領(lǐng)域中,YOLO(You Only Look Once)深度學(xué)習(xí)算法因其良好的識別性能格外引人注目,從2016年Redmon等人[1]提出目標(biāo)識別領(lǐng)域的YOLOv1模型開始,YOLO系列便不斷推陳出新,2020年推出了YOLOv5模型,其性能最佳,適合實(shí)際工程的應(yīng)用。目前許多學(xué)者將YOLO系列應(yīng)用于交通標(biāo)志領(lǐng)域,取得了不錯(cuò)的效果[2-3]。對于交通標(biāo)志識別,實(shí)時(shí)性是一個(gè)非常重要的指標(biāo)。雖然上述研究中針對YOLO系列模型提出了一些輕量化的方案,但是最小模型內(nèi)存也為14 MB,對于一些資源受限的平臺達(dá)不到實(shí)時(shí)性的要求。因此,對于車載系統(tǒng)的部署,仍需進(jìn)一步輕量化模型,來達(dá)到實(shí)際工程應(yīng)用的目的。
為了降低YOLOv5模型的復(fù)雜度,提高交通標(biāo)志識別速度,降低YOLOv5模型對自動駕駛環(huán)境感知硬件配置的要求,本文提出了一種輕量型YOLOv5模型。在保證識別精度的同時(shí)提高交通標(biāo)志識別的速度,更適合自動駕駛環(huán)境感知設(shè)備的部署。
圖1給出了輕量型YOLOv5模型結(jié)構(gòu),可以看出一共由輸入、主干網(wǎng)絡(luò)、Neck和識別四部分組成。本文以YOLOv5神經(jīng)網(wǎng)絡(luò)為基礎(chǔ)模型,對主干網(wǎng)絡(luò)進(jìn)行整體替換。由于輕量級目標(biāo)檢測網(wǎng)絡(luò)Peleenet[4]中的Stem模塊可以在不增加計(jì)算量的情況下提取到更多的圖像特征,因此首先采用Stem模塊作為交通標(biāo)志圖像的特征提取模塊。在目前的輕量化神經(jīng)網(wǎng)絡(luò)中,Shufflenetv2[5]神經(jīng)網(wǎng)絡(luò)采用分組卷積和通道清洗技術(shù)實(shí)現(xiàn)了速度和精度的平衡,因此本文采用Shufflenetv2模型的基本單元結(jié)構(gòu)來替換YOLOv5的主干網(wǎng)絡(luò),達(dá)到輕量化模型的目的。Neck部分進(jìn)行卷積、上采樣、連接等操作,混合和組合主干網(wǎng)絡(luò)提取的交通標(biāo)志圖像特征,并將圖像特征傳遞到識別任務(wù),最后輸出交通標(biāo)志識別的結(jié)果。
圖1 輕量型YOLOv5模型結(jié)構(gòu)
本文采用遺傳學(xué)習(xí)算法和K-means聚類首先確定適合交通標(biāo)志識別的錨框(anchor),然后再將合適的anchor應(yīng)用到輕量型YOLOv5模型上進(jìn)行訓(xùn)練。為進(jìn)一步提升交通標(biāo)志識別的準(zhǔn)確率,采用了集成學(xué)習(xí)技術(shù)。
1.1.1 Stem模塊
Stem模塊來源于移動端實(shí)時(shí)目標(biāo)檢測模型Peleenet。圖2給出了Stem模塊結(jié)構(gòu)圖:首先進(jìn)行快速降維操作,采用卷積核為3×3步長(stride)為2的卷積層實(shí)現(xiàn);然后采用了兩分支的結(jié)構(gòu),一個(gè)分支用步長為1卷積核為1×1的卷積層和步長為2卷積核為3×3的卷積層,另一個(gè)分支使用了一個(gè)步長為2卷積核為2×2的最大池化層(maxpool)。Stem模塊增加了輸入圖像空間維度的通道數(shù),進(jìn)行了第一次降采樣任務(wù),可以豐富特征層保持較強(qiáng)的交通標(biāo)志圖像特征表達(dá)能力,不增加額外的計(jì)算量,是一個(gè)代價(jià)較小的模塊。
圖2 Stem模塊結(jié)構(gòu)圖
1.1.2 Shufflenetv2基本單元結(jié)構(gòu)模塊
圖3(a)給出了Shufflenetv2的基本單元結(jié)構(gòu)示意圖,可以看出采用通道拆分(Channel Split)的操作,每個(gè)基本單元將通道的輸入拆分為兩個(gè)分支,一個(gè)分支做恒等映射,另一個(gè)分支經(jīng)過兩個(gè)卷積核為1×1的普通卷積層(Conv)和一個(gè)卷積核為3×3的深度可分離卷積層(Depthwise Convolution,DWConv)之后將兩個(gè)分支進(jìn)行拼接(Concat),保證輸出通道數(shù)與輸入通道數(shù)相同,達(dá)到提高速度的目的。圖3(b)給出了Shufflenetv2的空間下采樣單元結(jié)構(gòu),可以看出空間下采樣單元步長為2,去掉了通道拆分運(yùn)算,因此,輸出通道數(shù)量變?yōu)檩斎霐?shù)量的兩倍。YOLOv5的主干網(wǎng)絡(luò)則采用Shufflenetv2的基本單元和下采樣單元交替堆疊而成,可以極大地降低YOLOv5模型復(fù)雜度,減少所需內(nèi)存和參數(shù)量,達(dá)到輕量化模型的目的。
圖3 Shufflenetv2結(jié)構(gòu)
本文將遺傳學(xué)習(xí)算法應(yīng)用到K-means聚類上,來自動尋找全局最優(yōu)的交通標(biāo)志錨框。圖4給出了選擇交通標(biāo)志錨框流程圖,可以看出只有當(dāng)初始設(shè)定錨框的最佳召回率小于0.98時(shí)才會應(yīng)用遺傳學(xué)習(xí)和K-means聚類去選定適合交通標(biāo)志小目標(biāo)的錨框。
圖4 交通標(biāo)志錨框流程圖
集成學(xué)習(xí)[6](Ensemble)是指通過不同方法或算法訓(xùn)練的模型,組合起來產(chǎn)生最終結(jié)果的過程。集成學(xué)習(xí)可以勝過單一算法模型,該方法在進(jìn)行交通標(biāo)志識別時(shí)尋求群體的智慧。即使集成模型在模型中具有多個(gè)基礎(chǔ)模型,它仍作為單個(gè)模型運(yùn)行和執(zhí)行,即運(yùn)行一次就可以得出結(jié)果。
本文采用集成學(xué)習(xí)技術(shù),將經(jīng)過交通標(biāo)志數(shù)據(jù)集訓(xùn)練的YOLOv5模型的權(quán)重和輕量型YOLOv5模型的權(quán)重進(jìn)行集成,可以達(dá)到進(jìn)一步提升交通標(biāo)志識別準(zhǔn)確率的目的。
實(shí)驗(yàn)平臺為Ubuntu18.04操作系統(tǒng),Pytorch深度學(xué)習(xí)框架,硬件配置為GPU NVIDIA GeForce GTX 2080 Ti,12 GB顯存。本文模型及對比模型實(shí)驗(yàn)結(jié)論均在此實(shí)驗(yàn)配置環(huán)境中得出。
為評價(jià)輕量型YOLOv5模型在中國交通標(biāo)志檢測數(shù)據(jù)集上的性能,與Faster RCNN[7]模型、YOLOv4模型、YOLOv5模型在上述統(tǒng)一實(shí)驗(yàn)配置環(huán)境中進(jìn)行對比實(shí)驗(yàn),采用檢測速率幀每秒(Frame per Second,FPS)以及均值平均精度(Mean Average Precision,mAP)、內(nèi)存大小、參數(shù)量和每秒符點(diǎn)運(yùn)算次數(shù)(FLOPs)作為評價(jià)指標(biāo)。AP和mAP的計(jì)算如公式(1)所示:
(4)重砂異常標(biāo)志:礦區(qū)主要的鈮鉭礦脈與鈮鉭鈹重砂異常暈圈長軸方向基本吻合, 鈮鉭鈹?shù)认∮薪饘僦厣爱惓?梢宰鳛橹匾恼业V標(biāo)志。
(1)
式中:mAP是計(jì)算交通標(biāo)志三大類別的平均精度(Average Presison,AP)的均值。
實(shí)驗(yàn)數(shù)據(jù)來源于中國交通標(biāo)志檢測數(shù)據(jù)集[8](CSUST Chinese Traffic Sign Detection Benchmark,CCTSDB),該數(shù)據(jù)集共有訓(xùn)練集15 724張圖片,測試集400張圖片。圖4給出了交通標(biāo)志每類的樣例,可以看出一共三大類,即警告交通標(biāo)志、指示交通標(biāo)志和禁止交通標(biāo)志。
圖4 交通標(biāo)志
圖5給出了三類交通標(biāo)志圖片數(shù)量,可以看出警告標(biāo)志(warning)4 000余張圖片,指示標(biāo)志(mandatory)6 000余張圖片,禁止標(biāo)志(prohibitory)10 000余張圖片。
圖5 交通標(biāo)志圖片數(shù)量
2.3.1 anchor的設(shè)置
對于交通標(biāo)志識別,anchor的設(shè)置會影響到輕量型YOLOv5模型的最終效果。本文anchor是根據(jù)CCTSDB數(shù)據(jù)集中交通標(biāo)志圖像的大小設(shè)置的。采用初始的anchor基于shape閾值對bbox計(jì)算最佳召回率,如果召回率大于0.98,則不用設(shè)置,如果小于0.98,則采用K-means聚類和遺傳學(xué)習(xí)算法對CCTSDB數(shù)據(jù)集進(jìn)行重新設(shè)置。本文小于0.98,因此需要重新設(shè)置適合交通標(biāo)志小目標(biāo)識別的anchor,重新設(shè)置的anchor值為[11,11,15,15,18,18]、[24,23,15,40,33,32]和[31,81,53,53,102,113],其中第一行數(shù)據(jù)是最大交通標(biāo)志特征圖上的anchor,第二行數(shù)據(jù)是中間交通標(biāo)志特征圖上的anchor,第三行數(shù)據(jù)是最小交通標(biāo)志特征圖上的anchor,對本文交通標(biāo)志識別實(shí)驗(yàn)是合理的。
2.3.2 數(shù)據(jù)增強(qiáng)策略
圖6 mosaic數(shù)據(jù)增強(qiáng)
表1給出了輕量型YOLOv5模型的超參數(shù)設(shè)置,可以看出訓(xùn)練代數(shù)為50代,批次大小為4張。在正式訓(xùn)練之前,首先進(jìn)行了3代預(yù)熱學(xué)習(xí),其中預(yù)熱學(xué)習(xí)動量為0.8,預(yù)熱初始學(xué)習(xí)率為0.1,目的是使模型經(jīng)過預(yù)熱學(xué)習(xí)慢慢趨于穩(wěn)定,再進(jìn)行正式訓(xùn)練交通標(biāo)志識別的效果更佳。其余超參數(shù)設(shè)置如表1所示。
表1 超參數(shù)設(shè)置
2.4.1 模型大小對比
本文首先從模型的大小來進(jìn)行分析,與Faster RCNN模型、YOLOv4模型、YOLOv5模型進(jìn)行對比實(shí)驗(yàn)。表2給出了不同模型的三項(xiàng)衡量指標(biāo),可以看出輕量型YOLOv5所需內(nèi)存為0.84 MB,參數(shù)量為321 504,F(xiàn)LOPs為74 620 728,與Faster RCNN、YOLOv4、YOLOv5模型相比所需內(nèi)存分別減少了99.2%、99.6%、93.9%,參數(shù)量分別減少了98.7%、99.5%、95.4%,F(xiàn)LOPs分別減少了99.97%、99.7%、92.5%,極大地降低了模型的復(fù)雜度,顯示了輕量型YOLOv5模型運(yùn)用在交通標(biāo)志領(lǐng)域優(yōu)越的性能。
表2 模型大小對比
2.4.2 模型性能對比
其次,從模型的性能來進(jìn)行分析。表3給出了不同模型在交通標(biāo)志上識別的結(jié)果,可以看出在CCTSDB數(shù)據(jù)集上,本文所提出的輕量型YOLOv5模型mAP可達(dá)95.9%,相對于Faster RCNN、YOLOv4分別提高了24.3%、16.2%,與YOLOv5模型相比下降了約1.9%。關(guān)于識別速度,在性能一般的GeForce GTX1650、顯存大小為4 GB的GPU上,輕量型YOLOv5模型的識別速度為143 frame/s,相對于Faster RCNN、YOLOv4、YOLOv5模型識別速度分別提高了97%、90%、80%;在資源受限i5-9300H、內(nèi)存大小為8 GB的CPU上,輕量型YOLOv5模型識別速度為20 frame/s,相對于Faster RCNN、YOLOv4、YOLOv5模型識別速度分別提高了99.9%、99.8%、75%。通過上述實(shí)驗(yàn)數(shù)據(jù)分析可知,本文提出的輕量型YOLOv5模型在保持mAP為95.9%的前提下,在性能一般的GPU甚至CPU上都極大地提高了交通標(biāo)志識別的速度。因此,本文輕量型YOLOv5模型在保持較高mAP為95.9%的同時(shí)提高了在交通標(biāo)志識別上的實(shí)時(shí)性,降低了對自動駕駛環(huán)境感知硬件設(shè)備的依賴性,對交通標(biāo)志識別有一定的實(shí)際應(yīng)用價(jià)值。
表3 模型性能對比
為進(jìn)一步驗(yàn)證輕量型YOLOv5模型的實(shí)用性,從唐山市交通路況中隨機(jī)采集兩張交通標(biāo)志圖像進(jìn)行識別,兩張圖片包括了三大類型的交通標(biāo)志,具有一般代表性。圖7給出了輕量型YOLOv5識別結(jié)果,可以看出左圖交通標(biāo)志圖片識別效果良好,三個(gè)禁止標(biāo)志和一個(gè)指示標(biāo)志共四個(gè)交通標(biāo)志都識別出來且識別正確;右圖交通標(biāo)志圖片中前方學(xué)校的警告標(biāo)志被識別出來且識別可信度為0.94,驗(yàn)證了輕量型YOLOv5模型在交通標(biāo)志小目標(biāo)識別上的實(shí)用性。
圖7 輕量型YOLOv5識別結(jié)果
2.4.3 集成學(xué)習(xí)
最后,為了進(jìn)一步提升交通標(biāo)志識別準(zhǔn)確率,本文采用了集成學(xué)習(xí)方法將YOLOv5模型訓(xùn)練的權(quán)重和輕量型YOLOv5模型訓(xùn)練的權(quán)重進(jìn)行集成,表3的最后一行給出了集成的效果,可以看出mAP達(dá)到98.1%,優(yōu)于YOLOv5模型的97.8%和輕量型YOLOv5模型的95.9%。由于采用集成學(xué)習(xí),因此無論是在GPU上還是CPU上識別速度均有所下降,但在配置良好的環(huán)境感知硬件設(shè)備上,也能得到實(shí)際應(yīng)用價(jià)值。圖8給出了集成學(xué)習(xí)識別交通標(biāo)志結(jié)果,可以看出左圖四個(gè)交通標(biāo)志全部識別出,且識別可信度為0.94,優(yōu)于上述輕量型YOLOv5識別結(jié)果可信度的0.65;右圖單張交通標(biāo)志識別可信度為0.94,與上述輕量型YOLOv5識別結(jié)果可信度0.94相同,證明了集成學(xué)習(xí)有利于提升交通標(biāo)志識別精度,顯示了集成學(xué)習(xí)應(yīng)用于交通標(biāo)志識別的有效性。
圖8 集成學(xué)習(xí)識別結(jié)果
交通標(biāo)志識別在無人駕駛中具有舉足輕重的地位。本文提出了一種輕量型YOLOv5交通標(biāo)志識別算法,采用Stem模塊提取交通標(biāo)志圖像特征,并與輕量化模型Shufflenetv2基本單元網(wǎng)絡(luò)一起替換YOLOv5主干網(wǎng)絡(luò),達(dá)到降低模型的復(fù)雜度的目的。與一些經(jīng)典的交通標(biāo)志識別算法在CCTSDB數(shù)據(jù)集上進(jìn)行對比實(shí)驗(yàn),結(jié)果表明在保持交通標(biāo)志圖像mAP為95.9%的同時(shí),在性能一般的GPU上速度可達(dá)每秒143幀,相對于YOLOv5模型實(shí)時(shí)性提高了79.7%;在資源受限的CPU上速度可達(dá)每秒20幀,相對于YOLOv5模型實(shí)時(shí)性提高了75%,無論GPU還是CPU上都極大地加快了交通標(biāo)志識別的速度,降低了對自動駕駛環(huán)境感知系統(tǒng)硬件設(shè)備的要求,更適合實(shí)際工程的部署,對自動駕駛的發(fā)展具有推動意義和實(shí)際應(yīng)用價(jià)值。但在現(xiàn)實(shí)交通路況中,我國交通標(biāo)志細(xì)分種類多達(dá)上百類,本文所用CCTSDB數(shù)據(jù)集是綜合的三大類,因此,需要在數(shù)據(jù)集中進(jìn)一步增加交通標(biāo)志種類數(shù)來達(dá)到實(shí)際應(yīng)用的目的。增加交通標(biāo)志種類數(shù)或采用權(quán)威的細(xì)分交通標(biāo)志種類數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),將是下一步的研究工作。