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