?

基于Cache-DCN YOLOX算法的交通標志檢測方法研究

2024-02-29 04:21高尉峰王如剛王媛媛郭乃宏
計算機測量與控制 2024年2期
關鍵詞:交通標志卷積精度

高尉峰,王如剛,王媛媛,周 鋒,郭乃宏

(1.鹽城工學院 信息工程學院,江蘇 鹽城 224051;2.鹽城雄鷹精密機械有限公司,江蘇 鹽城 224006)

0 引言

在無人駕駛系統中,交通標志對于車輛的行駛具有非常重要的作用。作為自動駕駛中的關鍵技術,交通標志檢測識別精度的提升對于經濟發展、社會和諧相處都具有十分重要的意義。傳統的目標檢測方法主要依靠人工自主選擇特征從而進行訓練,如HOG、SIFT、Haar等[1-3],該類方法不僅計算量大,且檢測速度和精度都不能滿足實際的應用需求。隨著深度神經網絡的逐漸完善,由于較強的特征提取能力,深度神經網絡技術被廣泛應用于目標檢測任務中。目前,常用的目標檢測算法有以YOLO[4-6]系列算法、SSD[7-8]系列算法為代表的單階段算法和以R-CNN[9-10]系列算法為代表的兩階段算法。其中單階段算法是將目標檢測過程看作一個回歸問題來處理,而兩階段算法則是先產生一個建議區域,再對該區域進行分類及邊界框回歸,提取特征。由于具有良好的實時性,因此,單階段檢測被更多地應用在交通標志檢測領域,許多研究人員對單階段算法進行了優化以便更好地檢測交通標志。如,為了解決天氣的干擾對交通標志檢測的影響問題,代小宇等研究人員在YOLOv5中加入了SE注意力機制并融合雙向特征金字塔BiFPN,相比于原算法,檢測精度和召回率分別提高了7.94%和4.98%[11]。針對交通標志在圖像中占據位置小、檢測中精度較低的問題,尹宋麟等研究人員在YOLOv4的基礎上,使用152×152的尺度檢測層替代原有的19×19的大感受野檢測層,并加入了ECA模塊去提高算法的檢測能力,在TT100K數據集上訓練的準確率相較于原算法提升了4.58%[12]。為解決交通標志檢測任務中,在復雜路況出現錯檢漏檢的情況,趙宏等研究人員提出了一種改進的CGS-Ghost YOLO算法,將Focus模塊用StemBlock代替進行采樣,降低了模型的參數量的同時提高了模型的檢測精度[13]。為了提高各個類別的檢測精度,Dubey等研究人員在RetinaNet的框架上以更多層數的ResNet為基礎網絡,同時提出一種兩步TSR方法,在交通標志數據集CCTSDB上進行分類檢測,得到了較好的檢測精度[14-16]。為解決目標檢測過程中計算量大的問題,Rachmadi等研究人員提出了一種新型的輕量級空間金字塔卷積神經網絡分類結構,該結構將每一層金字塔所學習到的特征與第一層疊加,使得每一層網絡所能得到的學習區域更加平滑,最后的檢測訓練實現了在較低的計算量基礎上有著良好的檢測精度[17]。為解決交通標志檢測速度低的問題,黨宏社等研究人員在YOLOv5算法上引入了MobileNetv3主干網絡,結合了RFB模塊與ECA-Net模塊,并采用了Matrix NMS篩選候選框,最終對交通標志實現了更快的檢測速度[18]。為解決傳統檢測方法速度慢、精度低的問題,呂禾豐等研究人員使用加權Cluster非極大值抑制(NMS)代替YOLOv5的加權NMS算法,提高了生成檢測框的準確率,改進后的算法比原算法提高了6.23%的準確率[19]。為了解決交通標志檢測實時性不足的問題,王林等研究人員在YOLOv3算法中融入了金字塔池化模塊SPP,并充分利用上下文信息增強對小目標的檢測,實現了更快的檢測速度,并提高了對小目標的檢測精度[20]。從現有的研究結果來看,眾多學者基于單階段目標檢測算法做出改進,能夠良好地提升檢測精度,但是對于受干擾較大的交通標志例如遮擋、陰影或小目標交通標志等,無法實現更好的特征提取,使得檢測精度難以進一步提高。

為了加強模型的特征提取能力,本文提出了一種基于緩存方案和可變形卷積的YOLOX優化算法。首先將骨干網絡中普通的卷積模塊替換成DCN可變形卷積,使得模型在應對不規則形狀的目標物體時,能夠更加精確地感知和定位;然后使用EIOU損失函數替換原有的GIOU損失函數,提高收斂速度和回歸精度;最后使用多種數據增強的模式來提升模型的性能,并加入cache方案提升其檢測速度及精度。

1 YOLOX算法

YOLOX-Darknet53算法的骨干網絡采用了5個ResX殘差組件和32倍下采樣的特征提取方式,并保留了先驗的YOLOv3算法的Darknet-53骨干網絡和FPN頸部網絡。這個模型設計了3個解耦頭,采用分類和定位分離的方法來緩解深骨干網絡所帶來的性能瓶頸。在輸入為640×640×3的圖像下,3個解耦頭輸出尺度大小分別為20×20×85、40×40×85、80×80×85,最終拼接轉置輸出尺度大小為85×8 400。此外,該算法還使用了SPP子模塊和FPN子模塊實現多尺度空間特征的融合。跟之前的YOLO系列算法相比,YOLOX算法具有更好的性能,能夠實現更高的準確率及更快的速度。YOLOX-Darknet53的網絡結構如圖1所示。從圖1中可以看出,YOLOX-Darknet53中引入了大量殘差結構,主干網絡部分,用卷積層代替Darknet19中的最大池化下采樣層,輸入的640×640×3圖像通過堆疊的下采樣卷積和n個殘差塊,得到3張分別為原圖像1/8、1/16、1/32大小的特征圖(feature map),隨后對3張特征圖進行上采樣和下采樣,通過解耦檢測頭后,進行多尺度特征融合,最終輸出85×8 400的圖像。

圖1 YOLOX-Darknet53網絡結構圖

2 YOLOX算法改進

2.1 backbone部分改進優化

各算法基本結構如圖2所示,從圖2(a)可以看出,YOLOX中使用的是1×1與3×3卷積的Basic Block。從圖2(b)可以看出,在YOLOv6、YOLOv7中,使用的是重參數化Block,但重參數化的訓練代價高,且不易量化,需要其他方式來彌補量化誤差。如圖2(c)所示,本文則將Darknet中的1×1卷積替換成3×3卷積,并將原有模塊中的3×3卷積替換成了3×3可變形卷積,利用可變形卷積的形變建模能力,提高網絡模型的特征提取能力,從而更精確地檢測目標。改進后的模型整體框架如圖3所示,從圖3中可以看出,本文的算法改進了CspLayer中的CspBlock部分,在YOLOX的主干網絡中,殘差卷積的主干部分為1×1卷積和3×3卷積,改進模型則為CspBlock中加入了3×3的可變形卷積來增大模型的感受野,加強模型主干特征提取網絡的性能。輸入的特征圖首先經過DCNConv(Deformable Convolutional Networks Convolution),在可變形卷積中,每個位置的卷積核都會根據該位置的偏移量進行調整,以更好地適應目標形狀和姿態變化,然后再通過一些附加的卷積層進行特征提取和壓縮,最終得到預測框的類別和位置信息。在檢測交通標志時,可變形卷積所帶來了更大的感受野,能夠使得模型在檢測時能夠獲取到更豐富的關鍵特征,對于小目標、遮擋等交通標志的檢測能夠實現更高的檢測精度。

圖2 算法的Basic Block對比示意圖

圖3 改進模型整體框架圖

可變形卷積(Deformable Convolution)是一種基于空間變形的卷積運算方法,在卷積神經網絡中常被用來處理具有空間變形特征的圖像。相較于傳統的卷積操作,可變形卷積具有更強的自適應能力和更好的感受野控制能力,能夠對目標物體的不規則形狀進行更加精確的感知和定位。

標準的卷積操作通??梢苑譃閮刹糠郑?)在輸入的特征圖上使用標準固定網格進行采樣;2)對各個采樣點的數值進行加權運算。特征圖的標準卷積可以用式(1)表示:

y(p0)=∑pn∈Rw(pn)·x(p0+pn)

(1)

其中:p0為特征圖的原始位置;pn為包含采樣點中所列位置;R為每個分塊的索引編號;w(pn)為權重;x(p0+pn)為原始圖。由式(1)可知,在標準卷積中,每個卷積核所對應的權重是相同的。而可變形卷積則引入了額外的偏移量,使得卷積核可以基于輸入特征圖的空間變化進行自適應調整,因此特征圖的映射關系可以用式(2)表示:

y(p0)=∑pn∈Rw(pn)·x(p0+pn+Δpn)

(2)

其中:Δpn為偏移量;x(p0+pn+Δpn)和y(p0)為原始圖以及卷積所得特征圖的映射關系,可變形卷積的操作過程如圖4所示,首先使用傳統的卷積核提取特征圖,得到特征響應映射(Feature Response Map)。將上一步得到的特征響應映射作為可變形卷積操作的輸入,對其施加一個新的卷積層,生成2N個通道的偏移量特征圖,其中N表示卷積核大小。每兩個通道代表著一個坐標偏移量,即用來描述卷積核在該位置上的位移距離,這些偏移量可以隨著訓練進行不斷地調整,以適應不同的輸入圖像。對偏移量特征圖進行雙線性插值,將其上采樣至與輸入特征圖相同大小,以便后面能夠使用偏移量特征圖來調整卷積核的位置和大小。最后,結合上采樣后的偏移量特征圖和原始輸入特征,在反向傳播算法的優化下同時學習它們,以獲得動態調整可變形卷積核的大小和位置的能力。

圖4 可變形卷積結構示意圖

本文基于可變形卷積構建basic block,在基礎的3×3卷積后,再使用3×3的可變形卷積進行特征提取加強,增大了其感受野,從而能夠更好地提取特征,提高檢測的準確率。

2.2 損失函數改進

損失函數是一個衡量模型預測值和真實值之間差距的函數,在目標檢測中扮演著非常重要的角色,選擇一個合適的良好的損失函數能夠加強模型的性能,使模型更快更好地收斂。而IoU損失函數則是一種在目標檢測任務中常用的評估方法,它能夠很好地反映模型預測框與真實標注框之間的重疊程度。該損失函數可以幫助模型優化預測結果,使其更加準確地匹配實際標注,IoU及IoU的損失函數可分別用式(3)和式(4)表示:

(3)

(4)

其中:B表示預測框的面積;Bi表示真實框的面積。IoU損失函數可以將預測框與真實框之間的重疊程度表示為0~1之間的值以評估檢測效果。但是在現實情況下,存在預測框與真實框不相交的情況,這樣就無法進行有效地學習。此外,IoU并沒有考慮預測框與真實框之間的距離,無法精確地反映兩者之間的重合度情況。因此,在這些情況下,IoU損失函數的效果可能會受到影響。

因此YOLOX算法使用了GIOU損失函數。GIoU損失函數的公式可用式(5)表示:

(5)

其中:C為最小外接矩形的面積。GIoU在計算時,是以公式中的C-B∪Bi除去兩個框的其余面積,然而在預測框和真實框在相同距離的情況下,此部分面積最小,對Loss的貢獻也就越小,從而導致在垂直水平方向上回歸效果較差,模型的收斂速度慢。

因此,本文采用了EIOU損失函數來替換YOLOX所使用的損失函數。相比于GIOU損失函數,EIoU用分別計算寬高的差異值取代了縱橫比,同時引入Focal Loss解決難易樣本不平衡的問題。EIoU損失函數將最小外接矩形替換為最小化兩個框中心點的標準化距離,并分開計算目標框的長和寬。EIoU損失函數可用式(6)表示:

(6)

其中:b和bgt分別為預測框和真實框的中心點,ρ為兩個中心點的歐氏距離,d為預測框和真實框最小外接矩形的對角線距離,ω、ωgt、h、hgt分別為預測框和真實框的寬度與長度,cω、ch為覆蓋兩個框的最小外接矩形的寬度與長度。EIoU損失函數考慮了預測框和真實框的重疊部分對結果的影響,在計算IoU時,使用一個權重因子來平衡兩個框的面積,并將重疊部分的貢獻歸屬到各自的框中。這樣可以更準確地評估預測框和真實框的位置關系,避免了GIoU中出現兩個框并集等于其中一個框面積的情況,提升了收斂的速度和回歸精度。

為了解決GIoU損失函數在目標框水平和垂直方向上誤差較大的問題,并提高收斂速度和回歸精度,本文算法采用EIoU損失函數替換原來的損失函數。EIoU損失函數將目標框的長度和寬度分開計算,從而避免了GIoU損失函數誤差較大的問題,同時提高了收斂速度和回歸精度,更準確地確定兩個框的位置關系。在模型訓練時,能夠帶來更好的收斂效果,從而提高模型對于交通標志的檢測精度。

2.3 數據增強改進

在模型的訓練過程中,為了保證訓練的樣本充足,需要對樣本做數據增強,來提高樣本的質量和數量,從而提升模型的泛化能力。在很多目標檢測器中,Mosaic+Mixup的混合數據增強方式被廣泛應用,但是Mosaic+Mixup的數據增強方式失真度比較高,持續使用這種太強的數據增強對模型產生負面影響。于是YOLOX中采用的是強弱兩階段的數據訓練方式,但是YOLOX中的訓練引入了旋轉、切片以及翻轉,導致box標注產生誤差。

于是對于此模塊,本文采用多種數據增強的方式來增加模型的性能,主要包括單圖數據增強以及混合類數據增強,其中包括交通標志圖像色相調整、飽和度調整、明度調整、平移和 Mosaic以及MixUp。但是其中取消了旋轉、切片以及翻轉的數據增強方式,因為部分交通標志經過旋轉及翻轉等方式后,將會導致其含義改變,如圖5所示的部分交通標志展示圖,列舉的兩種不同的交通標志在旋轉或翻轉后,將會導致檢測的誤差。

圖5 旋轉后會改變含義的部分交通標志圖

模型的數據增強模塊采用強弱兩階段訓練,在前280個epoch中,模型采用了單圖數據增強和不帶旋轉、翻轉及剪切的Mosaic+MixUp混合數據增強,同時,將每一個訓練樣本中的混合圖像數量由原有的4加至8,以提升強度以及樣本的數量。在后20個epoch中,模型使用了比較小的學習率,關閉了Mosaic+Mixup高強度數據增強,同時采用了指數移動平均(EMA),使模型在比較弱的增強下進行微調,通過EMA將參數緩慢更新至模型。如果關閉太早則不能發揮Mosaic等高強度數據增強模式的效果,關閉太晚則由于之前已經過擬合,此時再關閉沒有任何增益,選擇在剩余20個epoch關閉可以避免持續使用原有數據增強所帶來的負面影響,同時減少誤差,提升準確率。

同時加入cache方案,由于Mosaic&MixUp涉及多張圖片的混合,在每次迭代中需要加載多張圖片來進行訓練,會引入更多的數據加載成本并減緩訓練的速度。如在YOLOv5中,每次做Mosaic時,4張圖片的信息都需要從硬盤中重新加載。緩存方案則是重新載入當前的一張圖片,其余參與混合增強的圖片則從緩存隊列中獲取,通過犧牲一定內存空間的方式提升效率。整體流程如圖6所示,從圖6中可以看出,cache隊列中預先儲存了N張已加載的圖像與標簽數據,每一個訓練步驟只需加載一張新的圖片及其標簽數據并更新到cache隊列中,當需要進行混合數據增強時,只需要從cache中隨機選擇需要的圖像進行拼接等處理,通過利用緩存,可以將訓練流水線中混合圖像的時間成本顯著降低到處理單個圖像的水平,提升了模型的性能。

由于在數據增強階段中取消了旋轉、切片和翻轉的數據增強方式,模型在檢測交通標志時避免了box標注產生的誤差,并使得部分交通標志的檢測不會出現錯誤,同時cache方案的引入減少了對數據加載的需求,能夠提升交通標志檢測的速度。

3 實驗與分析

3.1 數據集選取

本文的實驗采用了我國Tsinghua-Tencent100K交通標志數據集,該數據集是騰訊和清華一起合作制作的交通標志數據集,是目前國內唯一基于真實場景的公開交通標志數據集。數據集包含10萬幅街景圖像,經過計算,訓練數據集總共包含16 527個實例,測試數據集包含8 190個實例。這些圖片包含了各種不同情形下的交通標志圖,例如遮擋、能見度低、小目標等情形。該數據集下的交通標志圖所處的環境復雜,面臨的挑戰較多,能夠很好地檢驗模型的性能,并真實地反映現實中不同情況下的場景。本次實驗對于訓練集、驗證集和測試集按照8∶1∶1的比例來劃分。

3.2 實驗平臺及結果分析

實驗使用一張顯存大小為24 GB的NVIDIAGeforce3090顯卡訓練和測試所有模型。使用pytorch1.10.0框架,Cuda版本為11.3,使用python3.8版本語言進行編程。訓練過程中對網絡設定的部分超參數如表1所示。其中,batch為一次訓練所抓取的數據樣本數量,它的大小影響訓練速度和模型優化,設置得合理可以讓梯度下降的方向更為準確,這里batch的大小設置為16;weight_decay為權重衰退,它主要是為了防止過擬合,避免梯度爆炸;max_epochs為對完整數據進行迭代的次數,一般在200以上網絡才會收斂;base_lr為網絡的基礎學習率,學習率過高可能會導致無法梯度下降,過低則可能會使網絡收斂速度緩慢;momentum為動量,它可以幫助損失函數在訓練的過程中更好地達到全局最優的狀態。從表中可以看出,基礎學習率為0.001,最大訓練代數固定為300。

圖7為兩個算法模型在訓練過程中的損失函數折線圖,可以看出本模型的損失函數收斂效果明顯優于原算法。模型經過280個epoch后,進入后20個epoch的弱增強階段,進行進一步訓練,由圖可見由于YOLOX算法采用的數據增強方式,導致前280個epoch和后20個epoch的訓練差距較大,圖中A點為280 epoch點,B點為290 epoch點,可以看出兩點之間的曲率有一定的差距,說明模型的收斂效果較差,驗證了本文之前數據增強模塊的理論分析內容,而本文算法的收斂效果整體平穩。訓練結束,最終原YOLOX算法模型總損失在2左右振蕩穩定,而本模型最終則穩定在0.3左右。

在模型訓練完成后,對比兩個模型的mAP值,如圖8為兩個模型的mAP值隨epoch變化的折線圖,mAP表示所有檢測類別平均準確率的均值,可以用公式(7)表示:

(7)

圖8 mAP折線圖

其中:∑AP為各類別的平均準確率的總和,N為類別個數。作為模型訓練性能的指標,mAP值越高,代表模型的性能越好,檢測精度越高。由圖8中可以看出,YOLOX算法在訓練至280 epoch時其mAP值甚至有下降趨勢,在后20個epoch的弱數據增強的作用下才進一步提升,圖中C點為280 epoch點,圖中D點為290 epoch點,可以看出兩點之間準確率有一定的差距,驗證了本文之前數據增強模塊的理論分析內容,而本模型在強弱兩階段訓練過程中,mAP值穩定提升。最終經過300個epoch,本文模型訓練所得的mAP值達到了67.2%,而YOLOX算法在同樣的條件下mAP值則為60.8%。相較于原算法,本算法模型的mAP值提升了6.4%,由此可以看出該算法對于網絡模型檢測精度的提升是有效果的。

為了進一步驗證改進算法的有效性,本文在相同的配置與參數下對加入的模塊進行了消融實驗,消融實驗的結果對比如表2所示。從表2中可以看出,加入的3個模塊相比較于原算法而言,mAP值都有一定程度的提升,其中加入可變形卷積模塊時,提升了2.8個點,這是因為加入的DCNConv有著很強的感受野控制能力,加強了模型的特征提取,原有的不規則交通標志例如殘缺交通標志等,在DCNConv的作用下能夠更準確地識別出來。另外,在加入cache方案下的數據增強模塊時,mAP又提升了3.1個點,主要是cache方案減少了對數據加載的需求,使得模型收斂得更好,訓練效率大大提升。同時改進的算法在數據增強模塊中取消了裁剪及旋轉等增強方式,避免了框注釋和輸入之間的錯位,從而避免部分交通標志的檢測出現錯誤,提升了檢測的精度。

表2 消融實驗結果對比

同時將本文算法與目前主流的YOLO系列算法進行對比實驗,實驗對比結果如表3所示。由表3可以看出,在相同的配置環境下,改進的算法的mAP值要明顯優于其他YOLO系列的算法。與同系列的YOLOv3與YOLOv5相比,mAP_50:95值分別提升了10.9、6.9個點,與原算法相比,改進的算法提升了6.4個點。本文算法的推理速度為33.4,能夠良好地滿足實際檢測需求。綜上所述,與其他主流的YOLO算法相比,改進的YOLOX算法在能夠滿足良好的實時性的同時,有著更高的檢測精度。

表3 不同算法實驗結果對比

最后為了直觀地看出所改進后模型的網絡性能,以及在不同情形下的檢測效果,分別將原模型與改進后的模型在4種不同的情形下進行檢測,分別是無遮擋大目標、遮擋大目標、密集小目標以及遮擋小目標環境下進行檢測。檢測框中的數字為置信度,即該樣本為正樣本的概率,它與準確率成正比,置信度越高越好。其環境中的交通標志都是數據集中實際拍攝所得,能夠真實反映現實情況。

圖9為檢測無遮擋大目標時的效果圖,由圖可以看出,在檢測無遮擋大目標交通標志pm20時,YOLOX算法和本文算法都實現了成功檢測,但是YOLOX算法的檢測置信度為68.9%,而本文算法的檢測置信度為95.8%,遠高于原算法。

圖10為檢測遮擋大目標時的效果圖,由圖可以看出,在檢測出現部分遮擋的大目標交通標志時,YOLOX算法由于其數據增強引入了旋轉和切片等方式,導致預測框出現了重疊、錯亂的情況,未能成功標注出兩個交通標志,其中交通標志w55的置信度為34.9%,pl30的置信度為42.4%。而在本文算法模型中,預測框與圖像中交通標志的重合度較高,兩個交通標志都被正常地識別出來,其中,交通標志w55的置信度為93%,pl30的置信度為45.9%。從檢測結果中可以看出,無論是檢測精度還是預測框的重合度,本文算法都要優于YOLOX算法。

圖10 檢測遮擋大目標

圖11為檢測密集小目標的效果圖,由圖可以看出,在檢測密集的小目標時,兩個算法的置信度基本相同,但是YOLOX算法出現了錯檢,將交通標志p12錯檢成了p26,其置信度為32.8%。而本文算法則成功地檢測出了交通標志p12,其置信度為33.6%??梢钥闯霰疚乃惴ㄔ跈z測密集的小目標時,也有較好的效果。

圖11 檢測密集小目標

圖12為檢測遮擋小目標的效果圖,由圖可以看出,YOLOX算法在檢測遮擋的小目標時,出現了漏檢的情況,未能檢測出交通標志p23,本文算法則是成功檢測出了遮擋的小目標交通標志p23,其置信度為21.1%。從檢測對比圖中可以看出,本文的算法模型相對于YOLOX算法而言,具有更好的環境適配性,能夠較好地應對不同的環境。

圖12 檢測遮擋小目標

4 結束語

為了提高模型對交通標志的檢測精度,本文提出了一種基于Cache方案和DCN可變形卷積的YOLOX優化算法。在YOLOX算法的基礎上,進行了三點改進:首先將backbone的基本框架中的普通卷積替換成3×3普通卷積+3×3DCN可變形卷積,提高感受野,增強模型的特征提取能力;然后將原有的GIOU損失函數替換成EIOU損失函數,解決了GIOU損失函數誤差較大的問題,并且提高了收斂的速度和回歸的精度。最后采用多種數據增強的方式來增加模型的性能,且加入Cache方案,通過緩存隊列提升檢測效率,并進一步提升其檢測精度。實驗證明本文算法能夠在多種應用場景下更好地檢測識別交通標志。

猜你喜歡
交通標志卷積精度
交通標志認得清
基于雙向特征融合的交通標志識別
基于3D-Winograd的快速卷積算法設計及FPGA實現
從濾波器理解卷積
基于DSPIC33F微處理器的采集精度的提高
基于傅里葉域卷積表示的目標跟蹤算法
交通標志小課堂
GPS/GLONASS/BDS組合PPP精度分析
改進的Goldschmidt雙精度浮點除法器
我們歡迎你!
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合