蒲玲玲, 楊柳
(1.西南交通大學(xué)唐山研究生院, 唐山 063000; 2.西南交通大學(xué)綜合交通大數(shù)據(jù)應(yīng)用技術(shù)國家工程實(shí)驗(yàn)室, 成都 611756; 3.西南交通大學(xué)信息科學(xué)與技術(shù)學(xué)院, 成都 611756)
對于車輛的跟蹤研究屬于目標(biāo)跟蹤問題中的多目標(biāo)跟蹤問題,多目標(biāo)跟蹤的解決步驟一般為兩步,目標(biāo)檢測和目標(biāo)數(shù)據(jù)關(guān)聯(lián)。先使用目標(biāo)檢測算法將感興趣的目標(biāo)進(jìn)行定位和分類,再使用目標(biāo)數(shù)據(jù)關(guān)聯(lián)算法,將不同幀之間的相同目標(biāo)進(jìn)行關(guān)聯(lián),以確定不同幀中的目標(biāo)是否為同一目標(biāo)。在多目標(biāo)跟蹤問題上,除了目標(biāo)檢測算法的性能對跟蹤性能影響大以外,前后幀之間的目標(biāo)數(shù)據(jù)關(guān)聯(lián)也同樣影響著跟蹤的性能。多目標(biāo)跟蹤發(fā)展到現(xiàn)在,根據(jù)Re-ID(re-identification)模塊是否融入目標(biāo)檢測網(wǎng)絡(luò),可分為DBT(detection-based tracking)和JDT(joint detection tracking)兩類[1],前者將目標(biāo)檢測和Re-ID模塊分為兩個(gè)網(wǎng)絡(luò)實(shí)現(xiàn),具有較高的準(zhǔn)確率,是當(dāng)前基于深度學(xué)習(xí)的視覺多目標(biāo)跟蹤的主流方法;后者將DBT兩模塊聯(lián)合,具有較高的運(yùn)行速度,是近兩年發(fā)展的新趨勢。
如何提高多目標(biāo)跟蹤的推理速度一直是近年來研究的熱點(diǎn)。Wojke等[2]提出了DeepSORT算法來進(jìn)行多目標(biāo)跟蹤。毛昭勇等[3]使用EfficientNet作為YOLOv3的骨干網(wǎng)以提高檢測速度,將推理耗時(shí)的骨干網(wǎng)替換為輕量級網(wǎng)絡(luò),減小目標(biāo)檢測網(wǎng)絡(luò)的推理時(shí)間。武明虎等[4]將YOLOv3的損失函數(shù)和網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行改進(jìn)后,與SORT算法相結(jié)合進(jìn)行目標(biāo)跟蹤,跟蹤速度最快可達(dá)14.39 fps。Zuraimi等[5]將YOLO和DeepSORT用于道路上的車輛檢測和跟蹤,權(quán)衡精度和時(shí)間后,證明了使用YOLOv4要好于YOLOv3,在GTX 1600ti上的以YOLOv4為目標(biāo)檢測網(wǎng)絡(luò)的DeepSORT的總體跟蹤速度為14.12 fps。Zhang等[6]提出了FairMOT算法,該算法在大小為輸入圖像的1/4的高分辨率特征圖上使用無錨框的方式進(jìn)行目標(biāo)檢測和目標(biāo)外觀特征提取,使特征圖上的目標(biāo)中心更準(zhǔn)確地對齊到原圖上,獲取更準(zhǔn)確的目標(biāo)外觀特征。Liang等[7]為避免使用JDT方式進(jìn)行目標(biāo)跟蹤時(shí),兩個(gè)學(xué)習(xí)任務(wù)在一個(gè)網(wǎng)絡(luò)中出現(xiàn)惡性競爭問題,提出了CSTrack模型,以推動(dòng)每個(gè)分支更好地學(xué)習(xí)不同的任務(wù)。CSTrack模型在單GPU上推理速度為16.4 fps,有較高的多目標(biāo)跟蹤速度。
YOLO發(fā)展至今已有多個(gè)版本,YOLOv5基于他的靈活性和較低的推理時(shí)延,多位學(xué)者將其應(yīng)用在目標(biāo)檢測和跟蹤領(lǐng)域。趙桂平等[8]以YOLOv5框架為基礎(chǔ),借鑒了兩步法的優(yōu)點(diǎn),在邊框生成方面進(jìn)行改進(jìn),提高了YOLOv5的檢測精度。Wang等[9]使用YOLOv5s進(jìn)行目標(biāo)檢測,使用SiamRPN進(jìn)行單目標(biāo)跟蹤,綜合跟蹤速度為20.43 fps。Neupane等[10]使用YOLOv5進(jìn)行檢測,使用質(zhì)心算法進(jìn)行跟蹤,跟蹤速度最高可達(dá)38 fps,但是僅在手工繪制的一小塊跟蹤框內(nèi)進(jìn)行跟蹤,不進(jìn)行長時(shí)間跟蹤。黃戰(zhàn)華等[11]使用YOLOv5m進(jìn)行檢測,使用位置+聲源信息進(jìn)行跟蹤,在平均2個(gè)目標(biāo)的情況下跟蹤速度達(dá)到34.23 fps,但在跟蹤時(shí)只能定位一個(gè)聲源,多聲源情況下會(huì)存在干擾,多目標(biāo)跟蹤時(shí),跟蹤精度差。張文龍等[12]使用EfficientNet、D-ECA(DCT-efficient channel attention module)注意力模塊、AFN(associative fusion network)改進(jìn)YOLOv5,平均跟蹤速度為10.84 fps。張夢華等[13]為解決多個(gè)行人交錯(cuò)運(yùn)動(dòng)時(shí)出現(xiàn)跟蹤錯(cuò)誤的問題,在使用YOLOv5+DeepSORT對目標(biāo)進(jìn)行跟蹤后,再引入ReID(re-identification)技術(shù)去糾正行人的運(yùn)動(dòng)軌跡,提高跟蹤的精度。此方法在YOLOv5+DeepSORT跟蹤方式上額外增加了ReID網(wǎng)絡(luò),雖然提高了跟蹤精度,但由于引入更多的神經(jīng)網(wǎng)絡(luò),故需要消耗更多的推理時(shí)間。以上基于YOLOv5的檢測+跟蹤算法,均有較快的跟蹤速度,但可能更適用于少目標(biāo)或單目標(biāo)跟蹤,用于多目標(biāo)跟蹤時(shí)跟蹤精度和推理速度還需再提高。
基于上述方法啟發(fā),提出ReID特征識(shí)別模塊,將該模塊添加到Y(jié)OLOv5網(wǎng)絡(luò)中,使YOLOv5網(wǎng)絡(luò)在輸出目標(biāo)邊界框的同時(shí)輸出目標(biāo)的特征信息,以代替DeepSORT中的特征提取網(wǎng)絡(luò),從而提高目標(biāo)跟蹤的推理速度。同時(shí)提出一種基于動(dòng)態(tài)IOU(intersection over union)閾值的非極大值抑制算法,該算法根據(jù)每個(gè)邊框的置信度為每個(gè)邊框設(shè)置不同的IOU閾值,以提高目標(biāo)彼此覆蓋場景下的跟蹤精度,對較多目標(biāo)進(jìn)行更準(zhǔn)確的實(shí)時(shí)跟蹤。
對于車輛的多目標(biāo)跟蹤為目標(biāo)檢測和目標(biāo)跟蹤兩步。目標(biāo)跟蹤主要是將目標(biāo)的位置和表觀特征等信息進(jìn)行關(guān)聯(lián),得出相鄰幀之間那些目標(biāo)是同一個(gè)目標(biāo)。目標(biāo)檢測的工作主要是在圖像中找出感興趣的目標(biāo)對其進(jìn)行定位和分類?;谏疃葘W(xué)習(xí)的目標(biāo)檢測模型發(fā)展到現(xiàn)在,可以分為以R-CNN(region-CNN)為代表的基于候選框(two-stage)的算法模型和以YOLO為代表的基于回歸(one-stage)的算法模型兩類[14],前者算法模型在精度上高于后者,后者在推理時(shí)間的表現(xiàn)上好于前者。使用目標(biāo)檢測算法對道路上車輛的檢測,除了對算法的精度有要求外,還需對其推理時(shí)間有一定要求。故選擇基于回歸的一步式Y(jié)OLO目標(biāo)檢測算法來保證較小的推理時(shí)間。
YOLO網(wǎng)絡(luò)發(fā)展至今已有多個(gè)版本,其結(jié)構(gòu)一般分為骨干網(wǎng)、特征融合層、3個(gè)不同大小的預(yù)測頭。其用3個(gè)不同大小預(yù)測頭分別檢測不同大小的目標(biāo),以在追求速度的同時(shí)保證精度。
YOLOv4基于YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行改進(jìn),在提高精度的同時(shí)也提升了推理速度。YOLOv4為降低主干網(wǎng)的推理時(shí)間,在殘差網(wǎng)絡(luò)的基礎(chǔ)上組合成CSP(cross-stage-partial)模塊,CSP模塊能夠在加快模型推理速度的同時(shí)盡可能的保持精度性;使用SPP(spatial pyramid pooling)結(jié)構(gòu)將不同大小的特征進(jìn)行融合,增加網(wǎng)絡(luò)的感受野,有利于檢測出圖像中不同大小的目標(biāo);為將特征進(jìn)行充分融合,設(shè)計(jì)PANet(path aggregation network)特征融合網(wǎng)絡(luò),相比于YOLOv3采用的FPN(feature pyramid networks)自頂向下單向特征融合方法,PANet采用自底向上再自頂向下的雙向融合方法,獲得更豐富的目標(biāo)特征信息。
YOLOv5同YOLOv4一樣使用CSPDarknet、Neck和3個(gè)輸出頭的網(wǎng)絡(luò)結(jié)構(gòu),模型架構(gòu)與YOLOv4相似。YOLOv5有s、m、l、x 4種大小的結(jié)構(gòu)相同,但寬度和深度不同的模型可供使用,4種模型推理速度依次降低,推理精度依次升高。在訓(xùn)練時(shí)YOLOv5使用Mosaic數(shù)據(jù)增強(qiáng)將4張圖片合并為一張圖片進(jìn)行輸入,減小訓(xùn)練花費(fèi)的時(shí)間同時(shí)變相增大batch_size;使用自適應(yīng)錨框計(jì)算,能在小目標(biāo)的檢測上有更好效果;在主干網(wǎng)中使用focus結(jié)構(gòu),起到減少計(jì)算量和提高速度的作用。YOLOv5有兩種CSP結(jié)構(gòu),在主干網(wǎng)中使用CSP1結(jié)構(gòu),在Neck網(wǎng)絡(luò)中使用CSP2結(jié)構(gòu),以此加強(qiáng)特征融合能力和減少計(jì)算量。且CSP結(jié)構(gòu)深度隨模型的深度變化而變化。
JDE(joint detection and embedding)算法[15]通過在YOLOv3的3個(gè)預(yù)測頭中添加特征層,將對目標(biāo)特征的輸出也交給YOLO網(wǎng)絡(luò),提高了多目標(biāo)跟蹤的推理速度,但在3個(gè)不同分辨率的特征層上面進(jìn)行特征提取,當(dāng)相鄰幀中同一目標(biāo)大小變化明顯時(shí),可能檢測結(jié)果是不同的預(yù)測頭輸出的,由于檢測頭的分辨率不同,從而導(dǎo)致同一目標(biāo)在相鄰幀獲取到的特征相差過大,導(dǎo)致跟蹤失敗。FairMOT[6]算法為了提取到更準(zhǔn)確的目標(biāo)特征,將輸入圖片設(shè)置為1 088×608,在1/4原圖大小的特征圖上進(jìn)行目標(biāo)位置預(yù)測和特征提取,跟蹤精度得到了提升,但輸入圖片分辨率大且在較大特征圖上預(yù)測和特征提取會(huì)非常耗時(shí),導(dǎo)致跟蹤速度過慢?;诖?將YOLOv5模型進(jìn)行改進(jìn),使YOLOv5在輸出目標(biāo)位置信息的同時(shí)輸出目標(biāo)的特征信息。改進(jìn)后的YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,在YOLOv5網(wǎng)絡(luò)中添加ReID模塊,該模塊由特征輸出模塊和ID(identity)分類模塊共同模塊組成。
圖1 改進(jìn)后的YOLO網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Structure of improved YOLO
1.2.1 特征輸出模塊
神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)過程中,低層特征分辨率更高,包含更多的位置、細(xì)節(jié)、顏色等信息,但由于經(jīng)過的卷積較少,其語義信息含量低,噪聲更多;高層特征包含更多的語義信息,但其分辨率低,對細(xì)節(jié)的感知能力較差。且如果在較小的特征圖(1/8、1/16、1/32)上提取表觀特征,會(huì)因?yàn)樘卣鲌D分辨率太小,導(dǎo)致特征圖上的目標(biāo)中心不能很好地與原圖中心對齊,出現(xiàn)表觀特征提取粗糙的問題;如果在較深層特征層上提取特征,會(huì)獲得更多的語義信息,較少的顏色和細(xì)節(jié)等淺層信息,導(dǎo)致不同目標(biāo)的提取到的特征不能很好地區(qū)分。
以上兩種提取方式均容易造成目標(biāo)跟蹤錯(cuò)誤。故特征輸出模塊為使目標(biāo)能夠提取到較為精細(xì)準(zhǔn)確的特征,將PANet繼續(xù)自底向上進(jìn)行上采樣到1/4原圖大小,再與主干網(wǎng)中1/4原圖大小的特征進(jìn)行融合,最后輸出原圖1/4大小的128維的特征圖,作為提取目標(biāo)特征的特征池。與淺層1/4原圖大小的特征層進(jìn)行融合后,特征池不僅包含豐富的語義信息,也包含豐富的顏色細(xì)節(jié)等信息,可為不同目標(biāo)提供有區(qū)別的特征。且得益于特征池的高分辨率,能為鄰近目標(biāo)提供精準(zhǔn)的特征。
在訓(xùn)練階段使用標(biāo)簽直接定位到特征池128維特征,如圖1所示的網(wǎng)絡(luò)框架圖中檢測圖上的用紅色框框出的車輛位置,對應(yīng)到特征池中的紅色框框出的單位128維特征;在推理階段提取目標(biāo)特征時(shí)需結(jié)合YOLO輸出的目標(biāo)位置信息,定位到特征池單位128特征。使用目標(biāo)的位置信息在特征池中定位目標(biāo)特征,提取到和目標(biāo)唯一對齊的單位128維特征作為該目標(biāo)的特征。
1.2.2 ID分類模塊
ID分類模塊用以訓(xùn)練網(wǎng)絡(luò)的目標(biāo)特征識(shí)別能力,使網(wǎng)絡(luò)能夠輸出正確的和不同目標(biāo)有區(qū)別的目標(biāo)特征,其僅在訓(xùn)練模型時(shí)使用。ID分類模塊設(shè)計(jì)為兩層的全連接層,設(shè)計(jì)128個(gè)節(jié)點(diǎn)進(jìn)行輸入,ID總數(shù)個(gè)節(jié)點(diǎn)進(jìn)行輸出,將特征識(shí)別問題轉(zhuǎn)換為ID分類問題。在訓(xùn)練模型時(shí),將目標(biāo)的真實(shí)框中心定位到特征池上,從特征池中提取該定位處的128維特征,將該128維特征作為全連接層的輸入,將ID總數(shù)數(shù)量的節(jié)點(diǎn)作為全連接層的輸出,并且采用softmax對輸出的數(shù)據(jù)進(jìn)行歸一化,獲得該目標(biāo)的類別概率。然后使用交叉熵?fù)p失函數(shù)計(jì)算ID損失。softmax函數(shù)表達(dá)式為
(1)
式(1)中:zi為第i個(gè)節(jié)點(diǎn)的輸出值;zc為第c個(gè)節(jié)點(diǎn)的輸出值;C為輸出節(jié)點(diǎn)的總數(shù)。
公路監(jiān)控安裝并非總是正對車輛,如果攝像頭安裝在公路邊側(cè),離攝像頭較遠(yuǎn)的哪一方公路上的車輛在視頻里會(huì)很容易出現(xiàn)彼此覆蓋的情況。對于彼此覆蓋的目標(biāo)檢測,針對不同的問題有不同的解決方法。其中,針對覆蓋場景構(gòu)建對應(yīng)數(shù)據(jù)集,直接進(jìn)行訓(xùn)練,但是由于覆蓋的多樣性和數(shù)據(jù)的難收集性這種方式非常困難;如果是神經(jīng)網(wǎng)絡(luò)提取的特征不充分,可以針對損失函數(shù)和網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行改進(jìn);如果是網(wǎng)絡(luò)特征提取充分但是在覆蓋場景下仍表現(xiàn)不好,可以考慮是非極大值抑制(non-maximum suppression,NMS)將相鄰的檢測框過濾了。
車輛經(jīng)過目標(biāo)檢測網(wǎng)絡(luò)檢測后,非極大值抑制會(huì)基于邊框置信度和IoU(intersection over union)閾值抑制重疊的邊框。當(dāng)相鄰目標(biāo)的檢測框彼此重疊面積較大,會(huì)出現(xiàn)只留下一個(gè)目標(biāo)的檢測框,另一個(gè)目標(biāo)的檢測框被抑制的情況,導(dǎo)致對其中一個(gè)目標(biāo)檢測失敗,進(jìn)而導(dǎo)致跟蹤失敗。為此,提出一種基于動(dòng)態(tài)IoU閾值的非極大值抑制(dynamic non-maximum suppression,DNMS)算法。DNMS算法對YOLO預(yù)測到的邊框賦予一定的信任,根據(jù)每個(gè)邊框的置信度得分,對每個(gè)邊框設(shè)置不同的IoU抑制閾值。對邊框置信度得分越大的置于更多的信任,設(shè)置更大的IoU過濾閾值,來保留相互大面積覆蓋的正確邊框。
DNMS算法中引入兩個(gè)超參數(shù)supC和supT,分別用作過濾掉置信度較低的邊框和根據(jù)置信度設(shè)置IOU閾值,兩個(gè)參數(shù)的數(shù)值可根據(jù)數(shù)據(jù)集等實(shí)驗(yàn)因素自由確定。當(dāng)計(jì)算出的IOU閾值小于0.35時(shí),設(shè)置為0.35,以避免不同車輛邊框覆蓋面積很小就被抑制掉。DNMS算法偽代碼如下,其中Ni為第i個(gè)邊框的IOU閾值。
DNMS算法Input: The list of initial detection boxes, B = {b1,b2,…, bN}; The list contains corresponding detection scores, S = {s1,s2,…, sN};Output: The list of remaining detection boxes after DNMS, D = {b1,b2,…, bn}; The list contains corresponding detection score C={s1,s2,…, sn}1: D = {}; C = {}2: while (B ≠ Empty) do3: m = Max(S)4: M = bm; N = sm5: D = D∪M; C = C∪N; B=B-M; S=S-N6: forbi inB do7: Ni= (si -supC) * supT8: if 0.35> Ni > 0 then9: Ni = 0.35 10: end if11: if IoU (M, bi)> Nithen12: B = B -bi; S = S -si13: end if14: end for15: end while16: returnD, C
對于ID分類模塊,采用交叉熵?fù)p失函數(shù)進(jìn)行損失計(jì)算,其余損失函數(shù)采用YOLOv5原設(shè)計(jì)損失函數(shù)。
ID分類模塊損失函數(shù)為
(2)
式(2)中:M為類別的數(shù)量;當(dāng)樣本i真實(shí)類別為c時(shí)yic取1,否則取0;pic為樣本i屬于類別c的概率;N為樣本總數(shù)。
對于目標(biāo)檢測的置信度損失Lconf,為二元交叉熵?fù)p失,可表示為
(3)
對于目標(biāo)檢測的類別損失Lcls,為二元交叉熵?fù)p失,可表示為
(4)
對于目標(biāo)檢測的位置損失Lloc,為GIoU損失,可表示為
(5)
式(5)中:IoU為預(yù)測框和真實(shí)框的交并比;Ac為同時(shí)包含預(yù)測框和真實(shí)框最小矩形面積;U為預(yù)測框和真實(shí)框的并集。
目標(biāo)檢測的損失和可表示為
Ldet=Lconf(o,c)+Lcls(o,c)+Lloc
(6)
最后,總的損失函數(shù)可表示為
(7)
式(7)中:wdet和wid分別為通過任務(wù)的獨(dú)立不確定性自動(dòng)學(xué)習(xí)方案[16]學(xué)習(xí)得到的目標(biāo)檢測損失權(quán)重和ID類別損失權(quán)重。
基于改進(jìn)YOLO的多車輛場景目標(biāo)跟蹤的跟蹤流程圖如圖2所示。視頻流輸入后,會(huì)先使用改進(jìn)后的YOLO算法檢測出每幀中目標(biāo)的位置和特征信息。然后將目標(biāo)的位置信息采用卡爾曼濾波進(jìn)行預(yù)測,預(yù)測目標(biāo)的下一幀位置,使用當(dāng)前幀目標(biāo)位置和上一幀目標(biāo)預(yù)測位置進(jìn)行馬氏距離計(jì)算,得到目標(biāo)和軌跡的位置距離;使用當(dāng)前檢測的特征和軌跡近100個(gè)特征進(jìn)行余弦距離計(jì)算,取最小的距離作為目標(biāo)和軌跡之間的特征距離。之后將獲得的兩個(gè)距離進(jìn)行數(shù)據(jù)匹配來判斷相鄰幀的目標(biāo)是否為同一目標(biāo)。匹配算法主要使用匈牙利匹配和IOU匹配,先使用匈牙利對目標(biāo)和軌跡之間的位置信息和特征信息進(jìn)行匹配,若匹配成功則將該目標(biāo)直接加入到軌跡,若匹配失敗,則再進(jìn)行IOU匹配,匹配成功則加入軌跡,匹配失敗則創(chuàng)建新軌跡。
圖2 跟蹤流程圖Fig.2 Flow chart of tracking
提出的多目標(biāo)跟蹤算法未特別說明處均使用多目標(biāo)跟蹤流程進(jìn)行跟蹤。
實(shí)驗(yàn)操作系統(tǒng)為64位Windows10;硬件環(huán)境主要包括:Intel(R) Xeon(R) W-2223 CPU@3.60 GHz、內(nèi)存32 GB、訓(xùn)練環(huán)境中顯卡型號(hào)為NVIDIA TITAN xp,驗(yàn)證環(huán)境顯卡型號(hào)為NVIDIA Quadro P2200、深度學(xué)習(xí)框架為pytorch。訓(xùn)練的數(shù)據(jù)集采用UA-DETRAC[17]公開數(shù)據(jù)集。在訓(xùn)練改進(jìn)后的YOLOv 5 m時(shí)采用在coco數(shù)據(jù)集上訓(xùn)練好的權(quán)重結(jié)果作為預(yù)訓(xùn)練權(quán)重,訓(xùn)練批次(batch_size)設(shè)置為16,訓(xùn)練輪數(shù)(epoch)設(shè)置為50個(gè)。
數(shù)據(jù)集采用UA-DETRAC公開數(shù)據(jù)集,該數(shù)據(jù)集是車輛檢測和跟蹤的大規(guī)模數(shù)據(jù)集,數(shù)據(jù)集主要拍攝于北京和天津的道路過街天橋,并手動(dòng)標(biāo)注8 250個(gè)車輛和121×104個(gè)目標(biāo)對象外框[17]。車輛分為:轎車、公共汽車、廂式貨車和其他車輛。天氣情況分為:多云、夜間、晴天和雨天。在使用該數(shù)據(jù)集前將原始數(shù)據(jù)的xml格式標(biāo)簽轉(zhuǎn)換為YOLOv5所需的標(biāo)簽格式,因?yàn)樾枰M(jìn)行ID識(shí)別,故需要在標(biāo)簽中包含類別和位置的同時(shí)添加目標(biāo)的ID。YOLOv5修改后的標(biāo)簽格式定義為:<目標(biāo)類別、目標(biāo)x坐標(biāo)中心、目標(biāo)y坐標(biāo)中心、目標(biāo)寬、目標(biāo)高、ID>。
為評價(jià)跟蹤的性能,采用Dendorfer等[18]提出的多目標(biāo)跟蹤算法評價(jià)指標(biāo)進(jìn)行評價(jià),主要選取多目標(biāo)跟蹤精度(multiple object tracking accuracy,MOTA)、MT(mostly tracked)、ML(mostly lost)、IDs(ID switch)、假陽性(false positive,FP)、假陰性(false negative,FN)作為評估指標(biāo),另添加每秒幀數(shù)(frame per second,FPS)評估模型每秒處理的幀數(shù)。其中MOTA用于評價(jià)多目標(biāo)跟蹤的精準(zhǔn)度,用以統(tǒng)計(jì)在跟蹤過程中誤差的積累情況,其表達(dá)式為
(8)
式(8)中:FNt、FPt、IDst、GTt分別為第t幀時(shí)FN、FP、IDs、GT指標(biāo)的數(shù)值;t為幀數(shù)。
2.3.1 YOLOv5+ReID跟蹤實(shí)驗(yàn)
為提高多目標(biāo)跟蹤模型的推理速度,在目標(biāo)檢測網(wǎng)絡(luò)上選擇推理速度更快的YOLO。YOLO有多個(gè)版本,將ReID模塊添加到Y(jié)OLOv4和YOLOv5上,與使用YOLOv4和YOLOv5為目標(biāo)檢測網(wǎng)絡(luò)的DeepSORT算法(分別簡寫為YOLOv4和YOLOv5)對比,實(shí)驗(yàn)結(jié)果如表1所示。結(jié)果表明,將ReID模塊添加到Y(jié)OLOv4上,與以YOLOv4為目標(biāo)檢測網(wǎng)絡(luò)的DeepSORT相比,MOTA指標(biāo)下降了4個(gè)百分點(diǎn),但推理速度有一定的提升。將ReID添加到Y(jié)OLOv5上,與以YOLOv5為目標(biāo)檢測網(wǎng)絡(luò)的DeepSORT對比,MOTA指標(biāo)值不變,但推理速度卻明顯快于后者。YOLOv5相對于YOLOv4有更快的推理速度,并且在添加ReID模塊后,得益于YOLOv5豐富的特征提取能力,MOTA指標(biāo)并沒有下降,故選擇YOLOv5作為多目標(biāo)跟蹤網(wǎng)絡(luò)。
表1 ReID模塊應(yīng)用Table 1 ReID module application
多目標(biāo)跟蹤算法的推理時(shí)間主要花費(fèi)在目標(biāo)檢測和特征提取上,經(jīng)過本文方法將目標(biāo)檢測模型進(jìn)行優(yōu)化,使目標(biāo)檢測模型在輸出目標(biāo)位置信息的同時(shí)輸出目標(biāo)的特征信息,從而提升模型在進(jìn)行多目標(biāo)跟蹤時(shí)的推理速度。特別是在目標(biāo)多的情況下,與原算法的推理時(shí)間對比越明顯。以使用YOLOv5作為目標(biāo)檢測網(wǎng)絡(luò)的DeepSORT[2]和YOLOv5+ReID為例,如表2所示的兩種模型在不同目標(biāo)數(shù)量下的推理時(shí)間對比,可以看出,在2~4個(gè)目標(biāo)的情況下,所提出的YOLOv5+ReID算法和DeepSORT算法的推理時(shí)間差值為3.83 ms,在14~16個(gè)目標(biāo)的情況下,推理時(shí)間差值達(dá)到17.97 ms,推理時(shí)間差隨目標(biāo)的增多而增大。
表2 不同目標(biāo)數(shù)量下的推理時(shí)間對比Table 2 Comparison of reasoning time under different number of targets
JDE[15]算法在3個(gè)不同分辨率的特征層上面進(jìn)行特征提取,當(dāng)相鄰幀中同一目標(biāo)大小變化明顯時(shí),可能檢測結(jié)果是不同的預(yù)測頭輸出的,由于檢測頭的分辨率不同,從而導(dǎo)致同一目標(biāo)在相鄰幀獲取到的特征相差過大。如圖3(a)所示,在左側(cè)圖像上兩車輛ID分別為67和68,右側(cè)圖片上則為69和70,發(fā)生ID切換,對同一車輛跟蹤失敗。所提出的YOLO+ReID算法中,不同預(yù)測頭預(yù)測的目標(biāo)均在同一個(gè)特征池中提取特征,在相鄰幀中目標(biāo)大小變化明顯時(shí),無論檢測結(jié)果是那個(gè)輸出頭輸出的,都根據(jù)輸出頭輸出的目標(biāo)位置信息在同一個(gè)特征池中定位特征。如圖3(b)所示,在左側(cè)圖像上兩車輛ID分別為42和43,右側(cè)圖片上仍為42和43,沒有發(fā)生ID切換,對同一車輛跟蹤成功。
圖3 IDs對比Fig.3 IDs comparison
采用IDs指標(biāo)來評判JDE算法和YOLOv5+ReID算法對目標(biāo)ID切換的數(shù)量。驗(yàn)證數(shù)據(jù)采用UA-DETRAC數(shù)據(jù)集中6個(gè)不同場景的視頻段:MVI_20011、MVI_30761、MVI_40192、MVI_40241、MVI_63544、MVI_63563進(jìn)行驗(yàn)證。實(shí)驗(yàn)結(jié)果如表3 所示,JDE算法的IDs為399,YOLOv5+ReID算法的IDs為65,兩者相比,YOLOv5+ReID的目標(biāo)ID切換量明顯較JDE少。
表3 IDs數(shù)量對比Table 3 Comparison of IDs quantity
2.3.2 DNMS算法檢測實(shí)驗(yàn)
為驗(yàn)證DNMS算法對彼此遮擋目標(biāo)的檢測有效性,選取UA-DETRAC數(shù)據(jù)集中攝像頭傾斜于車道布設(shè)所獲得的視頻段:MVI_63544和MVI_40241作為驗(yàn)證數(shù)據(jù),其中MVI_40241視頻段中的車流量相對MVI_63544視頻段中的車流量大,車輛總數(shù)也遠(yuǎn)高于MVI_63544視頻段。使用NMS算法、DIOU-NMS[19]算法、Soft-NMS[20]算法和DNMS算法進(jìn)行對比,采用FN(false negative)和FPS指標(biāo)來評判算法在兩個(gè)視頻段上漏檢的車輛數(shù)量。表4為非極大值抑制算法對比結(jié)果。在對車輛的漏檢上,本文算法在MVI_40241上漏檢量為1 021,明顯少于對于其他3種算法,在MVI_63544視頻段中的漏檢數(shù)為172,與其他算法持平。在推理速度上,所提出的DNMS算法相對于NMS算法,由于計(jì)算量更大,故在推理速度上會(huì)比較慢,但相對于DIoU-NMS和Soft-NMS算法,本文算法更有優(yōu)勢。
表4 非極大值抑制算法對比Table 4 Comparison of non maximal suppression algorithms
針對彼此覆蓋的目標(biāo),采用DNMS算法代替原有的NMS算法。分別在所提出的YOLOv5+ReID算法和JDE[15]算法上驗(yàn)證DNMS對彼此遮擋目標(biāo)檢測的有效性。實(shí)驗(yàn)結(jié)果如圖4所示,其中,圖4(a)、圖4(c)使用NMS算法進(jìn)行邊框抑制,圖4(b)、圖4(d)使用本文提出的DNMS算法進(jìn)行抑制。可以看出,在圖4(a)和圖4(c)中的紅色橢圓框中,框出的車輛里,有一個(gè)車輛無檢測框,而在圖4(b)和圖4(d)中,該車輛的檢測框得以出現(xiàn)。實(shí)驗(yàn)結(jié)果表明,使用本文提出的DNMS算法能夠檢測到NMS算法不能檢測到的車輛。
圖4 DNMS實(shí)驗(yàn)結(jié)果Fig.4 DNMS experimental results
采用FN指標(biāo)來評判使用DNMS的模型分別在MVI_40241視頻段和MVI_63544視頻段,漏檢的車輛數(shù)量。實(shí)驗(yàn)結(jié)果如表5所示。YOLOv5+ReID使用DNMS算法后在兩個(gè)視頻段上漏檢分別減少312和5;JDE使用DNMS算法后在兩個(gè)視頻段上漏檢數(shù)量分別減少22和2。實(shí)驗(yàn)結(jié)果表明,將所提出的DNMS算法用在其他模型上也仍然有效。
表5 漏檢數(shù)量對比Table 5 Comparison of missing inspection quantity
2.3.3 改進(jìn)YOLOv5的目標(biāo)跟蹤實(shí)驗(yàn)
使用以YOLOv5為目標(biāo)檢測網(wǎng)絡(luò)的DeepSORT[2]和JDE[15]、FairMOT[6]算法和本文算法,在UA-DETRAC數(shù)據(jù)集上6個(gè)不同場景的視頻段,共9 389幀上進(jìn)行推理精度和速度的對比。
實(shí)驗(yàn)結(jié)果如表6所示。FPS指標(biāo)在每張圖的跟蹤數(shù)量為7~16上計(jì)算得到。由表6可知,將YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)加上ReID模塊,和基于無錨點(diǎn)預(yù)測邊框和在1/4原圖大小上直接進(jìn)行目標(biāo)預(yù)測的FairMOT算法對比,在UA-DETRAC數(shù)據(jù)集上,本文算法的FPS為17.91,明顯高于該算法的5.71。和JDE算法相比,所提的YOLOv5+ReID算法的IDs為65,明顯小于JDE算法的399。和DeepSORT算法相比,本文的YOLOv5+ReID的平均推理時(shí)間減少了11.41 ms。
表6 多目標(biāo)跟蹤算法的性能對比Table 6 Performance comparison of multi-target tracking algorithms
將DNMS算法運(yùn)用在YOLOv5+ReID模型上,相對于YOLOv5+ReID模型,跟蹤精度MOTA提升了3.9個(gè)百分點(diǎn)。實(shí)驗(yàn)結(jié)果表明,所提出的YOLOv5+ReID+DNMS算法相對于其他算法,在保證推理速度的情況下,在跟蹤精度上有明顯的優(yōu)勢。
為將多目標(biāo)跟蹤模型應(yīng)用在多車輛場景下,從而設(shè)計(jì)低推理時(shí)延高精度的跟蹤模型。針對多目標(biāo)跟蹤推理時(shí)間長的問題,在YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)上進(jìn)行改進(jìn),設(shè)計(jì)了ReID模塊,該模塊將YOLOv5的PANet繼續(xù)上采樣,獲得一個(gè)特征池,使改進(jìn)后的YOLOv5模型在輸出目標(biāo)位置信息的同時(shí)輸出特征信息。針對車輛間彼此覆蓋的情況,為提高跟蹤精度,提出一種基于動(dòng)態(tài)IOU閾值的非極大值抑制算法,該算法根據(jù)每個(gè)邊框的置信度得分,對每個(gè)邊框設(shè)置不同的IOU抑制閾值,以此減少車輛密集場景下對車輛的漏檢。實(shí)驗(yàn)結(jié)果表明,在YOLO網(wǎng)絡(luò)中添加ReID模塊能明顯地減少目標(biāo)跟蹤的推理時(shí)間;使用基于動(dòng)態(tài)IOU閾值的非極大值抑制能明顯的增加目標(biāo)跟蹤精度。將ReID和基于動(dòng)態(tài)IOU閾值的非極大值抑制用在YOLOv5模型中,與FairMOT、JDE、DeepSORT算法進(jìn)行對比,改進(jìn)后的模型有較好的跟蹤精度和實(shí)時(shí)性。