尹宋麟,譚 飛,2,周 晴,鮮 陽
(1.四川輕化工大學(xué) 自動化與信息工程學(xué)院,四川 自貢 643000;2.人工智能四川省重點(diǎn)實(shí)驗(yàn)室,四川 宜賓 644000)
隨著智能交通系統(tǒng)(Intelligent Traffic System,ITS)的出現(xiàn),自動駕駛成為ITS開發(fā)中的必要主題,而對于交通標(biāo)志的檢測識別又是自動駕駛領(lǐng)域中一項(xiàng)極其重要的工作。由于交通標(biāo)志在現(xiàn)實(shí)生活中的位置往往不固定,而且車載設(shè)備拍攝的圖像中交通標(biāo)志往往只占據(jù)圖像很小的一部分,導(dǎo)致對其檢測與識別存在一定的困難。
隨著計(jì)算機(jī)計(jì)算水平的不斷提升,深度學(xué)習(xí)迅速崛起,各種基于深度學(xué)習(xí)的檢測算法也不斷發(fā)展,深度學(xué)習(xí)所涉及的領(lǐng)域很廣,在交通標(biāo)志檢測領(lǐng)域也取得了很大的成就。目前,基于深度學(xué)習(xí)的檢測方法可以分為2類:兩階段檢測方法和一階段目標(biāo)檢測方法。兩階段檢測方法又稱為基于候選框的檢測,其中最具代表性的是Faster R-CNN[1],它先提取輸入圖像中物體的區(qū)域生成候選框,然后再對候選框區(qū)域進(jìn)行卷積分類識別,兩階段檢測方法獲得的結(jié)果精度很高,但速度慢;以YOLO[2]和SSD[3]為代表的一階段目標(biāo)檢測方法將目標(biāo)框的定位和識別任務(wù)同時進(jìn)行,直接回歸目標(biāo)的位置坐標(biāo)和分類概率,在輸出層通過卷積直接預(yù)測,速度較兩階段目標(biāo)檢測方法變快了,但精度下降了。在實(shí)際應(yīng)用中,實(shí)時性是一直被關(guān)注的關(guān)鍵指標(biāo),因此一階段目標(biāo)檢測方法受到更多學(xué)者的研究,如何提高算法的精度是個難題。目前,已有大量學(xué)者進(jìn)行了實(shí)驗(yàn)改進(jìn)并獲得了不錯的成果。
王林等[4]在YOLOv3基礎(chǔ)上提出了一種融合注意力機(jī)制與上下文信息的交通標(biāo)志檢測方法,充分利用上下文信息增強(qiáng)對小目標(biāo)的檢測,并在TT100K[5]數(shù)據(jù)集上提升了3.03%的精確度。Shen等[6]提出了GMSA模塊,增強(qiáng)了小目標(biāo)的特征表示,并設(shè)計(jì)了特征融合模塊,有助于多尺度檢測,同時改進(jìn)了損失函數(shù),在多種交通標(biāo)志數(shù)據(jù)集上都取得了不錯的結(jié)果。郭璠等[7]提出了一種通過對檢測分支特征在通道和空間2個維度進(jìn)行重新標(biāo)定的YOLOv3-A算法,改善了對小目標(biāo)的檢測性能,在原有算法上精度和召回率分別提升了1.9%和2.8%。胡鵬等[8]通過改進(jìn)YOLOv3的網(wǎng)絡(luò)結(jié)構(gòu),結(jié)合Softer-NMS算法,減少了模型計(jì)算量,加快了檢測速度,與原算法相比快了10.95%。蔡軍等[9]通過在YOLOv3中加入上下文模塊并融合網(wǎng)絡(luò)損失函數(shù)來解決交通標(biāo)志漏檢和虛警問題,在TT100K中取得了較好的檢測效果。Dubey等[10]以RetinaNet[11]為基礎(chǔ),使用層數(shù)更深的ResNet[12]為基礎(chǔ)網(wǎng)絡(luò),并提出一種兩步TSR方法,最后在GTSDB(German Traffic Sign Detection Benchmark)數(shù)據(jù)集上進(jìn)行分類測試,得到了更好的分類精度。
本文基于YOLOv4模型,針對交通標(biāo)志在圖像中尺寸較小的問題,改進(jìn)算法結(jié)構(gòu)的檢測層,加入152×152的檢測層,去掉19×19的大感受野檢測層;在算法中加入注意力機(jī)制使網(wǎng)絡(luò)聚焦于有用特征,提高算法對小尺度目標(biāo)的檢測能力;利用K-means算法對候選框重新聚類,加快網(wǎng)絡(luò)的收斂。最終算法得出模型在測試集上取得了更好的性能,精度有了較大的提升。
YOLOv4算法是YOLOv3的改進(jìn)版,在v3的基礎(chǔ)上增加了很多實(shí)用技巧,在檢測時實(shí)現(xiàn)目標(biāo)框定位和識別同時進(jìn)行,實(shí)現(xiàn)“端到端”的檢測[13]。YOLOv4算法的骨干網(wǎng)絡(luò)采用CSPDarknet53,它是在Darknet53基礎(chǔ)上改進(jìn)而來,在殘差結(jié)構(gòu)中使用了CSPNet,加強(qiáng)了網(wǎng)絡(luò)學(xué)習(xí)能力的同時,保證了精度并降低了內(nèi)存消耗和計(jì)算成本。同時,也改變了激活函數(shù),使用了Mish[14]激活函數(shù),Mish激活函數(shù)相比于LeakyReLU激活函數(shù),在負(fù)值區(qū)域更為平滑,有利于梯度的計(jì)算和更新,能獲得更好的準(zhǔn)確性和泛化能力。在骨干網(wǎng)絡(luò)之后引入了空間金字塔池化(Spatial Pyramid Pooling,SPP)結(jié)構(gòu),該結(jié)構(gòu)利用1×1,5×5,9×9和13×13四個不同的池化核進(jìn)行池化處理,能夠有效地將淺層的細(xì)節(jié)信息和深層的語義信息進(jìn)行特征融合,增加感受野。路徑聚合網(wǎng)絡(luò)由特征金字塔網(wǎng)絡(luò)(Feature Pyramid Network,F(xiàn)PN)和路徑增強(qiáng)網(wǎng)絡(luò)(Path Aggregation Network,PAN)2部分組成,F(xiàn)PN將深層的語義信息傳遞下來,PAN將淺層的定位信息傳遞上去,加強(qiáng)了網(wǎng)絡(luò)的表征能力。檢測頭沿用了YOLOv3中的Head,由3×3和1×1卷積層組成,對PAN處理后輸出的特征層進(jìn)行結(jié)果預(yù)測[15]。
YOLOv4會根據(jù)圖片的輸入尺寸將圖像劃分成對應(yīng)個數(shù)的網(wǎng)格,每個網(wǎng)格有3個先驗(yàn)框?qū)?yīng),最終網(wǎng)絡(luò)預(yù)測到圖像上的目標(biāo)框就是模型通過參數(shù)對3個先驗(yàn)框優(yōu)化得到。因此,當(dāng)這3個先驗(yàn)框離目標(biāo)的真實(shí)框越接近,網(wǎng)絡(luò)的誤差就越小,收斂得就越快。在YOLOv4中,先驗(yàn)框是根據(jù)COCO數(shù)據(jù)集得到,而本文實(shí)驗(yàn)采用的是TT100K數(shù)據(jù)集,數(shù)據(jù)集中多是小目標(biāo),與COCO數(shù)據(jù)集差別較大,所以重新使用K-means聚類算法對先驗(yàn)框進(jìn)行更新以提高定位精度。由于TT100K數(shù)據(jù)集種類高達(dá)221,而且其中有很多種類個數(shù)極少,如果對這221類交通標(biāo)志進(jìn)行訓(xùn)練,由于種類分布極其不均,會導(dǎo)致訓(xùn)練效果不滿意,因此本文通過python腳本選出數(shù)據(jù)集中類別的樣本個數(shù)最多的20類進(jìn)行聚類,得到的結(jié)果如圖1所示。其中,9種不同顏色分別代表由K-means聚類得到的簇。
圖1 20類交通標(biāo)志標(biāo)注框大小分布
由于TT100K交通標(biāo)志數(shù)據(jù)集大多是小目標(biāo)且比較集中,由圖1可以看出,聚類的先驗(yàn)框分布在[5,40],因此少量偏大或偏小的目標(biāo)不能被包含,于是對 K-means算法得到的先驗(yàn)框再進(jìn)行一次線性縮放[16]:
x′1=αx1,
(1)
x′9=βx9,
高管是提高企業(yè)技術(shù)創(chuàng)新的關(guān)鍵人物。采用高薪激勵高管,可以讓高管在企業(yè)技術(shù)創(chuàng)新中發(fā)揮重要作用。但在高薪激勵的過程中,應(yīng)當(dāng)采用多元化的激勵方式,并注重不同激勵方式的交互關(guān)系和協(xié)同作用,以充分、高效發(fā)揮激勵效果。
(2)
(3)
(4)
式中,i∈[2,8];經(jīng)多次實(shí)驗(yàn),取α=0.5,β=3時,訓(xùn)練效果最好。更新后的先驗(yàn)框大小如表1所示。
表1 線性縮放后的先驗(yàn)框
YOLOv4算法的目標(biāo)檢測框使用了3個尺度:19×19,38×38和76×76,對圖像的大、中、小3類目標(biāo)進(jìn)行檢測。但這3個尺度是根據(jù)COCO數(shù)據(jù)集中類別的尺寸大小設(shè)定的,而本文使用的是TT100K數(shù)據(jù)集,其中的交通標(biāo)志類別尺寸相較于COCO較小,因此若采用v4默認(rèn)的3個尺度,會在實(shí)際測試中出現(xiàn)漏檢和錯檢的現(xiàn)象,導(dǎo)致模型精度降低?;谏鲜鰡栴},本文提出了一種改進(jìn)的特征提取網(wǎng)絡(luò),結(jié)構(gòu)如圖2所示。
圖2 改進(jìn)后的YOLOv4結(jié)構(gòu)
改進(jìn)后的YOLOv4結(jié)構(gòu)去除了原算法結(jié)構(gòu)中的19×19尺度,換成了152×152尺度,原因是相較于交通標(biāo)志這種小目標(biāo)檢測,尺度越大的檢測框在輸入圖像中的感受野越小,更能捕捉到交通標(biāo)志。將骨干網(wǎng)絡(luò)的76×76特征層與SPP池化后2次上采樣的特征層進(jìn)行拼接后,再次上采樣與骨干網(wǎng)絡(luò)的152×152特征層進(jìn)行拼接,最后讓其進(jìn)行5次卷積,輸出到網(wǎng)絡(luò)預(yù)測層進(jìn)行預(yù)測;SPP網(wǎng)絡(luò)處理的特征層經(jīng)過一次上采樣后,和骨干網(wǎng)絡(luò)中的38×38特征層進(jìn)行拼接,然后與PAN網(wǎng)絡(luò)中的76×76層下采樣后的特征層進(jìn)行拼接,最后輸入38×38尺度的預(yù)測層進(jìn)行預(yù)測;預(yù)測網(wǎng)絡(luò)中的76×76尺度經(jīng)過SPP網(wǎng)絡(luò)2次上采樣后,再與152×152尺度下采樣一次拼接得到。
人類在學(xué)習(xí)和理解未知的事物時,會迅速將注意力放到關(guān)鍵部位,而忽略掉無用的信息,這樣才能快速準(zhǔn)確地得到需要的信息。研究者們受此啟發(fā),把注意力機(jī)制加入到了卷積神經(jīng)網(wǎng)絡(luò)中,在犧牲少量計(jì)算量的同時,大大提高傳統(tǒng)網(wǎng)絡(luò)模型的性能。本文在YOLOv4中加入高效通道注意力(Efficient Channel Attention,ECA)模塊[17],在對主干網(wǎng)絡(luò)提取的3個特征層的通道維度上進(jìn)行權(quán)重訓(xùn)練,使模型更加關(guān)注有用信息,ECA模塊結(jié)構(gòu)如圖3所示。
圖3 ECA模塊結(jié)構(gòu)
ECA模塊可以看作是Squeeze-and-Excitation(SE)模塊[18]的改進(jìn)版本,ECA的作者認(rèn)為SE對通道注意力機(jī)制的預(yù)測帶來了副作用,捕獲所有通道的依賴關(guān)系是低效且不必要的,而卷積具有良好的跨通道信息獲取能力,因此ECA模塊用1D卷積替換了SE模塊的2次全連接。1D卷積的卷積核大小會影響跨通道交互的覆蓋率,因此對1D卷積核大小k的選擇就變得非常重要,雖然k可以通過手動調(diào)整,但是這樣會浪費(fèi)大量的時間和精力。k與C成非線性比例,C越大,長期交互作用越強(qiáng);反之C越小,短期交互作用越強(qiáng),即:
C=φ(k)=2(γ×k-b)。
(5)
當(dāng)確定通道維數(shù)C后,卷積核大小k為:
(6)
式中,γ,b是調(diào)節(jié)參數(shù);|t|odd表示最近的奇數(shù)t。
圖4 加入ECA的部分網(wǎng)絡(luò)結(jié)構(gòu)
實(shí)驗(yàn)采用TT100K交通標(biāo)志數(shù)據(jù)集。該數(shù)據(jù)集包含的交通標(biāo)志種類較多,場景豐富,涵蓋了照度和天氣條件的巨大變化,可以客觀地反映現(xiàn)實(shí)條件下的交通標(biāo)志情況。TT100K數(shù)據(jù)集中的交通標(biāo)志在圖像中所占比例較小,因此會顯得相對模糊,加之圖像又包含大量的無關(guān)背景信息,導(dǎo)致模型檢測相對困難,具有較大的挑戰(zhàn)[19]。本研究選取了8 000張涵蓋了20種類型的交通標(biāo)志圖,部分圖案如圖5所示。本次實(shí)驗(yàn)以8∶1∶1的比例來劃分訓(xùn)練集、驗(yàn)證集和測試集,實(shí)驗(yàn)中的部分?jǐn)?shù)據(jù)集圖片如圖6所示。
(a)i2
圖6 部分?jǐn)?shù)據(jù)集圖片
實(shí)驗(yàn)使用一張顯存大小為11 GB的NVIDIA GeForce 1080Ti顯卡訓(xùn)練和測試所有模型。在訓(xùn)練過程中,對網(wǎng)絡(luò)設(shè)定的部分超參數(shù)設(shè)置如表2所示。本文改進(jìn)算法模型的損失函數(shù)曲線如圖7所示,當(dāng)訓(xùn)練達(dá)到80輪時,損失函數(shù)趨于平穩(wěn),模型收斂。
表2 部分超參數(shù)設(shè)置
圖7 改進(jìn)模型的訓(xùn)練損失函數(shù)曲線
評估算法的優(yōu)劣需要多個指標(biāo),本文采用準(zhǔn)確率P(Precision)、召回率R(Recall)、平均準(zhǔn)確率均值mAP(mean Average Precision)以及檢測速率幀每秒FPS(Frame Per Second)來判斷模型性能的好壞[20]。計(jì)算如下:
(7)
(8)
(9)
式中,TP表示針對某個目標(biāo)類,被模型判定和實(shí)際都是正樣本的數(shù)目;FP表示模型判定為正樣本,實(shí)際上是負(fù)樣本的數(shù)目;FN表示模型判定為負(fù)樣本,實(shí)際上是正樣本的數(shù)目;mAP表示所有檢測類別平均準(zhǔn)確率的均值。
為了論證上述改進(jìn)方法的有效性,本文在TT100K數(shù)據(jù)集20類的所有尺度目標(biāo)上進(jìn)行消融實(shí)驗(yàn),通過組合上述所提及的K-means改進(jìn)先驗(yàn)框、改進(jìn)特征提取網(wǎng)絡(luò)、加入注意力機(jī)制,來驗(yàn)證不同模塊對網(wǎng)絡(luò)性能的提升。測試結(jié)果如表3所示。實(shí)驗(yàn)結(jié)果表明,K-means改進(jìn)先驗(yàn)框、改進(jìn)特征提取網(wǎng)絡(luò)、加入注意力機(jī)制都提升了模型的性能,并在mAP上分別提高了0.42%,0.94%,0.55%。而集合3個模塊后的改進(jìn)算法在P,R,mAP上均取得了最好的結(jié)果,與YOLOv4相比,分別提升了3.33%,3.83%,4.58%??梢钥闯觯倪M(jìn)后的算法對于網(wǎng)絡(luò)性能的提升是有效的。
表3 TT100K數(shù)據(jù)集上消融實(shí)驗(yàn)結(jié)果
將改進(jìn)后的網(wǎng)絡(luò)與其他的檢測算法進(jìn)行實(shí)驗(yàn)對比,包括YOLOv3,F(xiàn)aster R-CNN以及SSD。取準(zhǔn)確率P、召回率R、IOU為0.5時的mAP和FPS作為評估標(biāo)準(zhǔn),對比實(shí)驗(yàn)結(jié)果如表4所示。由表4可以看出,本文算法的mAP比第2的Faster R-CNN高出10.37%;在FPS上,本文算法比YOLOv3每秒只高出5張圖片,但高出Faster R-CNN每秒24張圖片??梢钥闯觯倪M(jìn)后的算法在網(wǎng)絡(luò)模型的精度和實(shí)時性方面都表現(xiàn)良好。
表4 4種檢測網(wǎng)絡(luò)對比
為了能夠直觀地看出本文改進(jìn)算法模型的性能,從TT100K數(shù)據(jù)集中選出3張圖片進(jìn)行測試,測試結(jié)果如圖8所示。其中,圖8(a)~(c)為YOLOv4網(wǎng)絡(luò)的檢測結(jié)果,圖8(d)~(f)為本文改進(jìn)算法對網(wǎng)絡(luò)的檢測結(jié)果。
對比圖8(a)和圖8(d)可以看出,圖8(a)漏檢了pn而圖8(d)檢測出來了,因?yàn)檫@張圖片上pn的像素太小,改進(jìn)的特征提取網(wǎng)絡(luò)利用152×152尺度的檢測頭,能搜索到圖像中感受野更小的區(qū)域,從而避免了漏檢;在圖8(b)和圖8(e)上模型效果對比更加明顯,圖8(b)中一個交通標(biāo)志都未檢測到,圖8(e)將圖像中的所有交通標(biāo)志都檢測到了;對比圖8(c)和圖8(f)可以看出,圖8(c)的預(yù)測框覆蓋范圍遠(yuǎn)遠(yuǎn)大于圖像中交通標(biāo)志的位置,圖8(f)的預(yù)測框重合度較高,因?yàn)楦倪M(jìn)的K-means聚類先驗(yàn)框能更準(zhǔn)確快速地?cái)M合到真實(shí)框,并且在圖8(f)中未出現(xiàn)對pn的漏檢。綜合來看,本文改進(jìn)算法訓(xùn)練的網(wǎng)絡(luò)模型對交通標(biāo)志小目標(biāo)的檢測以及漏檢方面要優(yōu)于YOLOv4。
(a)YOLOv4
本文主要介紹了改進(jìn)的YOLOv4交通標(biāo)志檢測模型,針對交通標(biāo)志在圖像中占據(jù)位置小、檢測精度較低的問題,在原算法中去除了19×19的大感受野檢測層,加入152×152的小感受野檢測層;在算法中加入ECA模塊,使得網(wǎng)絡(luò)把注意力聚焦在有用的信息上,提高了算法的檢測能力;同時利用K-means聚類算法重新生成網(wǎng)絡(luò)的先驗(yàn)框,加速網(wǎng)絡(luò)收斂。通過消融實(shí)驗(yàn)驗(yàn)證了本文所提3個改進(jìn)方案對比原算法均有提升;通過與YOLOv3,F(xiàn)aster R-CNN和SSD三種算法訓(xùn)練的模型效果對比,證明了改進(jìn)后的算法訓(xùn)練出的模型在小目標(biāo)檢測、精度、實(shí)時性以及漏檢方面的有效性。