徐鑫,方凱
(湖北汽車工業(yè)學(xué)院 電氣與信息工程學(xué)院,湖北 十堰 442002)
交通標(biāo)志檢測是高級駕駛輔助系統(tǒng)[1]和智能交通系統(tǒng)[2]的重要組成部分。常用的交通標(biāo)志檢測算法包括以Faster R-CNN[3]系列為代表的二階段目標(biāo)檢測算法和以YOLO[4-5]系列、SSD[6]為代表的單階段目標(biāo)檢測算法。在傳統(tǒng)目標(biāo)檢測中,被檢測對象通常占據(jù)整個圖像較大區(qū)域,而實際駕駛環(huán)境中捕獲的交通標(biāo)志通常占據(jù)整個圖像的很小區(qū)域,可提取的像素特征不足,檢測難度大。針對小目標(biāo)檢測,學(xué)者通常采用增加目標(biāo)檢測層、引入注意力機制、改進損失函數(shù)等方法。江金洪等[7]在YOLOv3 中引入深度可分離卷積,在損失函數(shù)中用GIOU替換原始IOU,平均精度提升了6.6%,但檢測速度僅為12FPS,不適用于實時檢測。Wang等[8]在YOLOv4-Tiny 算法引入改進的K-Means 聚類算法并提出大規(guī)模特征圖優(yōu)化策略,小目標(biāo)檢測的均值平均精度為52.07%,雖然比YOLOv4-Tiny 算法提升了5.73%,但不滿足實際駕駛環(huán)境檢測精度要求。孟繁星等[9]以YOLOv5算法為基礎(chǔ)加入通道注意力機制、增加小尺度檢測層、使用藍(lán)圖可分離卷積替代主干網(wǎng)絡(luò)的標(biāo)準(zhǔn)卷積,算法平均精度提高了4.7%,但速度有所降低。為了解決小目標(biāo)交通標(biāo)志檢測精度低的問題,文中在YOLOv5 算法基礎(chǔ)上,調(diào)整了主干網(wǎng)絡(luò)下采樣倍數(shù),將MobileViT Block融合到頸部網(wǎng)絡(luò)進行全局建模。采用離線增強方法對訓(xùn)練集進行擴充,同時采用Mosaic-9 在線增強方法進行訓(xùn)練。
YOLOv5 算法結(jié)構(gòu)主要由輸入、主干網(wǎng)絡(luò)、頸部網(wǎng)絡(luò)、預(yù)測層組成。主干網(wǎng)絡(luò)由Conv、C3、SPPF等模塊組成,用于提取圖片中的特征信息。根據(jù)網(wǎng)絡(luò)深度倍數(shù)和寬度倍數(shù)的不同,YOLOv5算法由小到 大 分 為YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l 和YOLOv5x。交通標(biāo)志檢測的實際應(yīng)用需要同時考慮模型的實時性和準(zhǔn)確性,YOLOv5s 模型的尺寸較小,計算推理速度快,部署起來更方便,所以選用YOLOv5s 版本作為改進模型,文中YOLOv5算法皆指YOLOv5s版本。
卷積神經(jīng)網(wǎng)絡(luò)進行特征提取時,隨著卷積層數(shù)的增加,特征圖的分辨率逐漸減小,感受野不斷擴大,深層網(wǎng)絡(luò)更傾向于關(guān)注全局信息,不利于對小目標(biāo)的檢測。相反,淺層網(wǎng)絡(luò)的特征圖大,細(xì)節(jié)特征豐富,感受野重疊區(qū)域比較小,攜帶更多的小目標(biāo)信息,可以彌補深層網(wǎng)絡(luò)的不足。YOLOv5算法的FPN和PAN結(jié)構(gòu)中同時融合了主干網(wǎng)絡(luò)的8倍、16倍、32倍特征圖,背景以及噪聲信息會覆蓋小目標(biāo)信息,導(dǎo)致檢測精度較低。
文中采用1 個微小目標(biāo)檢測層替換YOLOv5算法的大目標(biāo)檢測層,降低主干網(wǎng)絡(luò)下采樣倍數(shù)為4 倍、8 倍、16 倍,一方面可以減少深層網(wǎng)絡(luò)的背景和噪聲信息,另一方面改進后FPN 和PAN 結(jié)構(gòu)可以充分融合淺層網(wǎng)絡(luò)信息,將更多淺層特征傳遞到深層特征,強化小目標(biāo)特征。改進后的FPN 和PAN結(jié)構(gòu)如圖1所示。
圖1 改進后FPN和PAN結(jié)構(gòu)
MobileViT Block[10]的結(jié)構(gòu)見圖2,輸入特征圖的尺寸為W×H×C,其中W和H分別表示特征圖的寬的高,C表示通道數(shù)。輸入的特征圖經(jīng)過Conv模塊、Transformer Block[11]和特征融合模塊后,與原始特征圖進行疊加,系統(tǒng)輸出疊加后的特征圖。
圖2 MobileViT Block結(jié)構(gòu)
具體操作流程:將輸入張量X通過1 個n×n卷積進行局部特征建模,再將其通過1個1×1卷積映射到高維空間中得到張量XL,最后將XL展開成N個扁平化且互不重疊的Patch 得到XU。Patch 中的像素p輸入Transformer Block,提取特征圖的全局空間信息得到XG,然后將其折疊復(fù)原至XU,再通過1×1標(biāo)準(zhǔn)卷積復(fù)原回特征圖XL,最后與X進行類似于shortcut拼接,使用n×n卷積做通道融合得到W×H×C特征圖作為輸出。其中:
式中:N為Patch個數(shù);w和h為Patch寬度和高度。
卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)的歸納偏置可以很好地學(xué)習(xí)視覺表征信息,然而由于卷積核大小的限制,CNN 只能對特征局部建模,存在感受野有限的問題。MobileViT Block集成了卷積和Transformer Block,以卷積中局部建模為基礎(chǔ)進行全局建模,同時具有CNN 和ViT 特性。將MobileViT Block融入微小目標(biāo)檢測層可以增加全局感受野,更好地表示小目標(biāo)交通標(biāo)志特征。
TT100K[12]數(shù)據(jù)集共有100 000張分辨率為2 048×2 048高清圖像,包含了30 000個交通標(biāo)志實例,覆蓋國內(nèi)5 個不同城市道路的真實交通場景。在TT100K數(shù)據(jù)集中篩選出道路上常見且實例個數(shù)大于100 的類別,共45 類交通標(biāo)志,9 170 張圖片,按照6∶2∶2 隨機劃分訓(xùn)練集、驗證集和測試集,其中訓(xùn)練集5 503張,驗證集1 833張,測試集1 834張。
劃分后的數(shù)據(jù)集存在不同種類交通標(biāo)志的樣本數(shù)量差異過大的問題,導(dǎo)致數(shù)量多的樣本訓(xùn)練效果較好,而數(shù)量少的樣本訓(xùn)練效果不佳。文中采用離線增強和在線增強相結(jié)合的方式進行樣本訓(xùn)練來解決該問題。為了保證實驗有效性,離線增強只對訓(xùn)練集的5 503張圖片進行0.8~1.5倍隨機縮放、長和寬的扭曲和隨機色域變換處理,將不足500個的交通標(biāo)志類別實例個數(shù),擴充至500 個以上,離線增強后的訓(xùn)練集有13868 張圖片。在線增強使用Mosaic-9數(shù)據(jù)增強方法,訓(xùn)練時隨機選取9張圖片進行隨機裁剪、縮放,將處理后的圖片隨機分布后拼接成1張新的訓(xùn)練樣本,增加樣本背景信息的多樣性,豐富了交通標(biāo)志實例。
實驗訓(xùn)練和測試平臺均使用Windows10 操作系統(tǒng),硬件主機CPU為Intel Core i5-10500,顯卡為NVIDIA GeForce GTX 3070,顯存為8G,內(nèi)存為32GB RAM+100GB Virtual Memory。深度學(xué)習(xí)框架為Python3.8.15、Pytorch1.10.0、TorchVision0.11.0、CUDA11.3、CuDNN8.2.0。
訓(xùn)練時使用YOLOv5默認(rèn)低版本超參數(shù)配置,輸入圖像分辨率為640×640,初始學(xué)習(xí)率設(shè)置為0.01,使用余弦退火調(diào)整學(xué)習(xí)率,關(guān)閉Fliplr左右翻轉(zhuǎn)增強,默認(rèn)使用SGD 優(yōu)化器,批量大小為16,迭代輪次為200次。
文中采用精確率P、召回率R、mAP@0.5、FPS及參數(shù)量NP作為算法性能評估指標(biāo),相關(guān)表達式為
式中:TP為真正例;FP為假正例;TN為真反例;FN為假反例;PmA為mAP@0.5 的值;PA為平均精度值。FPS為畫面每秒傳輸?shù)膸瑪?shù),用來衡量模型的檢測速度,當(dāng)FPS越大時,模型每秒處理的圖像數(shù)越多,實時目標(biāo)檢測的最低要求是FPS需達到30。
為了加速模型收斂,節(jié)約算力成本,實驗前采用K-Means++聚類初始錨框,并使用WIoU 作為邊界框損失函數(shù)。在TT100K 測試集上進行了消融實驗,依次引入數(shù)據(jù)增強(data augmentation, DA)、微小目標(biāo)檢測層(tiny target detection layer,TTDL)和融合模塊MobileViT Block 與原始YOLOv5 算法作對比,實驗結(jié)果如表1 所示。實驗方法中,D、T、M分別表示DA、TTDL、MobileViT Block方法。
表1 消融實驗結(jié)果
根據(jù)表1 可知,YOLOv5 算法的精確度為81.3%,召回率為71.9%,mAP@0.5為79.6%,表現(xiàn)一般。YOLOv5算法引入DA后,擴充了交通標(biāo)志實例數(shù)量少的樣本,訓(xùn)練效果變好,表明確保充足且均衡的訓(xùn)練樣本能有效提升算法性能。YOLOv5 算法引入TTDL 后,精確度、召回率和mAP@0.5 都有提升,模型參數(shù)量降低到3.9×106,有效增強了算法對于小目標(biāo)的特征提取能力。YOLOv5 算法引入MobileViT Block 后的檢測效果一般,F(xiàn)PS 下降至78.2,模型參數(shù)量增加到7.7×106,整體提升不大。分析MobileViT Block原理可知,與8倍下采樣的小目標(biāo)檢測層融合后,MobileViT Block會執(zhí)行卷積下采樣操作,進一步增大感受野,導(dǎo)致MobileViT Block 的全局感受野無法充分發(fā)揮作用,因此應(yīng)將MobileViT Block與TTDL結(jié)合進行改進。YOLOv5+TTDL+MobileViT Block與YOLOv5+TTDL相比顯著提升了模型的精確率和mAP@0.5,充分發(fā)揮了MobileViT Block 全局建模能力的優(yōu)勢。YOLOv5+DA+TTDL 的模型參數(shù)量最小,速度最快。YOLOv5+DA+TTDL+MobileViT Block 與YOLOv5 算法相比,精確率、召回率、mAP@0.5 分別提升了8%、14.2%、11.5%,模型參數(shù)量降低了39%,F(xiàn)PS雖然有下降幅度不大,但仍然超過了實時目標(biāo)檢測的最低要求,保證了交通標(biāo)志檢測的實時性。
在訓(xùn)練過程中,不同模型的mAP@0.5 變化曲線如圖3a 所示,總損失變化曲線如圖3b 所示。從圖3 可以看出每項改進方法對模型的性能都有一定的提升,其中總損失是邊界框回歸損失、置信度損失以及類別損失之和。改進算法在mAP@0.5和總損失上都優(yōu)于基礎(chǔ)模型,其收斂速度快,損失曲線震蕩波動小且更加平滑,訓(xùn)練效果更好。
圖3 訓(xùn)練時不同模型的mAP@0.5和總損失變化
為了進一步驗證改進算法對于小目標(biāo)交通標(biāo)志檢測的有效性,進行對比實驗。按照MS COCO數(shù)據(jù)集[13]對小目標(biāo)的定義在測試集的1 834張圖片中提取出806張含有小目標(biāo)交通標(biāo)志的圖片,圖片中至少有1個或多個區(qū)域面積的分辨率小于32×32個像素點的交通標(biāo)志。選取的對比算法為具有代表性的單階段目標(biāo)檢測算法SSD、YOLOv3 以及最新提出的YOLOv7目標(biāo)檢測算法,測試時輸入圖像尺寸統(tǒng)一為640×640,實驗結(jié)果如表2所示。
表2 不同算法檢測性能實驗結(jié)果
表2 中,SSD 算法在小目標(biāo)交通標(biāo)志上的檢測精度為56.5%,F(xiàn)PS為27.5,沒有達到實時目標(biāo)檢測的最低要求。YOLOv3 算法無論在精度和速度上都不如YOLOv5 算法,而YOLOv7 算法在小目標(biāo)交通標(biāo)志檢測上也不如YOLOv5算法,檢測效果表現(xiàn)一般,但檢測速度上要略高于YOLOv3算法。改進算法在小目標(biāo)和所有目標(biāo)交通標(biāo)志上的檢測精度分別達到了85.3%和91.1%,檢測速度雖然略低于YOLOv5和YOLOv7算法,但仍具有很好的實時性。
不同算法在小目標(biāo)交通標(biāo)志測試集上的部分檢測結(jié)果如圖4~6所示。從圖4可以看出,當(dāng)檢測遠(yuǎn)距離小目標(biāo)交通標(biāo)志時,改進算法很好地檢測出所有交通標(biāo)志,其他算法均有漏檢。圖5中改進算法可準(zhǔn)確地檢測出被遮擋的交通標(biāo)志,預(yù)測框也有較高的置信度分?jǐn)?shù)。圖6中SSD和YOLOv3算法均有漏檢現(xiàn)象,YOLOv5算法有誤檢現(xiàn)象,YOLOv7算法和改進算法都檢測出所有交通標(biāo)志,但改進算法預(yù)測框的置信度得分更高,具有更好的檢測效果。
圖4 不同算法對遠(yuǎn)距離小目標(biāo)的檢測效果
圖5 不同算法對被遮擋目標(biāo)的檢測效果
圖6 不同算法對側(cè)面目標(biāo)的檢測效果
對YOLOv5算法進行改進,通過消融實驗和檢測效果對比實驗,證明了改進算法可以提高小目標(biāo)交通標(biāo)志的檢測精度,同時保證了交通標(biāo)志檢測的實時性。改進算法通過對主干網(wǎng)絡(luò)結(jié)構(gòu)的優(yōu)化減少了模型參數(shù)量,但浮點運算量沒有降低。模型訓(xùn)練和測試時只選取了常見的45類交通標(biāo)志,沒有覆蓋所有類別的交通標(biāo)志,接下來將從擴展其他不常見的交通標(biāo)志類別及降低模型浮點運算量方面開展研究。