周珂 周臘吾 黃文豪
(長沙理工大學電氣與信息工程學院 湖南省長沙市 410114)
實時車型識別是智能交通領域的研究熱點之一[1]。傳統(tǒng)的車輛識別方法[2]需要先設計和提取車輛特征,再通過機器學習算法進行訓練,而使用卷積神經(jīng)網(wǎng)絡和深度學習的方法則只需要大量標記的車輛圖像來訓練網(wǎng)絡,自動學習車輛類型特征并進行分類,提高了識別效率[3]。然而,這種方法仍然存在一定的瓶頸。文獻[4-6]對網(wǎng)絡進行了改進,例如融合了多種模型進行車輛檢測,但計算量較大且難以實現(xiàn)實時性。另外,文獻[4-6]已有模型進行了修剪或擴展,但這些方法在檢測精度和實時性之間存在折衷。為了綜合提升目標檢測網(wǎng)絡的精度、速度及小目標檢測性能,本文以YOLOv5 為基礎,在主干網(wǎng)絡上進行了三方面的改進:
(1)引入SENet 結構并對比分析引入點對網(wǎng)絡影響,擇優(yōu)進行特征權重的優(yōu)化;
(2)加入深度卷積分離策略,減少算法計算量,實現(xiàn)深度模型輕量化;
(3)淺層加入一個尺度輸出節(jié)點,以滿足對小目標的檢測要求。通過結合K-means 對先驗框的優(yōu)化,本文實現(xiàn)了實時車型識別。
YOLOv5 是一種速度快且效率高的目標檢測算法,核心思想是將網(wǎng)絡的預測信息向真實信息進行回歸,結合 了Faster-RCNN、Feature Pyramid Networks(FPN)、Visual Geometry Group(VGG)、Resnet 等先進思想。利用Resnet 殘差結構和FPN 進行特征提取,殘差結構加深可訓練網(wǎng)絡[7],F(xiàn)PN 從不同卷積層深度輸出特征,為后續(xù)特征加工提供輸入[8],同時對所提取的特征進行維度上的聚合,實現(xiàn)高效檢測。本文將對Darknet53 高層重復卷積層進行深度修改,以進一步提高檢測性能。
在卷積運算中,通過識取和融合同等位置感受野的特征,得到卷積核來感知輸入特征圖的空間信息變化[9]。然而,卷積核處理通道時可能會丟失部分維度信息。為了平衡空間和維度特征,引入SENet 結構來學習各通道特征權重,激發(fā)有影響力的通道并抑制低影響力的通道,實現(xiàn)三個維度信息的平衡。
(1)對給定形狀為H'×W'×C'的輸入X,經(jīng)過卷積操作Ftr得到特征圖U(H×W×C),計算過程如(1)(2)所示:
(2)特征圖經(jīng)過Squeeze 操作得到各個通道的初始權重系數(shù)zc,其中zc的形狀為1*1*C,Squeeze 操作如式(3):
(3)Excitation 處理分為兩個全連接層和兩個激活層,都有著各自的操作任務,如果zc需要降維與升維的話必須依靠兩個全連接層才能完成任務,其中進行升維處理后得到的形狀是和zc保持統(tǒng)一的,兩個全連接層能夠得到一些非線性關系,而這些非線性關系是有關于各個通道間表達能力的。s為更新得到的通道權重系數(shù),計算過程如式(4):
(4)將s 作為通道權重系數(shù),對識別讀取的特征圖U 再一次給予新值,從而使得占有一定分量的通道表達性顯著提升,因此特征圖U 的全體表達效果也明顯上升,得到下一層的輸入。計算過程如式(5):
隨著網(wǎng)絡深度的增加,卷積核數(shù)量呈指數(shù)增長,同時提取無用特征會干擾模型學習。為優(yōu)化通道特征,YOLOv5 采用SENet 結構抑制無效通道特征,激發(fā)重要通道特征,提高識別精度。在Darknet53 中,1×1 卷積層對特征圖的升降維度操作步驟有一定效果,但對長寬數(shù)據(jù)識別較差。同時,為了避免參數(shù)數(shù)量增加導致實時檢測困難,YOLOv5 使用了殘差塊與SENet 結合的方法,可分為將SENet 結構應用到殘差模塊內(nèi)或外。實驗結果將用于比較兩種方案的效果。
本文從深度可分離卷積中獲得靈感,通過在通道維度上分解和融合卷積核,改善了YOLOv5 主干網(wǎng)絡的卷積方法,從而在一定程度上減少了卷積計算量。深度模型輕量化是當前的熱點和難點[14]。為了說明方法改善的效果,下面將傳統(tǒng)卷積和深度可分離卷積的計算量進行簡單比較。假設輸入特征圖大小為N×N×K,輸出特征圖大小為M×M×L。對傳統(tǒng)卷積進行計算時,采用L個卷積核尺寸為S×S×K進行特征提取的時候,計算量公式為C=M×M×L×S×S×K。
而深度分離卷積方式的計算量C'由以下部分組成:
第一部分:進行特征識取的時候,對卷積核的要求就是所采納的數(shù)量需要和輸入特征通道數(shù)數(shù)量保持統(tǒng)一,卷積核大小為S×S×1,每一個卷積核僅僅只識取輸入特征圖的一個通道,不提取多余的通道,輸出特征圖為M×M×K,它的計算量是C1=M×M×K×S×S×1。
第二部分:采用L 個尺寸為1×1 的卷積核做升維或者降維操作步驟,針對的是第一步導出的特征圖,輸出特征圖尺寸為M×M×L,與傳統(tǒng)卷積方式中輸出的結果是一模一樣的,它的計算量是C2=M×M×L×1×1×K。
則深度分離卷積C'比傳統(tǒng)卷積C 為:
一般情況下卷積核尺寸是大于等于3,其中如果L越大,則比值越小,也就是說明深度分離卷積遠小于傳統(tǒng)卷積。
為了提高YOLOv5 的檢測性能,我們采用了可分離卷積結構來替代之前的深度分離卷積方法??煞蛛x卷積結構可以更好地擬合通道中的低分辨率特征圖,從而減少計算損耗并提高正向計算速度。此外,這種結構增強了模型的層級結構和非線性表達能力,促進了通道維度上的信息提取,使各種特征維度上的信息量更加平衡,最終提高了網(wǎng)絡的檢測性能。
YOLOv5 檢測物體的原始比例對應的有效區(qū)域相對較大,所以在檢測小物體方面就不是很準確。為解決這一問題,提出了一種新方案,將其引入到Darknet53 中。我們可以通過減小輸入圖像的特征圖單元格的空間感受面積來改進模型,這樣可以增強模型輸出特征圖單元對原始圖像中小區(qū)域的有效信息轉(zhuǎn)化比。換句話說,模型可以更準確地捕捉到原始圖像中的小細節(jié)信息,從而提高模型的性能。因此,改進后的YOLOv5 模型在檢測小物體方面表現(xiàn)出更強的能力,所提出的方法為物體檢測任務中檢測小物體的挑戰(zhàn)提供了一種有前途的解決方案。調(diào)整了主要的網(wǎng)絡層數(shù),并在第23、40、57 和66層生成了四個不同比例大小的特征圖,分別對應原始圖像的最大有效區(qū)域面積為73、209、481 和769。通過添加新的小目標檢測通道,原圖區(qū)域,增強了前景和背景目標區(qū)域之間的比率,提高了有效特征的表達能力,減少了背景特征的干擾,從而提高了模型檢測小目標的能力。
實驗平臺選用的操作系統(tǒng)為Ubuntu20.04.2 LTS,編程語言使用python3.9,深度學習框架采用tensorflow2.1,訓練IDE 選擇pycharm2018.3.7,顯卡運算平臺為cuda10.1,加速器為Cudnn7.5.0,相關硬件配置:
(1)CPU 為I9-9700K;
(2)GPU 為NVIDIA RTX2080;
(3)內(nèi)存為16GB RAM 等。
本實驗使用BIT-Vehicle 公開車輛數(shù)據(jù)集,包含9800 多張車輛圖像和對應的標注文件,共有六類目標,數(shù)量占比分別為8.18%、5.55%、58.91%、8.78%、4.73%和13.85%。實驗中采用batch size 為8,使用adam 優(yōu)化函數(shù)進行優(yōu)化,同時采用兩階段的warmup 策略設計學習率計劃。具體來說,前1 到3 個epoch 學習率為0.0001,第3 到6 個epoch 學習率為0.0005,第6 到10 個epoch學習率為0.001。在第10 個epoch 之后,每10 個epoch學習率衰減0.1 倍,以提高網(wǎng)絡的學習速度并保持權重分布的穩(wěn)定性。
在目標檢測任務中,合理的先驗框的選擇對模型性能至關重要。先驗框是模型的錨點,用于定位目標位置和尺寸。數(shù)據(jù)集中目標的尺寸信息可以通過聚類算法選擇合適的先驗框,其中K-means 聚類算法是一種常用的方法。需要注意的是,在選擇先驗框時要考慮數(shù)據(jù)集中目標的尺寸分布情況,并對其進行歸一化,以確保更接近真實框。最大交并比可以作為選擇更好先驗框的指標,并將其作為K-means 聚類算法的距離度量,以提高檢測性能。MaxIOU 的定義如式(6)。
Gx為目標真實框的寬,Gy為目標真實框的高;Px為簇中心的寬,Py為簇中心的高;使用K-means 聚類算法進行聚類,總共使用9 個中心簇。得到的9 個聚類先驗框分別為大尺度:(168,267),(221,232),(242,282);中尺度:(141,181),(150,200),(157,225);小尺度:(71,140),(91,203),(132,166)。
本文通過引入SENet 對比了內(nèi)部引入SENet 的model_1、外部引入SENet 的model_2 和原版YOLOv5模型的性能表現(xiàn)。在訓練過程中,隨著訓練周期的增加,三個模型的mAP 值有所變化。雖然在前期模型訓練中,YOLOv5 相對于model_1 和model_2 表現(xiàn)更好,但隨著訓練的深入,model_1 在平均精度上表現(xiàn)優(yōu)于model_2 和YOLOv5,而model_2 的平均精度略高于YOLOv5。在測試集上,引入SENet 雖然略微降低了檢測速度約5.4%,但顯著提高了模型的mAP 值,特別是model_1,其mAP 提高了約2.8%。這是由于model_1使用通道權重優(yōu)化策略,在增加通道間信息特征的同時保持了特征圖的平衡,從而提高了特征提取效率和模型性能。雖然引入SENet 增加了計算量和參數(shù),但使用深度可分離卷積進行優(yōu)化可以抵消這種影響??傊?,引入SENet 對目標檢測模型的性能有顯著提升,但需要在速度和精度之間權衡。
實驗結果表明,通過深度可分離卷積引入策略,可以有效地降低檢測過程的計算量,提高檢測速度。SCYOLO 模型相比于原YOLOv5 模型,在檢測速度上提升了81%,但在數(shù)據(jù)學習能力上稍弱于原模型,其mAP為0.8745,檢測能力約為原YOLOv5 模型的97%。同時,由于SC-YOLO 的參數(shù)數(shù)量較少,因此其對訓練集的擬合速度略高于YOLOv5,這也意味著SC-YOLO 在參數(shù)學習方面比YOLOv5 更加快速。在訓練過程中,SC-YOLO 和YOLOv5 表現(xiàn)出相似的loss 下降趨勢。因此,通過采用深度可分離卷積引入策略,可以在不損失太多檢測能力的前提下提高模型的檢測速度。
實驗對小目標檢測進行了優(yōu)化,通過在YOLOv5主干網(wǎng)絡中增加一個低層特征輸出節(jié)點并進行調(diào)整,形成了多尺度YOLO(M-YOLO)。實驗結果顯示,M-YOLO的mAP 值為0.9588,相比于YOLOv5 的mAP 值0.9021,提高了5.64%的識別性能。這表明增加低級特征輸出節(jié)點以增加有效特征占用率是提高模型性能的有效策略。然而,M-YOLO 的骨干網(wǎng)絡中引入比例和增加層數(shù)會帶來顯著的計算負擔,使得每秒可檢測的圖片數(shù)量從YOLOv5 的38 張降低到M-YOLO 的22 張,速度降低了近40%。
深度卷積特征圖對于小目標檢測存在著感受野與目標大小失衡的問題,而在較低層引入特征輸出節(jié)點可以部分克服這種限制,優(yōu)化正負樣本特征的比例和特征圖單元在原始圖像上的有效區(qū)域與真實目標占據(jù)區(qū)域之間的平衡,從而增強網(wǎng)絡的檢測精度,特別是針對具有較大感受野的小目標。該優(yōu)化策略為目標檢測網(wǎng)絡的性能提升提供了一種有效的方法。
本文改進的車型識別算法在多通道特征、特征金字塔和激活函數(shù)的融合方面進行了優(yōu)化,取得了比YOLOv4 更高的精度和更快的速度。實驗結果表明,在相同環(huán)境和參數(shù)條件下,本文算法的整體精度優(yōu)于YOLOv4,同時FPS 達到了實時車型識別的要求。與基于Faster-RCNN 和ZF-Net 結合的模型相比,本文算法在BIT-Vehicle 數(shù)據(jù)集上的檢測精度也更優(yōu)秀。本文算法對不同車型的檢測表現(xiàn)良好,在閾值不同的情況下召回率和精確率一直比較高。實時車型識別的實驗結果顯示,本文算法在遮擋、陰影和高密度車流等復雜環(huán)境下也表現(xiàn)良好,但仍需進一步改進以提高在復雜天氣情況下的車型識別表現(xiàn)。
本研究改進了YOLOv5 車輛識別算法的檢測準確性和速度。優(yōu)化方法包括特征權重優(yōu)化、深度可分離卷積核和小規(guī)模特征圖輸出。特征權重優(yōu)化提高了重要特征通道的表達能力,進而提高檢測準確性;使用深度可分離卷積核和添加小規(guī)模特征圖輸出優(yōu)化了檢測計算和減小感受野,提高了小物體的檢測準確性和降低了誤檢率。實驗結果表明,改進后的YOLOv5算法在檢測精度上提升了6.26%,在檢測速度上提升了11%,并具有先進性和實用性。在實時道路交通視頻的車輛檢測識別實驗中,算法表現(xiàn)良好,但在高密度車流情況下仍存在錯誤識別,需要進一步數(shù)據(jù)樣本訓練。下一步的研究將探索適應性關系式以實現(xiàn)準確且快速的目標檢測。