李星辰,柳曉鳴,成曉男
(大連海事大學信息科學技術學院,遼寧 大連 116026)
在很多應用圖像處理和計算機視覺的場景中,運動目標跟蹤MOT(Moving Object Tracking)是非常重要的環節,尤其是在未知多變的背景下,目標容易出現遮擋、形變等問題,使得目標跟蹤更具挑戰性。按照跟蹤目標的數量來分,目標跟蹤可以劃分為單目標跟蹤和多目標跟蹤2大類,從目前的國內外發展現狀來看,單目標跟蹤技術已經趨于成熟,而多目標跟蹤仍然處于不斷發展的階段,在機器視覺和圖像處理等領域備受關注,例如智能監控、交通監控、內河船舶監控和車輛的無人駕駛等。
在單目標跟蹤中,我們往往會手動選定初始框,然后在后續幀對初始框內的目標進行位置預測,然而多目標跟蹤過程中,必然會出現目標的消失和產生,手動選定初始框存在很大的局限性,所以在多目標跟蹤領域,大多數研究人員使用的策略是基于檢測的多目標跟蹤(tracking-by-detection)。基于檢測的多目標跟蹤算法將檢測和跟蹤過程緊密結合,通過檢測器來檢測和識別出目標,將這些信息傳遞給跟蹤器,即通過跟蹤器來跟蹤多目標的同時,不斷通過與檢測器進行信息交流來完善跟蹤,提升整個跟蹤過程的魯棒性。例如,Milan等人[1]基于tracking-by-detection策略提出了連續能量函數最小化方法,從運動的整體性出發,提出了一個整體的、比較貼合運動特征的能量函數,然后通過對該能量函數進行尋優得到較好的跟蹤結果。在處理遮擋問題時取得了較好的效果。Song等人[2]基于tracking by detection策略提出了一種在線多目標跟蹤算法,采用了高斯混合概率假設密度GM-PHD(Gaussian Mixture Probability Hypothesis Density)來處理錯誤的檢測,并且針對對跟蹤過程中出現的遮擋或者不完整檢測而導致的跟蹤碎片現象,設計了一個分層跟蹤框架,可以將分段、ID交換過的軌跡連接起來。該方法在處理遮擋情況和碎片現象時取得了不錯的效果。
近些年,深度學習不僅在檢測和識別領域取得了不錯的效果,也被越來越多地應用到了基于檢測的多目標跟蹤中,因其離線訓練與在線檢測相結合的特殊設計方案,即先利用支持向量機等分類器離線訓練大量圖像和視頻,并且在跟蹤的過程開始后,隨著目標特征信息的變化,利用在線檢測的結果去更新分類器,從而可以很好地適應目標的特征外觀變化,更加準確地檢測目標而被廣泛采用。例如,Leal-Taixé等人[3]基于tracking-by-detection策略并結合深度學習,提出了一種在行人跟蹤背景下處理數據關聯任務的新方法,引入了一種two-stage學習方案去匹配“檢測對”。首先, 對 Siamese 卷積神經網絡 (CNN) 進行了訓練, 以學習描述2個輸入圖像塊之間的局部時空結構、聚合像素值和光流信息。其次,通過梯度提升分類器(gradient boost), 將從比較的輸入圖像塊的位置和大小中導出的1組上下文特征與 CNN 輸出相結合, 生成最終的匹配概率。經驗證該方法在多人跟蹤中符合最先進標準。
考慮到深度學習在目標檢測和識別過程中的優異表現,以及tracking-by-detection策略在解決遮擋等問題時的效果,本文采用了tracking-by-detection策略,以深度學習模型檢測和識別目標,從而獲取更加準確的檢測結果來進行多目標跟蹤。目前主流的目標檢測算法又可以分為以R-CNN[4]、Faster R-CNN[5 - 8]等為代表的two-stage檢測算法和以SSD(Single Shot multibox Detector)[9]、YOLO[10 - 12]等為代表的one-stage檢測算法。2類檢測算法的主要區別在于是否分成2個階段進行檢測,前者由檢測和分類2個階段組成,后者則將2個階段融合到1個階段進行。目標檢測算法的主要性能指標是檢測的準確度和速度,第1類算法在準確度上有優勢,但是處理速度過慢,而第2類算法將圖像的檢測速度提升到了40 fps以上,雖然準確度比第1類算法要略差一些,但是目前YOLO已經發展到YOLO v3,準確度上有了很大提升,同時提升了弱小目標的檢測性能,并且使用GPU加速,保證了較好的實時性,所以本文選擇YOLO v3作為檢測算法。
目前國內的學者大多都是利用YOLO、R-CNN等深度學習檢測算法和CamShift(Continuously Adaptive Mean-Shift)、KCF(Kernel Correlation Filter) 等跟蹤算法相結合來進行目標跟蹤。例如,韓鵬等人[13]提出了將 YOLO 和 CamShift 算法相結合的目標跟蹤算法。用 YOLO 算法確定出目標,根據目標的位置信息使用 CamShift 算法對后續的視頻幀進行處理,在解決目標遮擋問題時取得了不錯的跟蹤效果。王春艷等人[14]沿用tracking-by-detection策略,在檢測環節采用 YOLO v3檢測目標,在跟蹤環節使用卡爾曼濾波算法預測目標運動軌跡,在數據關聯環節使用匈牙利算法對候選目標進行匹配關聯,在應對目標跟蹤的常見問題時取得了不錯的效果。在總結多篇國內外文獻出現的問題和解決方案以后,本文選擇沿用經典的tracking-by-detection策略,以YOLO v3作為檢測算法,提出了一種多目標視頻跟蹤算法。
多目標跟蹤過程容易受到復雜多變的環境、目標遮擋、背景以及目標之間相似性等因素的影響,出現跟蹤失敗、誤判和漏判等問題。當前多目標跟蹤的難點主要包括:遮擋問題、背景復雜度問題和數據關聯[15]問題。
針對目標跟蹤過程中可能遇到的遮擋和數據關聯等問題,本文提出了一種融合YOLO檢測的多目標跟蹤算法,通過YOLO v3目標檢測器確定目標物體的跟蹤框,根據框出的目標區域,采用卡爾曼濾波算法[16]進行跟蹤預測;提出了軌跡異常修正算法,針對遮擋引起的軌跡和跟蹤異常進行糾正;并提出了一種緊鄰最優算法來解決因目標遮擋而引起的目標身份互換問題。
多目標跟蹤算法整體框架如圖 1 所示,主要分為2個模塊:檢測器和跟蹤器。檢測器主要是結合YOLO v3進行目標的檢測和識別,首先對視頻序列的圖像進行預處理;然后經過全卷積神經網絡獲得卷積特征圖,利用檢測網絡對輸入的特征圖進行分析和過濾;最終通過置信度計算和多尺度預測部分得到最優目標的邊框,并且利用分類器對目標進行分類,得到該類目標的最優目標的邊框的中心點坐標。跟蹤器就是結合檢測器的輸出結果進行數據關聯和跟蹤,將得到的該類目標的最優目標中心點坐標輸入到卡爾曼濾波器,進行下一時刻中心點的預測,即軌跡預測;對檢測器輸出的物體邊界框進行幀間數據關聯,從而確定目標的編號,利用物體的中心點測量值和該時刻的中心點估計值,得到目標的真實狀態最優估計值。如果因遮擋原因導致數據關聯失敗,利用緊鄰最優跟蹤算法進行數據關聯,對該時刻新出現的目標和因遮擋而消失的目標進行關聯。如果因部分遮擋而導致軌跡異常波動,則利用軌跡異常修正算法修正目標框體和軌跡。

Figure 1 Framework of the multi-target tracking algorithm圖1 多目標跟蹤算法整體框架
利用YOLO v3目標檢測算法,首先將輸入到檢測器的圖像按照一定的尺度標準劃分為相同大小的P×P個網格,其中每個網格又可以劃分為K個候選區域,如圖 2中多尺度預測部分所示,圖中每個大的黑色矩形框代表1個網格。于是得到了每個候選區域中存在當前目標的置信度,表達式如式(1)所示:

(1)
其中,Target代表目標的種類,Cond(Target)表示在網格中是否存在該種類的目標:

(2)

(3)

Figure 2 Object detection process圖2 物體檢測過程
假設1個網格相對于圖像左上角的偏移量是cx和cy,邊框的寬度和高度分別為pw和ph,根據式(4)~式(8)就可以得到目標的真實框信息。
bx=σ(tx)+cx
(4)
by=σ(ty)+cy
(5)
bw=pwetw
(6)
bh=pheth
(7)
(8)
其中,tx,ty是預測的坐標偏移值,tw,th是尺度縮放,bx,by,bw,bh分別用來表示目標的框體坐標和大小,σ(t)是Logistic回歸函數。
當前時刻T,所有檢測器檢測到的結果表達式為:

其中,下標4j表示矩陣為1個4*j矩陣,j∈{0,1,2,…,M},M為T時刻檢測到的目標總個數。
將檢測器輸出的目標的中心點輸入到卡爾曼濾波器,對T+1時刻的中心點進行預測,即軌跡預測。卡爾曼濾波的步驟一般包括預測和測量更新部分,假設T時刻來自檢測器的目標j的測量結果為X(T)j={bx,by,vx,vy}T,其中vx,vy分別為目標在x方向和y方向的速度分量,j∈{0,1,2,…,M}。將該時刻的測量結果輸入到式(9)和式(10)所示的卡爾曼濾波器的預測部分時,可得到T+1時刻目標j的坐標估計值X(T+1/T)′j={b′x,b′y}T。
預測部分:
X′=FX+U
(9)
P′=FPFT+Q
(10)
更新部分:
Y=Z-HX′
(11)
S=HP′HT+R
(12)
X=X′+KY
(13)
P=(I-KH)P′
(14)
其中,卡爾曼增益K=P′HTS-1,F為狀態轉移矩陣,P為狀態協方差矩陣,Q為過程噪聲,R為測量噪聲矩陣,H為測量矩陣,I是單位矩陣。X′是后驗狀態估計值,U是過程噪聲矩陣,P′是后驗協方差估計值,Z是測量值(觀測值),即濾波的輸入,Y是實際觀測和預測觀測的殘差,S是濾波增益矩陣。
數據關聯將檢測器的結果與跟蹤的結果互相聯系,在多目標跟蹤中尤為重要。本文所提算法的數據關聯步驟如下所示:

(15)



a 如果IOUMax大于閾值,可能發生了目標移動過快,當前幀的目標j對應的目標就是上一幀編號為k的目標,此時更新目標的框體信息和軌跡信息,并且更新最優估計值和狀態協方差矩陣。
b 如果IOUMax小于閾值,則可能發生了遮擋,或者沒有檢測出目標,此時保持目標框高度和寬度不變,更新中心點坐標為卡爾曼濾波器預測的中心點,即更新當前幀中目標k的目標框,更新軌跡。此時認為目標k消失,當消失時間超過一定閾值時,認定目標k徹底消失,清除目標k的所有信息。
(2)利用緊鄰跟蹤算法解決目標遮擋時的目標序號互換問題。當新目標k出現時,先判斷其周圍是否有緊鄰的目標消失了。如果是,令k繼承消失的緊鄰目標中最近的目標gm的目標框信息;否則目標k為新目標。
(3)利用軌跡異常修正算法對發生部分遮擋時目標框體異常變化的目標進行框體修正,同時對軌跡伴隨的軌跡異常進行修正。
(4)在目標跟蹤的過程中,除了遮擋問題以外,時常還會出現目標形態發生變化(如行走姿態、跳躍、下蹲的人體、旋轉與放縮物體)的情況。此類情況發生時,目標前后幀框體的位置坐標并不會發生明顯的變化,是一個漸變的過程。運用本文的緊鄰跟蹤算法,在發生形態變化時,根據式(15)獲取T-1時刻和T時刻的目標框的交并比IOU;然后進行第①步操作中的閾值比對,并且獲取當前T時刻為目標j的概率Pj,如果Pj低于閾值,調高交并比與目標概率的權重占比,即選取與上一時刻目標準確位置距離最近,且概率相對較高的目標為目標j,從而在目標形態發生變化時仍然可以進行準確的目標跟蹤。
對每一幀重復步驟(1)~(4)直至視頻終止,即跟蹤結束。
在多目標跟蹤的過程中,若出現嚴重遮擋,可能會發生目標交換現象,針對這一問題,本文提出了緊鄰最優跟蹤算法。發生遮擋時,目標之間會有前后之分,判斷的依據主要是檢測結果的置信度,置信度高的目標在前,置信度低的或者出現消失情況的目標在后。緊鄰最優跟蹤算法的具體過程如下所示:

(16)
其中,A1和A2分別表示目標f和j的權重,A1+A2=1,且兩者取值關系滿足:
(2)當djf≤d,記錄并保存目標j的所有緊鄰目標的序號fi∈{1,2,…,M},fi≠j,其中下標i用來區別不同的緊鄰目標,并且繼續進行第(3)步;當djf>d時,認定目標j周圍不存在緊鄰目標,此時如果目標j周圍出現新的目標時,認定目標為首次出現,記錄并存檔,此時跳過第(3)步,等待進行T+1時刻的判斷。
(3)當目標j周圍出現新目標k時,先確定其緊鄰目標gi是否消失。
①如果出現了多個消失的目標g0,g1,…,計算得到離新目標k距離最近的目標gm,此時認定新目標k就是消失的目標gm,修改新目標k的序號為gm,并且繼承gm的目標信息;
②如果沒有消失的目標,那么認定k為新目標。
由于緊鄰跟蹤算法存在距離約束和權重比對,即在T-1時刻和T時刻時發生形態變化的目標之間的距離最近,所以當目標發生遮擋和形變時能較為準確地跟蹤。
當出現部分遮擋的時候,利用緊鄰最優跟蹤算法仍能檢測出目標,但此時只能取到目標未被遮擋的部分。如圖3所示,行人從開始被遮擋到結束被遮擋的過程中,白色曲線所代表的軌跡發生了較大的波動。針對這種情況,本文提出了一種新的修正軌跡的算法,避免因為部分遮擋使跟蹤軌跡產生偏差。該算法利用跟蹤過程中目標框體不會驟然變化的特性來修正框體和軌跡。

Figure 3 Pedestrian tracking results圖3 行人跟蹤結果
軌跡異常修正算法具體過程如下所示:

(17)
(18)
本文實驗硬件環境為配置Intel Core i5-7300 CPU,3.60 GHz主頻,16 GB內存的筆記本,算法開發基于Darknet深度學習框架,CUDA庫,跟蹤可視化基于OpenCV實現,在GTX1060 6G以及Windows 10系統支持下,使用C語言集成實現整個跟蹤系統。
利用MOT Challenge官網上的測試視頻來測試本文的跟蹤算法,圖4~圖9展示了部分測試結果。

Figure 4 Video sequence tracking results圖4 視頻序列跟蹤結果

Figure 5 Trajectory abnormal repair results圖5 軌跡異常修復結果

Figure 6 Coordinate comparison of the abnormal trajectory correction trajectory and the real trajectory圖6 異常軌跡修正軌跡和真實軌跡的坐標對比圖

Figure 7 Comparison of target changes in y direction圖7 目標在y方向上變化對比圖

Figure 8 Deviations comparison between the target trajectory and the real trajectory in the y direction圖8 目標軌跡和真實軌跡在y方向上的偏差對比圖
從圖4a和圖5中的Walker1可以看出,當黑色箭頭指向的行人被白色卡車遮擋時,目標的邊框大小得到了修正,并且解決了軌跡異常的問題。從Walker1和TUD-Stadtmitte中可以看出,黑色箭頭指向的目標,在跟蹤過程中的軌跡和跟蹤結果較為準確。在MOT-02中,在第439幀中,黑色箭頭指向的目標被白色箭頭指向的目標遮擋,此時仍然能被正確地檢測和跟蹤。 從圖6~圖8中可以看出,修正后的軌跡更加接近真實的軌跡。
如圖9所示,在目標發生奔跑、跳躍、旋轉、下蹲等形態變化時,運用本文的跟蹤算法,大多數情況下都可以準確地識別出目標的位置,顯示目標的軌跡,準確地進行目標跟蹤。
實驗表明,本文算法能夠修正遮擋過程中目標框的大小和位置,修正目標軌跡,在一定程度上解決了跟蹤存在的目標遮擋問題,具有一定的參考價值和實用價值。
本節將本文所提算法與其他2種算法進行了對比實驗,評價指標及定義如表1所示,其中箭頭↓代表指標越小跟蹤效果越好,箭頭↑代表指標越大跟蹤效果越好。對比結果如表2所示,本文算法在AvgRank,MT,ML,FN等幾項指標上都表現較好,在FP,MOTA,IDSw等幾項指標上的表現相對較差,但是也具有一定的可比性。

Table 1 Tracking evaluation indicators and definitions表1 跟蹤評價指標及定義

Table 2 Comparison results with other methods表2 與其他方法的對比結果
本文利用高性能的檢測器檢測同一類的多個目標,重點研究了同一目標的前后幀之間的幀間關系以及目標跟蹤過程中的遮擋問題,在一定程度上解決了遮擋對軌跡和目標識別的準確性產生的干擾,具有較高的實時性,在船舶和道路交通監管領域有一定的應用價值。但是,目前的研究仍是在同一類目標中進行的,接下來的研究將重點突破不同類的多目標跟蹤問題,并且引用特征信息對現有幀間關系做出改進。