李海鵬,余 強(qiáng)
(長(zhǎng)安大學(xué) 汽車學(xué)院,陜西 西安 710064)
自動(dòng)駕駛領(lǐng)域離不開(kāi)道路環(huán)境感知,其中基于卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測(cè)近年來(lái)發(fā)展迅速[1]?;谏疃葘W(xué)習(xí)的目標(biāo)檢測(cè)算法可以分為單階段與兩階段。其中單階段常用的有單階段多盒檢測(cè)器(Single Shot MultiBox Detector, SSD)[2]算法和YOLO系列,包括YOLOv3[3]、YOLOv4[4]和YO- LOv5[5],雙階段的有區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(Region Convolutional Neural Networks, R-CNN)系列等。目標(biāo)追蹤算法用于車載移動(dòng)端多采用在線追蹤算法,其中Deep SORT[6]算法被廣泛采用。但是由于網(wǎng)絡(luò)權(quán)重較大,不易于以較低成本部署在邊緣設(shè)備,而大幅度的壓縮權(quán)重會(huì)以犧牲目標(biāo)檢測(cè)準(zhǔn)確度為代價(jià)。因此,本文提出如何在減小YOLOv5模型權(quán)重下,盡可能減小目標(biāo)檢測(cè)準(zhǔn)確度的下降。
道路環(huán)境復(fù)雜多變,采用單目攝像機(jī)獲得車輛周圍物體的信息。通過(guò)安裝在車輛上的攝像頭獲取車輛在道路上行駛時(shí)的實(shí)時(shí)視頻,進(jìn)而處理分析。實(shí)驗(yàn)車輛與攝像機(jī)的安裝位置如圖1所示。
圖1 實(shí)驗(yàn)車輛與攝像頭位置
數(shù)據(jù)包括在高速路、城市道路以及鄉(xiāng)村道路車載實(shí)時(shí)視頻,同時(shí)也應(yīng)包括在城市行駛一天的早高峰、午低谷和晚高峰三個(gè)時(shí)間段內(nèi)車輛道路環(huán)境視頻。
需要先從視頻中隨機(jī)截取圖片進(jìn)行圖片標(biāo)注,再進(jìn)行視頻流標(biāo)注。截取的圖片大小均為 1320 bits×1080 bits,標(biāo)簽共分為15類。其中選擇3330張圖片作為訓(xùn)練集,888張圖片作為測(cè)試集。利用軟件LabelImg標(biāo)注所有圖片。完成后進(jìn)行部分視頻流標(biāo)注,隨機(jī)從數(shù)據(jù)集中選擇連續(xù)的241幀圖片和650幀圖片,其中分別有37條軌跡和108條軌跡。標(biāo)注出每幀目標(biāo)的位置信息、分類信息和序號(hào)。
在目標(biāo)檢測(cè)算法中,模型太大不易于低成本地部署于邊緣設(shè)備中。在壓縮模型與保持模型精度需要進(jìn)行取舍,本文選擇YOLOv5系列中的YOLOv5s進(jìn)行改進(jìn),在降低模型大小同時(shí)以損失精度較小代價(jià)。
根據(jù)模型大小的寬度和深度不同,可以將YOLOv5算法分為YOLOv5s,YOLOv5m,YOLOv5l,YOLOv5x四種版本。本文選擇寬度和深度最小的YOLOv5s進(jìn)行改進(jìn),其結(jié)構(gòu)主要分為預(yù)處理、主干網(wǎng)絡(luò)、Neck部分和Head檢測(cè)端。預(yù)處理需要對(duì)數(shù)據(jù)集進(jìn)行Mosaic數(shù)據(jù)增強(qiáng)、自適應(yīng)錨框計(jì)算以及自適應(yīng)圖像填充處理。在主干網(wǎng)絡(luò)中需要運(yùn)用Conv模塊和C3[7]模塊進(jìn)行特征的提取,其中C3模塊可以起到壓縮模型并提高推理 速度的作用。在Neck部分由特征金字塔(Feature Pyramid Networks, FPN)和路徑聚合結(jié)構(gòu)(Path Aggregation Network, PAN)所構(gòu)成,可以將語(yǔ)義信息和特征信息進(jìn)行不同層級(jí)間的交流傳遞。Head檢測(cè)端是處理得到的不同尺寸下的特征圖,具體區(qū)分為大目標(biāo)、中目標(biāo)和小目標(biāo)。目標(biāo)識(shí)別完成后將置信度信息、位置信息和分類信息重新映射回原圖,同時(shí)輸入給目標(biāo)追蹤網(wǎng)絡(luò)進(jìn)行進(jìn)一步處理。YOLOv5流程圖如圖2所示。
圖2 YOLOv5流程圖
在傳統(tǒng)的卷積特征提取中會(huì)存在大量的冗余,如圖3所示。對(duì)于給定數(shù)據(jù)X∈Rc×h×w,其中c是輸入通道數(shù),h和w分別是輸入數(shù)據(jù)的高度和寬度,用于生成n個(gè)特征圖的任意卷積層的操作可以用公式描述:
圖3 傳統(tǒng)Conv處理過(guò)程
式中,b為偏置常數(shù);n為通道數(shù);Y∈Rh'×ω'×n為輸出的特征圖;卷積核為f∈Rc×k×n;h'和w'為輸出特征圖的高和寬;k×k為卷積核f的大小。
可以運(yùn)用GhostConv[8]來(lái)代替YOLOv5中的卷積模塊來(lái)對(duì)模型進(jìn)行壓縮,同時(shí)減小對(duì)模型精度的影響,如圖4所示。需要先進(jìn)行普通卷積得到部分的基礎(chǔ)特征圖,再對(duì)基礎(chǔ)特征圖進(jìn)行廉價(jià)卷積線性變換φk得到ghost特征圖,最后特征圖數(shù)目與原來(lái)的卷積操作一致,如以下公式描述:
圖4 GhostConv處理過(guò)程
式中,Y'∈Rh'×ω'×m;*為卷積操作;m為進(jìn)行普通卷積的通道數(shù);φi,j為進(jìn)行線性變化卷積操作。廉價(jià)的卷積操作消耗算力少,也可以包括其他變換等。其中m始終不大于n,若m=n則與等價(jià)于普通卷積。
shufflenetv2是一種輕量形網(wǎng)絡(luò),融入YOLOv5網(wǎng)絡(luò)中能起到壓縮模型大小,加快推理的效果,主要是圖5中的兩種模塊起作用。
圖5 shufflenetv2模塊
圖5 (a)中的Conv為普通卷積,DWConv表示深度卷積。Channel Split操作為對(duì)特征圖的通道進(jìn)行分割,在此為均分。Channel Shuffle操作可以增加通道間的信息交流,類似于將通道以某種方式打亂重組。
圖5(a)中先將通道均分,一部分不做處理,另一部分進(jìn)行卷積等操作。隨后將兩份特征圖合并,使得輸出的通道數(shù)和輸入的通道數(shù)一致,最后進(jìn)行的Channel Shuffle操作。圖5(b)中沒(méi)有Channel Split操作,將特征圖進(jìn)行不同的卷積處理,后續(xù)操作與圖5(a)一致。兩者模塊均采用了1×1卷積,可以壓縮模型大小同時(shí)對(duì)精度影響不大。
Deep SORT算法是由SORT算法改進(jìn)而來(lái)。以YOLOv5處理后得到的目標(biāo)檢測(cè)框、置信度和特征作為輸入,運(yùn)用級(jí)聯(lián)匹配算法、交并比(Intersection over Union, IOU)匹配算法和卡爾曼濾波算法進(jìn)行處理,完成目標(biāo)追蹤。
在Deep SORT算法中,先收到由YOLOv5網(wǎng)絡(luò)傳來(lái)的已識(shí)別目標(biāo)的種類信息、置信度信息和位置信息。在初步篩選后運(yùn)用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行重識(shí)別,對(duì)目標(biāo)框內(nèi)的特征進(jìn)行提取。利用余弦距離計(jì)算距離,結(jié)合卡爾曼濾算法,加權(quán)馬氏距離進(jìn)行級(jí)聯(lián)匹配,未匹配目標(biāo)則繼續(xù)進(jìn)行IOU匹配,最終可得到目標(biāo)軌跡,在經(jīng)過(guò)最終結(jié)果可利用匈牙利算法得到目標(biāo)追蹤軌跡。此處將重識(shí)別網(wǎng)絡(luò)使用shufflenetv2中的模塊進(jìn)行組合替換,可進(jìn)一步壓縮模型大小,并對(duì)追蹤精度影響較小。目標(biāo)追蹤算法流程圖如圖6所示。
圖6 Deep SORT流程圖
表1為YOLOv5s、YOLOv5s+ shufflenetv2和YOLOv5s+shufflenetv2+Ghostconv的結(jié)果對(duì)比,包括模型參數(shù)、GFLOPs、權(quán)重大小和mAP-0.5的對(duì)比。
表1 mAP-0.5對(duì)比
圖7為在數(shù)據(jù)集中視頻流的追蹤效果圖,其模型大小在壓縮的情況下實(shí)時(shí)性和模型精度均可達(dá)到預(yù)期要求。
圖7 目標(biāo)追蹤示意圖
本文通過(guò)對(duì)YOLOv5s結(jié)合shufflenetv2中的模塊,模型大小從13.7 MB下降為1.9 MB,而mAP-0.5只從0.888下降到0.810。網(wǎng)絡(luò)在融入Ghost模塊后,可以對(duì)模型整體進(jìn)一步進(jìn)行壓縮,模型大小下降至1.7 MB,而mAP-0.5可以達(dá)到 0.835。選取同樣權(quán)重大小較小的模型NanoDet-m模型進(jìn)行橫向?qū)Ρ?,在檢測(cè)精度上YOLOv5s+ shufflenetv2+Ghostconv的精度更高。