張文龍, 南新元
(新疆大學(xué) 電氣工程學(xué)院,新疆 烏魯木齊 830047)
道路場景中最重要的組成部分是汽車,隨著自動駕駛汽車出現(xiàn),道路場景下汽車跟蹤技術(shù)的研究日益重要,作為自動駕駛技術(shù)環(huán)境感知的一個重要組成部分,其對多目標(biāo)跟蹤算法的準(zhǔn)確度和實時性要求較高。
目前,多目標(biāo)跟蹤算法主要分為傳統(tǒng)方法和基于深度學(xué)習(xí)方法。傳統(tǒng)方法主要有光流法[1]、核相關(guān)濾波[2-4]等,其跟蹤速度快,但缺乏對尺度變化目標(biāo)的處理,導(dǎo)致跟蹤效果不佳?;谏疃葘W(xué)習(xí)的跟蹤算法在行人重識別(ReID)技術(shù)[5-6]推動下獲得了前所未有的發(fā)展,實現(xiàn)了速度與精度的雙重提升。基于ReID的目標(biāo)跟蹤算法主要分為2類:one-shot和two-stage,這2類模型都是基于檢測的跟蹤(tracking-by-detection)方法。其中,two-stage算法將跟蹤流程分為檢測和匹配2個獨立的過程,使用2個不同的網(wǎng)絡(luò)分別提取特征,雖然這樣可以提高算法準(zhǔn)確度,但是使用2個網(wǎng)絡(luò)模型計算成本過高,不適合自動駕駛這種實時性要求較高的場景。典型的two-stage算法有DeepSORT[7]、HOGM[8]等。隨著多目標(biāo)跟蹤算法發(fā)展,為解決two-stage算法速度過慢問題,one-shot算法被提出,這類算法通過將ReID嵌入到檢測器中,將2個獨立的任務(wù)作為一個多任務(wù)學(xué)習(xí)模型,通過共享權(quán)值,同時輸出目標(biāo)檢測框和ReID表觀特征,達(dá)到近似實時的速度。如Wang等[9]提出JDE(joint detection and embedding)算法,通過使用YOLOv3[10]作為檢測器,將ReID嵌入到檢測器中,共同學(xué)習(xí)特征表示,獲得了速度與精度的雙重提升;Zhang等[11]通過分析JDE的不足,提出了FairMOT算法,使用DLA(deep layer aggregation)[12]模型和anchor-free算法[13],提高了算法的準(zhǔn)確度;晏康等[14]通過組合空間和通道注意力,一定程度上改善了JDE跟蹤算法的性能;薛俊韜等[15]利用MobileNet[16]替換YOLOv3檢測器的骨干特征提取網(wǎng)絡(luò),顯著提高了跟蹤算法的實時性,但減少了跟蹤算法的跟蹤精度;馬永杰等[17]通過在YOLOv3算法上增加一個檢測頭,并與DeepSORT算法結(jié)合,提高了算法對汽車的檢測精度。
雖然這些文獻(xiàn)對輕量級網(wǎng)絡(luò)進(jìn)行了初步研究,但在非常有限的計算預(yù)算中追求最好的精度-速度折中仍然是視覺領(lǐng)域的難點。本文的目的是把這個權(quán)衡作為一個整體,考慮精度和實時性,通過將改進(jìn)的YOLOv5檢測算法與JDE跟蹤算法結(jié)合,同時設(shè)計關(guān)聯(lián)融合網(wǎng)絡(luò)來緩解JDE算法多任務(wù)學(xué)習(xí)中不同任務(wù)之間的競爭問題,提出一種有效的道路車輛多目標(biāo)跟蹤算法,該算法能有效減少模型復(fù)雜度,提高JDE算法實時跟蹤速度,且不降低算法跟蹤性能。
注意力機(jī)制在計算機(jī)視覺領(lǐng)域取得了巨大成功,它僅包含少量參數(shù),可以帶給模型性能提升,通過關(guān)注感興趣信息,對提取特征進(jìn)行過濾,提高特征重要性。注意力機(jī)制主要分為通道注意力機(jī)制、空間注意力機(jī)制和混合注意力機(jī)制。通道注意力機(jī)制通過按通道對特征圖進(jìn)行提取,使用提取到的權(quán)值來表示特征重要性。SENet[18]網(wǎng)絡(luò)通過使用全局平均池化獲得每個特征通道上的平均值,然后使用2個全連接層學(xué)習(xí)非線性特征,最后將獲得的權(quán)重與原輸入特征加權(quán)。ECANet[19]使用一維卷積學(xué)習(xí)通道之間的交互信息,避免特征完全獨立,從而學(xué)習(xí)更有效的特征表示。FCANet[20]從頻域的角度思考通道注意力,獲得了較好的效果?;旌献⒁饬C(jī)制結(jié)合空間注意力和通道注意力同時提取目標(biāo)的空間信息和通道信息。如Woo等[21]將空間注意力與通道注意力串聯(lián),提出了CBAM注意力機(jī)制,在多個計算機(jī)視覺任務(wù)中獲得了優(yōu)秀的性能。
JDE算法通過擴(kuò)展YOLOv3網(wǎng)絡(luò),將ReID和檢測器集成到一個網(wǎng)絡(luò)模型中,共享低級特征,能有效避免重復(fù)計算,JDE基本結(jié)構(gòu)如圖1所示。
圖1 JDE結(jié)構(gòu)Fig. 1 Structure of JDE
從圖1中可以看出,JDE采用特征金字塔網(wǎng)絡(luò)(feature pyramid networks, FPN)[22]結(jié)構(gòu)提取多個不同尺度的特征圖進(jìn)行預(yù)測,從而提高了目標(biāo)檢測中尺度變化目標(biāo)的檢測能力。輸入的視頻幀首先通過主干網(wǎng)絡(luò)向前傳遞,獲得3個不同尺度的特征圖,即分別具有1/32、1/16和1/8下采樣率的特征圖。接著,將下采樣率為1/32的特征圖進(jìn)行上采樣,并通過跳過連接與下采樣率為1/16的特征圖進(jìn)行融合,下采樣率為1/8的特征圖同理。然后,在這3個不同尺度的融合特征圖上添加YOLO檢測頭,每個YOLO檢測頭由幾個卷積層堆疊組成,并輸出一個大小為H×W×(6A+D)的預(yù)測特征圖,式中:A表示anchor的數(shù)量;D是ReID中embedding的維數(shù);H表示特征圖的高;W表示特征圖的寬。最后,將得到的特征圖用于后續(xù)的卡爾曼濾波和匈牙利算法進(jìn)行軌跡匹配。
與YOLOv3檢測算法相比,YOLOv5作為最新的一階段目標(biāo)檢測算法,獲得了速度與精度的雙重提升。但對于資源較少的設(shè)備,YOLOv5模型仍然較大,不適合部署到資源較少的設(shè)備上。模型參數(shù)量計算如式(1),
J=d×Cin×k×k×Cout。
(1)
式中:Cin、Cout分別表示輸入、輸出通道數(shù);k表示卷積核大小;d表示卷積模塊的數(shù)量。從式(1)中可以看出,當(dāng)模型的輸入和輸出通道由C變?yōu)閚C時,模型參數(shù)量將擴(kuò)大n2倍;當(dāng)卷積核大小由k變?yōu)閚k時,同理,模型參數(shù)量也將擴(kuò)大n2倍;若將模型的深度由d變?yōu)閚d時,參數(shù)量將擴(kuò)大n倍。
YOLOv5特征提取網(wǎng)絡(luò)通道數(shù)C被設(shè)置較大,通過式(1)可知,其模型復(fù)雜度過高。為了減少模型復(fù)雜度,提高模型的實時檢測速度,使算法更適合自動駕駛?cè)蝿?wù),本文采用EfficientNetV2[23]替換YOLOv5的特征提取網(wǎng)絡(luò)。EfficientNetV2通過縮減通道寬度C,擴(kuò)增深度d,實現(xiàn)了模型復(fù)雜度和準(zhǔn)確度的折中。EfficientNetV2主干網(wǎng)絡(luò)由Fused-MBConv和MBConv模型結(jié)構(gòu)組成,其結(jié)構(gòu)如圖2所示。
圖2 MBConv、Fused-MBConv結(jié)構(gòu)Fig. 2 Structure of MBConv and Fused-MBConv
MBConv核心模塊采用深度可分離卷積[16],相比傳統(tǒng)卷積,它具有更少的參數(shù)量,深度可分離卷積與傳統(tǒng)卷積參數(shù)量下降比為
(2)
EfficientNetV2使用SENet提高模型準(zhǔn)確率,SENet通過全局平均池化提取特征圖的全局信息,利用得到的1×1×C矩陣來表示特征,但仍然存在不足。從頻域的角度分析,全局平均池化提取特征將會造成信息丟失,通過二維離散余弦變換(2D-DCT)分析,2D-DCT變換可以描述為
(3)
式中:f2d表示2D-DCT頻譜;x2d表示輸入特征。2D-DCT逆變換可以被描述為
(4)
令式(3)中h和w為0,式(3)變?yōu)?/p>
(5)
式中g(shù)ap表示全局平均池化。從式(5)可以看出,全局平均池化只是2D-DCT的特殊形式,與低頻分量成比例關(guān)系。因此EfficientNetV2中SENet使用全局平均池化會造成信息丟失,且SENet中通過使用2個全連接層對通道進(jìn)行擠壓和擴(kuò)張,獲取更多非線性變換,但2個全連接層的使用會帶來較多參數(shù)量。為了進(jìn)一步提高模型實時檢測速度,降低模型復(fù)雜度,本文受FCANet啟發(fā),結(jié)合DCT與ECANet提出D-ECA通道注意力,替換EfficientNetV2中的SENet,提出的注意力模塊如圖3所示。
將輸入特征按通道分為N組,每組通道數(shù)C/N,利用式(3)計算每組離散余弦變換權(quán)值,如式(6)所示。
(6)
式中D(X)表示2D-DCT變換。由式(3)、(5)可知,相比使用全局平均池化,DCT能夠獲取更多的頻率信息。然后使用核大小為k的一維卷積學(xué)習(xí)相鄰?fù)ǖ乐g的信息,為了避免通過交叉驗證手動調(diào)整k,設(shè)計了一種自適應(yīng)確定k的方法,核大小k自適應(yīng)描述如式(7)所示。
(7)
式中:|t|odd表示最近的奇數(shù)t;a和b設(shè)置為2和1,并在本文所有實驗中保持一致。最后使用Sigmoid激活函數(shù)輸出注意力權(quán)值,與輸入特征加權(quán)融合。
對于電視上經(jīng)常播放的“細(xì)胞助長靈”“增高鞋”“增高藥”之類的廣告,對我有難以言喻的吸引力,我總是按捺不住想要去嘗試一下,說到這兒,我想你已經(jīng)明白了,沒錯,我就是人們說的“矮個兒”。你無法想象我有多討厭這個詞語。“矮”給我?guī)砹嗽S多的苦惱。
圖3 通道注意力Fig. 3 Channel attention
相比傳統(tǒng)的多目標(biāo)跟蹤算法,JDE雖然獲得了精度與速度的雙重提升,但通常低于兩階段跟蹤算法。文獻(xiàn)[11]指出,諸如JDE這種單階段多目標(biāo)跟蹤算法,由于多任務(wù)學(xué)習(xí)中不同任務(wù)之間的競爭,使學(xué)習(xí)到的ReID特征不是最優(yōu)的,這將導(dǎo)致大量的ID切換。為了解決這個問題,參考DANet[24]和PADNet[25],通過設(shè)計關(guān)聯(lián)融合網(wǎng)絡(luò)(associative fusion network, AFN)來提高JDE跟蹤算法中檢測器與ReID的協(xié)作學(xué)習(xí),提出的關(guān)聯(lián)融合網(wǎng)絡(luò)如圖4所示。
圖4 AFN結(jié)構(gòu)Fig. 4 Structure of AFN
圖4中F∈RC×H×W表示來自檢測頭的輸出,首先使用一個自適應(yīng)平均池化層獲取特征信息T∈RC×H′×W′,然后使用2個卷積核大小為3的卷積層分別學(xué)習(xí)ReID的嵌入信息G1和用于檢測的特征信息G2,然后將輸出的2個用于不同任務(wù)的特征信息通過view操作變換為尺寸H∈RC×P,其中P=H′×W′,然后對H1和H2分別使用Softmax激活函數(shù)學(xué)習(xí)2個任務(wù)的自關(guān)聯(lián)矩陣M1和M2,其計算公式如式(8)。
(8)
式中:hi表示矩陣H中的第i個元素;mi表示自關(guān)聯(lián)矩陣M中的第i個元素。同樣,將H1和H2特征進(jìn)行融合,然后使用Softmax激活函數(shù)以學(xué)習(xí)不同任務(wù)之間的共性。將Softmax的輸出通過permute操作變換為尺寸RP×C,將自關(guān)聯(lián)矩陣與互關(guān)聯(lián)矩陣執(zhí)行矩陣乘法,輸出關(guān)聯(lián)融合特征Y∈RC×C,然后將原輸入特征F重新排列為RC×N尺寸,其中N=H×W。最后將重新排列后的輸入特征與學(xué)習(xí)到的融合特征執(zhí)行矩陣乘法重新構(gòu)造特征圖,以增強每個任務(wù)的特征表達(dá)能力。通過殘差連接,將輸入特征F與融合特征融合,以防止信息丟失。
本文提出改進(jìn)YOLOv5的多目標(biāo)跟蹤模型總體結(jié)構(gòu)如圖5所示。從圖5中可以看出,由于模型需要5次下采樣,輸入圖片尺度需要為32的整數(shù)倍,為了適應(yīng)視頻數(shù)據(jù)集的尺寸,本文輸入圖片分辨率設(shè)置為1 280×384。通過主干特征提取網(wǎng)絡(luò),輸入的視頻幀向前傳遞,獲得5個不同尺度的特征圖,本文提取160×48、80×24、40×12等3個尺度的特征圖,然后使用路徑融合網(wǎng)絡(luò)(path aggregation network, PAN)[26]完成多尺度融合,提取更加豐富的特征,加強對小尺度目標(biāo)的檢測和跟蹤能力。然后在每個PAN層的輸出路徑上接入AFN模塊,促使模型學(xué)習(xí)與任務(wù)相關(guān)的特征,提高檢測和ReID這2個任務(wù)的協(xié)作學(xué)習(xí)能力,緩解由于2個任務(wù)之間競爭導(dǎo)致的性能退化。接著將提取到的表觀特征和檢測框,利用卡爾曼濾波和匈牙利算法完成關(guān)聯(lián)和匹配。具體地說,oi為用表觀特征表示的一個軌跡,mi=(x,y,r,h,x′,y′,r′,h′)表示目標(biāo)運動狀態(tài),這里:x、y表示邊界框的中心;r表示寬高比;h表示邊界框的高;x′、y′、r′、h′表示沿各自方向的速度。對于第一幀,首先通過第一幀的檢測結(jié)果初始化為新的軌跡。對于后續(xù)視頻幀,計算所有卡爾曼濾波觀測值和軌跡池的成對運動關(guān)聯(lián)矩陣Am和外觀關(guān)聯(lián)矩陣Ao。余弦相似度計算外觀關(guān)聯(lián)矩陣,馬氏距離計算運動關(guān)聯(lián)矩陣,然后利用匈牙利算法求解線性分配問題,其損失函數(shù)為
L=αAo+(1-α)Am。
(9)
最后利用卡爾曼濾波算法更新所有匹配軌跡的運動狀態(tài),計算如式(10)所示。
圖5 本文跟蹤算法總體結(jié)構(gòu)Fig. 5 Overall structure of the tracking algorithm in this article
(10)
式中:fit表示當(dāng)前匹配觀察值的embedding;λ=0.9表示一個動量因子。如果連續(xù)2幀內(nèi)有未匹配到的檢測結(jié)果,則將這個檢測結(jié)果初始化為新的軌跡。如果某條軌跡連續(xù)30幀內(nèi)沒有被分配新的目標(biāo),則刪除這個軌跡。
(11)
(12)
式中:Tt表示第t幀真實邊界框的數(shù)量;Et表示第t幀誤檢樣本的數(shù)量;St表示第t幀漏檢樣本的數(shù)量;It表示第t幀目標(biāo)身份切換次數(shù);Nt表示第t幀目標(biāo)成功匹配的數(shù)量;Bt,j表示第j個檢測結(jié)果與真實邊界框的重疊率。
本文選取KITTI-tracking基準(zhǔn)數(shù)據(jù)集,數(shù)據(jù)集中視頻以10 frame/s速度拍攝,并包含較大的幀間運動,是當(dāng)前最全面的自動駕駛數(shù)據(jù)集,其主要包括城市、鄉(xiāng)村和十字路口等交通場景。本文選取數(shù)據(jù)集中的Car、Van和Truck 3個類別,然后將這3個類別都劃分為Car類。為了增加數(shù)據(jù)多樣性,減少模型過擬合,提高汽車跟蹤算法的準(zhǔn)確率,本文采用實時數(shù)據(jù)擴(kuò)充處理數(shù)據(jù)樣本,例如水平翻轉(zhuǎn)、顏色空間變換、Mosaic數(shù)據(jù)增強等。本文訓(xùn)練參數(shù)設(shè)置為:embedding維度為512;batch size為4;最大迭代次數(shù)為50;優(yōu)化策略采用SGD函數(shù);動量因子0.95;初始學(xué)習(xí)率為0.005,學(xué)習(xí)率在第30代和40代分別下降10倍;權(quán)重衰減設(shè)置為0.000 5。本文在JDE算法的基礎(chǔ)上添加和修改各個模塊的消融實驗,如表1所示。
表1 消融實驗
從表1中可以看出,在原JDE算法上添加AFN模塊后,MOTA、MOTP都有一定的提升,并且顯著減少了IDWS。使用YOLOv5替換YOLOv3后,跟蹤算法的整體性能均得到了有效提升,表明檢測器對跟蹤算法的整體性能有很大影響。當(dāng)再次使用EfficientNetV2替換YOLOv5的特征提取網(wǎng)絡(luò),由于特征提取能力不足,導(dǎo)致跟蹤算法的整體性能下降,但算法的FPS提高約52.6%,在此基礎(chǔ)上引入D-ECA注意力模塊,使MOTA提高1.03個百分點,且一定程度上減少IDWS。最終本文算法相比原JDE算法FPS提高約43.2%,MOTA提高0.3個百分點,IDWS減少37%,能有效取得精度與速度折中,具有一定的實際意義。表2展示了本文算法與其他主流算法的性能對比,從表2中可以看出,本文算法大部分評價指標(biāo)均優(yōu)于對比算法,具有一定競爭力。
表2 不同方法對比
選取KITTI基準(zhǔn)數(shù)據(jù)集中視頻序列對本文算法跟蹤結(jié)果可視化。圖6(a)為視頻序列0010可視化結(jié)果,這段視頻道路交通情況較為復(fù)雜,ID為155的車輛需要左轉(zhuǎn),ID為124、125的車輛遮擋較為嚴(yán)重,且多條軌跡相交??梢钥闯鯥D為135的車輛在第31幀期間被遮擋后,在第35幀被重新檢測到,且ID沒有發(fā)生變化,其他車輛跟蹤效果良好均沒有發(fā)生ID切換。圖6(b)為視頻序列0000的可視化結(jié)果,從中可以看出,本文算法對擁擠的停車環(huán)境仍然有很好的跟蹤效果。
圖6 本文算法跟蹤結(jié)果Fig. 6 Tracking results of the algorithm in this paper
本文通過改進(jìn)JDE跟蹤算法,提出了一個有效的車輛跟蹤算法。首先在JDE算法的基礎(chǔ)上添加AFN模塊,減少身份切換次數(shù),其次使用EfficientNetV2替換YOLOv5的特征提取網(wǎng)絡(luò),提高模型的實時檢測速度,同時減少模型復(fù)雜度,使跟蹤算法更適合自動駕駛?cè)蝿?wù),同時為了解決EfficientNetV2特征提取能力不足的問題,通過引入D-ECA模塊,提高模型對車輛的檢測和跟蹤能力。實驗結(jié)果表明,本文算法有效地對JDE網(wǎng)絡(luò)進(jìn)行了壓縮,提高了算法實時跟蹤速度和檢測能力。但本文算法對嚴(yán)重遮擋和密集車輛的跟蹤效果仍然有待提高。未來工作將研究在保證不降低實時性的情況下,提高對密集目標(biāo)和遮擋目標(biāo)的跟蹤能力。