摘要:針對傳統(tǒng)路端車輛目標檢測算法參數(shù)多、檢測速度較慢等問題,提出了基于YOLOv5 的車輛目標檢測算法輕量化改進。首先,選用輕量化EfficientnetV2 卷積神經(jīng)網(wǎng)絡(luò)對原骨干網(wǎng)絡(luò)進行重構(gòu),同時在網(wǎng)絡(luò)中引入GAM 注意力機制;其次,為平衡CIoU 損失和IoU 損失在損失函數(shù)中的權(quán)重,引入α-CIoU 損失代替原有的CIoU 損失;最后,使用soft-NMS 算法替換原有的NMS 非極大值抑制算法。結(jié)果表明:相比原算法,改進后算法的精度提升了2.51%,檢測速度提升了8.6%,模型大小降低了31.7%;改進后的模型在提升檢測速度的同時,還提高了路端車輛目標的檢測性能。
關(guān)鍵詞:車輛目標檢測;深度學(xué)習;YOLOv5 算法;網(wǎng)絡(luò)輕量化
0 前言
隨著車路協(xié)同技術(shù)的發(fā)展,智能駕駛成為交通行業(yè)研究的熱點之一,其中目標檢測是確保智能駕駛安全的必要關(guān)鍵技術(shù)。智能駕駛要求車載計算機能夠精確、迅速地檢測出道路上的所有目標,因此高效的目標檢測算法在智能駕駛領(lǐng)域具有舉足輕重的作用。
目標檢測的目的是在圖像或視頻中準確地定位目標并識別出目標的類別。目前,基于機器視覺的目標檢測算法主要通過深度學(xué)習來實現(xiàn),通過卷積神經(jīng)網(wǎng)絡(luò)提取目標的特征,再通過分類回歸層完成目標的分類和定位工作。目標檢測算法可劃分為2 類[1]:一類是以區(qū)域卷積神經(jīng)網(wǎng)絡(luò)R-CNN 為代表的雙階段算法,先生成候選框,然后對候選框進行分類和定位,該方法精度較高,但速度較慢;另一類是以YOLO 算法為代表的單階段算法,該算法是直接在圖像上完成目標的檢測和定位,其優(yōu)點是速度快。YOLO 算法通過單次前向傳播來預(yù)測目標的位置和類別,能夠有效地利用多尺度特征信息進行目標檢測,在較高精度下準確地定位車輛位置,適用于車輛目標的檢測任務(wù)。
為滿足對車輛目標檢測的實時性要求,有研究人員在網(wǎng)絡(luò)輕量化和檢測算法方面進行了大量研究。ZHANG 等[2]為移動設(shè)備提出了ShuffleNet 算法,該算法采用點群卷積和Shuffle 通道2 種新的運算方法,降低了計算成本。MA 等[3]進一步提出了ShuffleNetV2 算法,該算法采用逐點組合的結(jié)構(gòu),重排通道,可減少參數(shù)量。HOWARD 等[4-5]使用深度可分離卷積替代標準卷積,提出MobileNet 模型,將卷積分解為深度卷積、逐點卷積,并進一步采用該方法優(yōu)化MobileNetV3 算法,通過自動搜索的方法找到性能更好的算法結(jié)構(gòu)。在檢測算法方面,余穎舜等[6]提出一種將元學(xué)習Reptile 與知識蒸餾相結(jié)合的方法來提升YOLO 算法的檢測速度。
在網(wǎng)絡(luò)結(jié)構(gòu)輕量化方面,以上提出的目標檢測算法均進行了優(yōu)化,但主干特征提取網(wǎng)絡(luò)中參數(shù)較多和計算量較大仍是限制自動駕駛技術(shù)發(fā)展的原因之一。本文基于真實場景下的車輛數(shù)據(jù),對傳統(tǒng)的YOLOv5 算法進行改進,將原主干特征提取網(wǎng)絡(luò)更換為輕量化的網(wǎng)絡(luò)結(jié)構(gòu),并加入注意力機制模塊,更換了原網(wǎng)絡(luò)中的損失函數(shù)和非極大值抑制(NMS)算法,以期在一定程度上改善目標被遮的問題。
1 YOLOv5 目標檢測算法
1. 1 YOLOv5 目標檢測原理
YOLOv5 是一種單階段端到端的目標檢測算法,該算法首先通過特征提取網(wǎng)絡(luò)提取輸入特征,得到特定大小的特征圖輸出,將圖像劃分為若干個S×S 的網(wǎng)格,每個網(wǎng)格負責對落入其中的目標進行檢測;當目標位于網(wǎng)格中某個點時,對應(yīng)的網(wǎng)格開始對目標進行檢測;最后,通過NMS 處理,輸出最終的檢測結(jié)果。
1. 2 YOLOv5 網(wǎng)絡(luò)結(jié)構(gòu)
YOLOv5 的網(wǎng)絡(luò)結(jié)構(gòu)為全卷積網(wǎng)絡(luò),可通過堆疊卷積層來實現(xiàn)目標的檢測任務(wù)。該網(wǎng)絡(luò)架構(gòu)主要包括輸入端、骨干網(wǎng)絡(luò)、頭部網(wǎng)絡(luò)3 個部分,檢測時直接輸入圖片或視頻,利用人工標注的標簽對網(wǎng)格進行訓(xùn)練,通過卷積神經(jīng)網(wǎng)絡(luò)提取圖像中的特征信息,生成預(yù)測框和置信度,設(shè)置損失函數(shù),進一步獲得目標的檢測邊框和分類。YOLOv5 的網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示。
輸入端負責輸入圖像并進行數(shù)據(jù)增強,即在數(shù)據(jù)集中隨機選取4 張原始圖像及其標注框,通過移動、縮放、裁剪等操作將其拼接到1 張圖上,作為訓(xùn)練樣本。
骨干網(wǎng)絡(luò)主要用于圖像的特征提取和歸一化操作。其中,CBS 模塊由1 個卷積層Conv、1 個BatchNorm2d 模塊、1 個激活函數(shù)SiLU 組成,用于提取特征;C3 模塊由3 個卷積層Conv 和1 個瓶頸層Bottleneck 組成;CSP 由CBL 模塊、Resunint 模塊以及卷積層組成,可以促進特征傳播,緩解梯度消失程度和減少參數(shù)量??焖倏臻g金字塔池化(SPPF)層由3 個串行的池化層組成,對輸入的特征圖進行不同尺度的池化操作,并進行特征融合。
骨干網(wǎng)絡(luò)首先通過卷積塊對輸入圖像進行采樣,以減小特征圖的空間維度和增加網(wǎng)絡(luò)對物體的感受野,從而更好地捕捉物體的全局特征和上下文信息;C3 層用于特征的提取,其將輸入特征分成2 部分,一部分作為主路徑,前向傳播,另一部分作為支路,2 部分輸入特征分別進行卷積,然后將其合并,形成輸出;SPPF 層用于特征的融合。
頭部網(wǎng)絡(luò)包括Neck 和 Detect 2 個部分。Neck是將底層的粗糙特征轉(zhuǎn)化為更加高級和語義豐富的特征,主要使用1 個路徑聚合網(wǎng)絡(luò)PANet,其結(jié)構(gòu)有5 個核心模塊,如圖2 所示:① FPN 特征金字塔網(wǎng)絡(luò)結(jié)構(gòu);② 自底向上路徑增強;③ 預(yù)測框分支;④ 自適應(yīng)特征池化;⑤ 全連接融合。
PANet 在FPN 的基礎(chǔ)上引入了1 個自底向上的路徑,用低層特征融合高層特征,以增強高層特征的定位信息,經(jīng)過自頂向下的特征融合后,再進行自底向上的特征融合,則底層的位置信息能夠傳遞到頂層,增強了多個尺度上的定位能力。
在檢測階段,將之前提取到的多尺度特征輸入到特征網(wǎng)絡(luò)中,通過卷積和池化操作,得到目標的位置信息和類別信息,再經(jīng)過NMS 處理得到最終的檢測結(jié)果。
2 改進的YOLOv5 算法
在車路協(xié)同環(huán)境下,為了提高車輛目標檢測的準確性和檢測速度,并提高網(wǎng)絡(luò)的收斂性能,本文在原有YOLOv5 模型上引入輕量化的網(wǎng)絡(luò)結(jié)構(gòu)EfficientNetV2,用于替換原有的主干網(wǎng)絡(luò),通過減少計算量和參數(shù)量來提升檢測速度;同時,在設(shè)計損失函數(shù)時引入α 參數(shù),來平衡調(diào)整CIoU 損失和IoU損失在損失函數(shù)中的權(quán)重;針對檢測部分,引入軟化非極大值抑制(soft-NMS)[7]算法,用于提高目標分類精度。
2. 1 輕量化EfficientNetV2 網(wǎng)絡(luò)
在骨干網(wǎng)絡(luò)部分,采用輕量化的EfficientNetV2架構(gòu)[8]替換原有的網(wǎng)絡(luò)。表1 為EfficientnetV2 模型架構(gòu),其中MBConv 為移動翻轉(zhuǎn)殘差瓶頸卷積,F(xiàn)used-MBConv 為融合移動翻轉(zhuǎn)殘差瓶頸卷積,均是輕量級網(wǎng)絡(luò)的重要組成部分。
改進后的模型可分為3 個部分:第1 部分為3×3的卷積,用于擴充通道數(shù)。第2 部分是采用Fused-MBConv 層和MBConv 層來代替原有的C3 層,如圖3 所示,MBConv 層是先采用1×1 的卷積來升維,再用一般的卷積特征進行提取,并添加一個SE 注意力機制,對輸入特征矩陣的每一個通道做一個全局平均池化操作,再采用1×1 的卷積進行降維,將不同通道的信息進行綜合,以減少參數(shù)量;Fused-MBConv 層則是將深度可分離卷積替換成1 個普通的卷積,以提升訓(xùn)練速度。第3 部分是采用1×1 卷積、池化和全連接,從而能夠處理不同大小的圖像。