丁 華,劉 來
(江蘇大學 汽車與交通工程學院, 江蘇 鎮(zhèn)江 212013)
在智慧交通系統(tǒng)(ITS)中,車輛檢測技術是必不可少的重要環(huán)節(jié)[1],其檢測的速度和精度直接影響到智慧交通系統(tǒng)的實時性和準確性。近年來,基于自動駕駛、智能監(jiān)控和數(shù)字孿生系統(tǒng)等新興方向的快速發(fā)展,以及各類視頻數(shù)據(jù)不斷涌現(xiàn)的背景下,對視頻流中的目標物體進行檢測開始成為主流趨勢。視頻流樣本數(shù)據(jù)本質(zhì)上就是連續(xù)幀的圖像數(shù)據(jù),因此二者的檢測原理相差無幾。當前在視頻檢測領域遇到的問題主要有:1) 用于檢測的網(wǎng)絡模型的輕量化問題[2]。視頻檢測模型往往網(wǎng)絡層數(shù)多,內(nèi)存需求和參數(shù)量很大,這會導致模型難以部署在移動端或是嵌入式設備上。2) 在視頻流中待檢目標隨著時間發(fā)生一系列變化的問題[3]。不斷變化的目標物體經(jīng)常會產(chǎn)生運動模糊、虛焦、遮擋之類的問題,導致難以識別到目標的有效特征。
面向交通視頻流的車輛檢測模型的實現(xiàn)主要基于目標檢測技術。傳統(tǒng)的目標檢測算法主要靠人工技術來構建特征,然后使用一個給定步幅的滑動窗口進行特征提取[4]。這類檢測方法主要有Haar+AdaBoost[5]、HOG+SVM[6]、DPM[7]等。這些基于人工提取特征信息的操作會導致信息冗余、內(nèi)存消耗過大、檢測效果差等問題,同時也會使檢測速度極為緩慢。隨著深度學習在目標檢測領域的應用不斷增多,特別是隨著CNN(convolutional neural network)[8]的提出,使得圖像中的車輛檢測以及其他基于圖像的對象檢測任務取得了令人矚目的成功[9],以YOLO[10-14]系列、SSD[15]為主要代表的單階段檢測算法開始成為車輛檢測中的主流方法。雖然在早期這類方法的精度會低于以Fast R-CNN等[16]為代表的2階段目標檢測算法,但隨著one-stage算法的不斷迭代更新,目前最新的YOLOv6[17]、YOLOX[18]、YOLOv7[19]等檢測模型在速度和精度上都遠遠領先于2階段檢測算法。
雖然單階段算法在檢測效果上取得了很大的成功,但是密集的層數(shù)、高額的參數(shù)量和難以識別的特征等依然是亟待解決的問題。Tan等[20]提出了一種計算效率極高的輕量化CNN架構ShuffleNet,將點態(tài)分組卷積和信道重組相結合,在維持精度的基礎上節(jié)省了對內(nèi)存的消耗。Tan等[21]提出了Fused-MBConv的概念,使用基于強化學習的神經(jīng)網(wǎng)絡搜索結構探尋模型的最佳縮放因子,以此來同步更新模型的寬度、深度和分辨率,從而開發(fā)出了EfficientNetV2,它的體積僅為之前最優(yōu)輕量化模型的14.7%,但是計算速度卻遠超前者。Dong等[22]提出了一種輕量級YOLOv5車輛檢測方法,將C3Ghost和Ghost模塊引入YOLOv5頸部網(wǎng)絡來提升特征提取效果,此外還引入了注意模塊CBAM用來提高檢測精度,最終與YOLOv5模型基線相比參數(shù)量減少了19.37%,精度提高了3.2%。Wang等[23]修剪了YOLOv4-tiny的卷積核,并在網(wǎng)絡的殘差模塊中加入了擴展卷積層,還增加了參考人體視覺機制的感受野模塊RFB用以提高網(wǎng)絡模型的空間注意力和通道注意力,實現(xiàn)了在降低模型規(guī)模的同時提高模型的平均精度和實時檢測速度。
為了減少網(wǎng)絡模型的層數(shù)和參數(shù)量,實現(xiàn)檢測模型的輕量化需求,同時能夠?qū)﹄y以識別的特征起到更好的檢測效果,本文提出一種改進YOLOv7的輕量化車輛檢測模型。通過結合MobileNetV3結構減少網(wǎng)絡層數(shù)和參數(shù)量,以此實現(xiàn)網(wǎng)絡模型的輕量化。針對快速變化的目標特征信息難以提取的問題,引入一種無參注意力機制并融合雙向特征金字塔結構來增強特征學習能力。最終通過對數(shù)據(jù)集進行隨機區(qū)域忽略的處理來提高網(wǎng)絡模型的魯棒性。
與早前的YOLO系列網(wǎng)絡相比,YOLOv7的改進工作之一是將激活函數(shù)由LeakyReLU改為SiLU[24],其他基本模塊借鑒殘差設計的思想進行了優(yōu)化,但網(wǎng)絡的基本框架沒有發(fā)生太大的變化,仍然是由主干層、特征融合區(qū)域和檢測頭3個部分組成,其中特征融合區(qū)域和檢測頭是作為一個整體存在的。YOLOv7的網(wǎng)絡結構如圖1所示。
圖1 YOLOv7網(wǎng)絡結構
1.1.1主干層
YOLOv7的主干網(wǎng)絡主要包括擴展高效層聚合網(wǎng)絡E-ELAN、用于下采樣和特征提取的CBS模塊、MP模塊和起到擴大感受野減少梯度信息重復作用的SPPCSPC模塊,CBS作為最基礎的模塊,集成到其他模塊中。
1.1.2特征融合區(qū)域
頸部層的本質(zhì)就是起到一個特征融合區(qū)域的作用,它采用了傳統(tǒng)的PAFPN[25]結構,能夠讓網(wǎng)絡更好地學習從主干網(wǎng)絡中提取到的特征,不同細粒度的特征被分別學習并集中合并,以便學習盡可能多尺度的圖像特征。
1.1.3檢測頭
YOLOv7算法繼承了以前算法的優(yōu)點,保留了3個檢測頭,用于探測和輸出目標對象的預測類別概率、置信度和預測框坐標。探測頭輸出3種特征尺度:20×20、40×40和80×80,這3個特征尺度分別對應于大目標、中目標和小目標。
注意力機制[26]的提出最早是基于對人類視覺系統(tǒng)的深入了解。它模擬了人類不會同時關注所有信息,而是會有針對性地著重聚焦于某些有用信息而弱化剩余無用信息的現(xiàn)象,以便合理利用有限的視覺處理資源。深度學習領域引入的注意力機制主要是通過只選擇輸入信息的一部分,或者對輸入信息的不同部分賦予不同的權重,來解決信息冗余的問題。
本文從聚焦淺層結構中包含的重要目標特征,弱化無關特征出發(fā),在頭部結構中添加注意力機制,強化模型對難以識別的特征信息的學習能力,減少誤檢或漏檢情況的出現(xiàn)。
為了能夠?qū)崿F(xiàn)車輛檢測模型在移動端或嵌入式設備上的部署,將YOLOv7的主干網(wǎng)絡替換為輕量級網(wǎng)絡模型MobileNetV3[27],大幅度地減少用于特征提取的主干網(wǎng)絡模型的參數(shù)量以及對于內(nèi)存空間的占用。MobileNetV3是在它的前身MobileNetV2基礎上進行更新,主要的創(chuàng)新之處在于更新了激活函數(shù),引入了SE通道注意力模塊,重新設計了耗時層的結構,提高了模型的特征表達能力,其核心組成部分bneck模塊如圖2所示。
圖2 bneck模塊
交通視頻流的圖像范圍廣,拍攝周期長,受遮擋和光線明暗度干擾較大,因此有效聚焦重要區(qū)域至關重要。SimAM[28]是一種無參數(shù)的注意力機制,可以靈活地為不同特征圖調(diào)整3D注意力權重,以此來提高網(wǎng)絡獲取目標的能力,其原理如圖3所示。
圖3 SimAM注意力機制原理
當從特征圖中獲得注意力權重時,SimAM不用添加多余的參數(shù),從而得到更小的權重和更高的效率。SimAM的原理是利用計算神經(jīng)元之間的線性可分離度來發(fā)現(xiàn)主要的神經(jīng)元,并讓這些神經(jīng)元優(yōu)先獲得關注。本文將SimAM嵌入到改進的YOLOv7模型中以提高目標檢測的性能。SimAM來源于神經(jīng)科學理論,為了區(qū)分神經(jīng)元的重要性并成功實現(xiàn)注意,使用能量函數(shù)來定義神經(jīng)元t與位于相同通道中除t外任意一個其他神經(jīng)元之間的線性可分離度。每個神經(jīng)元的能量函數(shù)定義如下:
(1)
式中:t和xi是目標神經(jīng)元和通道中的其他神經(jīng)元;wt和bt是t的線性變換的權重和偏差;i是空間維度中的指數(shù);λ是超參數(shù);M=HW是單個通道上所有神經(jīng)元的數(shù)量。變換權重和偏差表示如下:
(2)
(3)
(4)
(5)
通過計算wt、bt以及通道中每一個神經(jīng)元的均值和方差的解析解,得到最小能量公式為:
(6)
(7)
(8)
從式(6)可以看出,能量函數(shù)值和神經(jīng)元t與其他神經(jīng)元之間的線性可分離度呈負相關的關系,線性可分離度會隨著能量函數(shù)值的減小而變大。整個注意力模塊都是在這個能量函數(shù)的指導下完成的,避免了過多的啟發(fā)式和調(diào)整工作。通過對單個神經(jīng)元進行計算,同時將線性可分離度的思想應用在整個模型中,使模型的學習能力得到了增強。本文的實驗表明,在YOLOv7結構中引入SimAM無參數(shù)注意力機制有助于模型在檢測過程中更有效地提取物體的特征信息,而不增加原始網(wǎng)絡參數(shù)。
YOLOv7在特征融合區(qū)域和檢測頭部分是沿用了FPN與PAN相結合的模式,對來自不同主干層的檢測參數(shù)進行聚合。這種結合雖然有效地提高了模型的信息聚合能力,但也導致了一個問題的出現(xiàn),即PAN結構本質(zhì)上是對特征的再次提取,它獲得的信息數(shù)據(jù)都是先由FPN提取處理過的,在預先處理信息的過程中會丟失大量主干部分的初始特征。在訓練過程中缺乏初始特征容易導致欠擬合現(xiàn)象的出現(xiàn),降低檢測的精度。從解決上述問題出發(fā),本文使用了改進的雙向特征金字塔網(wǎng)絡BiFPN[29]來改進原始的YOLOv7結構。原BiFPN網(wǎng)絡構建了雙向通道,提出了跨尺度連接方法,增加了額外的邊,將特征提取網(wǎng)絡中的特征圖直接與自底向上路徑中相對應尺寸的特征圖融合。因此,網(wǎng)絡保留了更多的淺層語義信息,而不會丟失太多的深層語義信息。原BiFPN網(wǎng)絡根據(jù)不同輸入的重要性設置了不同的權重,同時這種結構被反復使用以加強特征融合。然而在實際使用時發(fā)現(xiàn)在YOLOv7中引入加權BiFPN后的結果并不理想,其原因可能是對輸入圖層進行加權與添加注意力機制的操作非常相似。因此,本文去除了BiFPN的權重部分,引入了去權重的BiFPN,去加權BiFPN網(wǎng)絡結構如圖4所示。
圖4 特征設計網(wǎng)絡結構
將主干層替換為MobileNetV3結構,在MP模塊后加入SimAM注意力機制,并在融合采樣部分引入去加權的BiFPN結構,整體改進后的YOLOv7網(wǎng)絡結構如圖5所示。
本文主要是面向交通視頻流中的車輛檢測,所以選擇的數(shù)據(jù)集為真實場景下的車輛視頻數(shù)據(jù)集UA-DETRAC[30],該數(shù)據(jù)集包含使用佳能EOS 550D相機在北京和天津的24個不同地點拍攝的長達10 h的交通視頻。視頻數(shù)據(jù)以25幀/s的速度進行錄制,樣本尺寸為960×540像素。UA-DETRAC 數(shù)據(jù)集中有14余萬幀圖片和8 250輛標注了相關信息的車輛,其中訓練集約82 085張圖片,測試集約56 167張圖片,根據(jù)不同的場景和路段共分為60段視頻,數(shù)據(jù)集中的部分示例如圖6所示。
圖6 UA-DETRAC部分數(shù)據(jù)示意圖
綜合考慮數(shù)據(jù)集的特征信息冗余和本次實驗的算力,決定在所有視頻數(shù)據(jù)中每隔10幀取1張圖片,共獲得訓練集8 639張,驗證集2 231張,未被選取的即為測試集,并將數(shù)據(jù)集分為car、bus、van、others四類,各類樣式圖例如圖7所示。
為了增強數(shù)據(jù)集中的圖像數(shù)據(jù),使網(wǎng)絡模型獲得更強的魯棒性,同時減輕對算力和內(nèi)存的需求,考慮使用一種隨機區(qū)域忽略的方法對圖8(a)所示的原始數(shù)據(jù)進行處理,對每一張圖像隨機劃分出部分區(qū)域作為忽略區(qū)域,忽略區(qū)域主要是從路側(cè)的靜止車輛區(qū)域、過于遠離攝像頭使得車輛目標特征可以忽略不計的區(qū)域、無車輛目標或是其他目標的背景區(qū)域,處理后的樣本數(shù)據(jù)及標注效果如圖8(b)所示。
圖7 樣本分類圖例
圖8 數(shù)據(jù)處理及標注
為了評估相同實驗條件下改進前后網(wǎng)絡模型的優(yōu)越性,主要選取P-R曲線,當預測框與目標框的交并比(IOU)大于0.5時所有類別的平均準確度的平均值mAP0.5,模型參數(shù)量,FPS等指標來進行對比,計算公式如下:
(9)
(10)
(11)
(12)
(13)
式中:TP為預測為陽性的陽性樣本數(shù);FP為預測為陽性但實質(zhì)為陰性的樣本數(shù);FN為預測為陰性但實質(zhì)為陽性的樣本數(shù);FPS為每秒可以處理的圖片;t為處理一張圖片所需的時間。
本次實驗所采用的設備與環(huán)境配置為:Intel(R)Xeon(R)Gold6226RCPU@2.90 GHz處理器、NVIDIA RTXA500顯卡、24 G顯存;Windows 11操作系統(tǒng)以及Python3.9.0+torch1.8.0+CUDA11.1軟件環(huán)境。訓練參數(shù)如表1所示。
表1 模型訓練參數(shù)
為了驗證各項改進內(nèi)容對于網(wǎng)絡模型的改進效果,本文在實驗環(huán)境維持不變的情況下,在UA-DETRAC上開展了4組消融實驗。消融實驗結果見表2所示,其中“√”表示相對應的改進方法和實驗序號。
表2 改進模塊消融實驗結果
從表2可以看出,第1組實驗是將原始的YOLOv7作為基準,在不進行任何改進的情況下,其mAP值為62.9%,參數(shù)量為37.2 M,FPS可以達到45.7。第2組實驗只將BackBone層替換為MobileNetV3結構,其mAP值雖然下降了8.4%,但是模型的參數(shù)量下降到了原來的1/6,FPS提升了3倍以上。第3組實驗是在前面的基礎上融合了無參注意力機制SimAM,在參數(shù)量基本保持不變的情況下,mAP0.5有了一定的提升,FPS幾乎沒有太多變動。第4組實驗則是在考慮了第3組實驗的前提下引入了一種改進的BiFPN結構,進一步增強了網(wǎng)絡模型的特征提取能力,與基準模型相比參數(shù)量減少了30.3 M,FPS提高到了143.8,mAP0.5提升了9.1%,實現(xiàn)了網(wǎng)絡模型輕量化目標,達到了檢測速度和精度的要求。
在保證各項參數(shù)保持一致的情況下,本文將原始的YOLOv7模型與改進后的算法模型分別進行訓練來確定模型對比的公平性,訓練結果分別如圖9所示。
圖9 改進前后模型訓練結果
從圖9可以看出,改進后的YOLOv7算法模型mAP值從62.9%提高到72.0%,其中car類AP值從79.2%提高到81.6%,提升2.4個百分點;bus類AP值從82.4%提高到87.6,提升5.2個百分點;van類AP值從57.4提高到57.7,提升0.3個百分點;others類AP值從32.7提高到61.2,提升28.5個百分點,4種車輛類別檢測的AP值均有提升。
為了驗證改進后算法的優(yōu)越性,在保持實驗環(huán)境、訓練細節(jié)和數(shù)據(jù)集不變的情況下,將改進后的算法模型與其他經(jīng)典算法模型進行比較,結果見表3所示。從表3中可以看出,改進后的算法模型在輸入尺寸相同的情況下,mAP值和FPS都超過了其他經(jīng)典網(wǎng)絡模型,更加適合交通視頻流中的車輛檢測。
表3 不同網(wǎng)絡模型性能
為了更加直觀地反映出算法模型改進前后的差異性,選擇了3張不同情況下的數(shù)據(jù)樣本生成檢測效果如圖10所示。
圖10 可視化樣例檢測效果
在昏暗且有遮擋的條件下,原網(wǎng)絡沒有檢測到右上角的2輛車,而改進后的算法成功檢測到了車輛和對應的類別,說明改進后的網(wǎng)絡可以減少車輛漏檢情況。對于虛焦模糊且有遮擋的情況,改進后的網(wǎng)絡整體檢測精度都要高于改進前的網(wǎng)絡,說明改進后的網(wǎng)絡在檢測效果上有明顯的提升。在圖像特征少的情況下,改進前的網(wǎng)絡沒有檢測到下方的車輛,而改進后的網(wǎng)絡檢測到了van,其精度為0.53,說明改進后的網(wǎng)絡對于有效特征的提取能力更加優(yōu)秀。
針對YOLOv7模型在對交通視頻流中的車輛目標進行檢測時遇到的一些問題,提出了一種改進的網(wǎng)絡模型。通過將主干網(wǎng)絡替換為MobileNetV3,降低模型整體的參數(shù)量和內(nèi)存需求。引入SimAM注意力機制,對重要的特征信息聚焦處理,同時融合改進的BiFPN結構,進一步提高網(wǎng)絡的特征整合能力,最后在數(shù)據(jù)集上做了隨機區(qū)域忽略處理,增強模型的魯棒性。改進后的網(wǎng)絡模型在數(shù)據(jù)集UA-DETRAC上的測試結果表明,相比較YOLOv7網(wǎng)絡模型,參數(shù)量有了大幅度的減少,FPS提高到了143.8,檢測精度mAP0.5提升了9.1個百分點,證明了改進算法的優(yōu)越性。但該模型只檢測了4種車輛類型,而且沒有對非機動車和行人等非車輛單位進行識別,后續(xù)可以對數(shù)據(jù)集進行更精細、全面的類別劃分,以提高模型在實際檢測中的適應能力。