【論文閱讀】FastTracker: Real-Time and Accurate Visual Tracking

paper : https://arxiv.org/abs/2508.14370

github : https://github.com/Hamidreza-Hashempoor/FastTracker

註:本文僅供個人學習用途、筆記用,內容斟酌參考,請注意事實查核。(This article is for learning and noting. Content of article consider for reference. Note that fact checking.)

我個人算是 CV 領域的新手,有些我不懂的地方會加上自己寫的註釋,敬請見諒。

Abstract

1. Problem:

Conventional multi-object tracking (MOT) systems are predominantly designed for pedestrian tracking and often exhibit limited generalization to other object categories.

作者首先提出在 CV 領域中的痛點,現有的多物件追蹤(MOT,multi-object tracking)系統絕大多數都是專門為了「追蹤行人」而設計的。

這樣會導致一個問題:當這些系統遇到行人以外的其他物件(例如車輛)時,其泛化能力(generalization)通常很有限。可以想成是現有的系統都「太偏科」了,沒辦法適應多種不同的追蹤任務。

而所謂 generalization 其實就是通用化的意思,在此指的是一個追蹤系統能否從「只能追蹤行人」擴展到「能追蹤各種不同類別的物件」的能力。

2. Solution:

This paper presents a generalized tracking framework capable of handling multiple object types, with a particular emphasis on vehicle tracking in complex traffic scenes.

為了解決上述痛點,paper 提出了一個通用型的追蹤框架。

該框架的特點是能夠處理多種不同類型的物件,且作者特別強調,它非常擅長處理複雜交通場景中的車輛追蹤。

3. Key Component 1:

The proposed method incorporates two key components: (1) an occlusion-aware re-identification mechanism that enhances identity preservation for heavily occluded objects, and …

FastTracker 框架含有兩個關鍵的核心技術。

首先第一個是:具備遮擋感知的再識別機制(occlusion-aware re-identification mechanism)。

在複雜的交通中,車輛或行人很容易彼此被擋住(嚴重遮擋),該機制的作用是,即使物件被嚴重遮擋,系統仍然能保存它的 ID,當物件再次出現時,系統不會認錯人或跟丟車。

4. Key Component 2:

(2) a road-structure-aware tracklet refinement strategy that utilizes semantic scene priors—such as lane directions, crosswalks, and road boundaries—to improve trajectory continuity and accuracy.

第二個為:具備道路結構感知的軌跡優化策略。

不只看車輛本身,也會利用環境中的語意場景先驗(semantic scene priors),例如:車道的方向、斑馬線的位置、道路的邊界等,系統會參考這些環境規則來判斷物件要怎麼合理地去移動,藉此大幅提高追蹤軌跡的連續性與準確度。

:::info
所謂 semantic scene priors 指的是在追蹤物件之前,就已事先知道該場景裡物體應該怎麼移動的背景知識,FastTracker 把這些知識直接編碼進追蹤邏輯,不需靠神經網路去學習。

上面提到的車道方向、斑馬線位置、道路邊界都是 semantic scene priors 的種類,在這篇 paper 來說,可以把 semantic scene priors 想成是交通警察。
:::

5. Experimental Results:

Extensive experimental results demonstrate that the proposed approach achieves robust performance on both the newly introduced dataset and several public benchmarks, highlighting its effectiveness in general-purpose object tracking. While our framework is designed for generalized multi-class tracking, it also achieves strong per-formance on conventional benchmarks, with HOTA scores of 66.4 on MOT17 and 65.7 on MOT20 test sets.

大量實驗結果證明,FastTracker 無論是在他們(作者團隊)新推出的資料集上,還是在多個公開的基準測試中,都表現得非常穩健,證明 FastTracker 在通用物件追蹤上的有效性。

FastTracker 雖是為了解決多類別追蹤而設計的,但在傳統(主要測行人)的困難測試集上也考出了極高的分數:

  • MOT17 dataset 取得 66.4 的 HOTA(Higher Order Tracking Accuracy,高階追蹤準確性。為一種綜合評估追蹤表現的嚴格指標)分數。
  • 在人群極度擁擠的 MOT20 測試集也拿下了 65.7 的 HOTA 分數。

image

I. Introduction

MOT 在智慧監控和自動駕駛中扮演著關鍵角色,但因目標長得很像、常常互相遮擋(occlusion),以及物件頻繁進出畫面,仍然是個充滿挑戰的難題。

目前廣泛採用的主流作法叫做先偵測後追蹤(Tracking-by-Detection, TbD)範式。

:::info
什麼是 Tracking-by-Detection, TbD 範式(Paradigm)?

TbD 首先會把追蹤任務拆成兩個獨立模組來解決:

  1. 物件偵測(Object Detection):每一幀圖像獨立送入偵測器(如 YOLO、Faster-RCNN),輸出每個目標的 bounding box(邊界框,像把物件框起來)。
  2. 資料關聯(Data Association):把當前幀偵測到的框,與前幾幀已有的軌跡(tracklet)做配對,確保同一個物體前後都有獲得相同的 ID。

例如在人群中追蹤一個人,每秒鐘拍一張照片找到所有人的位置,再根據位置和外觀把「上一秒的路人」和「這一秒的路人」連起來。

關聯(Association)用於計算相似度,通常同時利用以下兩種資訊:

  1. 運動資訊(Motion):用 Kalman Filter(卡爾曼濾波器)預測物體下一幀的位置,再算預測框與偵測框的 IoU(Intersection over Union,交並比)重疊程度。
  2. 外觀資訊(Appearance):用 Re-ID 模型提取特徵向量,比對兩幀物體長相是否相同。

最後以匈牙利演算法(Hungarian Algorithm)做最佳化的一對一配對,使其整體誤差變最小。
:::

什麼是 IoU 交並比?IoU 為 CV 中用來衡量兩個 bounding box 重疊程度的指標,數值介於 0 到 1 之間,公式大概長這樣:

數值意義如下:

IoU 值意義
1.0預測框與真實框完全重合,完美預測
0.5 ~ 0.75常見的正確偵測閾值(threshold)
0.0兩個框完全不重疊

在 TbD 的關聯階段中,IoU 被用來衡量「Kalman Filter 預測的軌跡框」與「當前幀偵測框」間的空間重疊度,重疊越高代表越可能是同一個物體,最後再讓 Hungarian Algorithm 做最佳配對。

:::info
Kalman Filter 在做事情:

  1. Predict:根據上一幀的 Kalman State(位置、速度),用運動模型推算這一幀目標應該在哪,這部分是純靠慣性猜測,沒有看任何新資料。
  2. Update:偵測器給出這一幀的實際偵測框後,把預測值和偵測值加權融合,修正 Kalman State。
    :::

:::info
Kalman state 就是 Kalman Filter 在某個時間點對一個目標所掌握的完整描述,用一個向量來表示它目前的狀況。

例如在目標追蹤的狀況下,每個 tracklet 的 Kalman state $x_t$ 通常包含:

變數意義
$(p_x, p_y)$目標目前的位置(中心座標)
$(v_x, v_y)$目標目前的速度(移動方向與快慢)
$(w, h)$邊界框的寬與高

:::

為何需要新方法?

作者指出許多現有追蹤系統的表現其實都被高估了。

原因在於其大多只在單一類別(尤其是行人)的情境下做基準測試與最佳化,此類特化的系統雖然能刷出很高的準確率,但不符合真實世界的實際需求。

在現實中(如交通路口),系統必須同時偵測並追蹤多種不同的物件(多類別,如各種車輛和行人),一旦當強行讓現有模型去處理多類別時,偵測準確率往往會下降,追蹤表現也會跟著暴跌。

這凸顯我們急需一個能良好泛化到多類別情境的追蹤方案。

ByteTrack

在多類別追蹤中,高信心與低信心偵測結果的可靠程度差異很大。

作者受到演算法 ByteTrack 的啟發,在其追蹤框架引入了兩階段配對過程,如下:

  • 第一階段:先用比較寬鬆的相似度門檻,把「高信心分數」的偵測結果與活躍(active)的軌跡配對起來。
  • 第二階段:針對第一階段沒配對上的軌跡,再用比較嚴格的條件,去跟低信心分數的偵測結果配對,藉此找回一些可能被遮擋而分數變低的真實目標。

:::info
什麼是 ByteTrack?

ByteTrack 為字節跳動於 2021 年提出的 MOT 演算法,創新在於同時利用高分與低分的偵測框來建立軌跡關聯,而非只用高信心度的偵測結果。

傳統方法(如 DeepSORT)只用高信心度的偵測框來匹配軌跡,導致目標被遮擋時容易丟失,而 ByteTrack 的 BYTE 演算法則把低分框也納入第二輪匹配,讓暫時消失的目標有機會被找回來。

演算法的每幀的處理步驟:

  1. 目標偵測:用偵測器(如 YOLO)對當前幀輸出所有偵測框跟信心分數。
  2. 分堆:依信心分數門檻,把偵測框分成:
    • D_high:高分框(高信心度,目標清晰可見)
    • D_low:低分框(低信心度,可能被遮擋或模糊)
  3. 卡爾曼濾波預測:根據前幾幀的軌跡 T,用卡爾曼濾波器預測每條軌跡在當前幀的位置。
  4. 第一輪匹配:用 IoU(交集比聯集)計算 D_high 與 T 的相似度,用匈牙利演算法做最佳配對。
  5. 第二輪匹配:把第一輪沒配到的軌跡,再和 D_low 嘗試配對(找回被遮擋的目標)。
  6. 軌跡狀態管理 :
    • 成功配對 → 軌跡保持 Tracked(追蹤中)。
    • 沒配到的軌跡 → 標記為 Lost(暫時丟失),保留數幀等待重新出現。
    • 超過保留期限 → 標記為 Removed(刪除)。
  7. 新增軌跡:D_high 中完全沒有對應軌跡的框 → 建立新的軌跡。

參考自:https://blog.51cto.com/u_13859040/10743612
:::

不依賴於神經網路

很多系統會使用深度卷積神經網路(CNNs)提取物體的外觀特徵解決遮擋問題,但其實會消耗極大的運算資源,不適合拿來做即時應用。

而 FastTracker 採用純粹只看幾何與運動軌跡的策略:

  1. 無外觀特徵的遮擋處理(Occlusion handling without visual features)
    • 當目標暫時消失時,系統不靠長相來認人,而會透過物件彼此間的幾何重疊(geometric overlap)來推斷是不是發生了遮擋。
    • 一旦確認目標被遮擋,系統會調整卡爾曼濾波器(Kalman filter),減緩其速度並調整大小,防止軌跡在遮擋期間亂飄,確保目標重新出現時能無縫接上。
  2. 環境結構感知(Environment-aware constraints):
    • 系統會利用道路的場景語意,像是單行道方向、雙向車道、行人穿越道等環境資訊。
    • 如果一個物件的移動軌跡違反常理(如在單行道上逆向,或是角度偏離太多),系統就會將其拉回至合理的移動範圍內,可大幅減少因遮擋或雜訊導致的追蹤錯誤。

為何推出新的 dataset?

原因是現有的主流 dataset(如 MOT17, MOT20)幾乎只專注於行人,而其他車輛資料集(如 Waymo)多半是自動駕駛視角,缺乏城市監視器(CCTV)視角下的複雜交通、擁擠路口、不同光線及多方向車流的挑戰。

所以作者團隊親自推出了一個全新基準 dataset,專門針對包含汽車、多種卡車、公車、機車以及行人在內的「多類別」城市監視器場景。

paper 的貢獻跟成就

  1. 提出了一個強健的多類別多物件追蹤框架,在複雜的城市環境中對各類車輛表現優異。
  2. 設計了一個輕量級的遮擋處理模組,完全不依賴耗能的深度重識別(Re-ID)網路,只用空間與幾何線索。
  3. 導入環境感知限制(如道路幾何、斑馬線)確保物件移動的合理性。
  4. 發布全新的多類別車輛與行人追蹤基準資料集,包含監視器視角下的各種高難度情境。
  5. 在 MOT16, MOT17, MOT20 測試集上分別拿下了 66.0, 66.4 和 65.7 的 HOTA 高分,超越了當前多數最先進的 Tracker。

外觀特徵派 vs. 輕量幾何派

  • 依賴外觀特徵的方法(Appearance-based):
    • 目前追蹤系統大多採用 Tracking-by-Detection 的架構,並常用深度學習網路(如 DeepSORT 或 FeatureSORT)提取物件的外觀特徵以幫助配對。
    • 雖能提高追蹤穩定性,但需額外的重識別(Re-ID)網路,大幅增加運算負擔與記憶體消耗,難以用於資源受限或需要即時運算的情境。
  • 輕量化方法(Lightweight alternatives):
    • 由於速度問題,改用純粹的幾何與運動特徵,例如經典的 SORT 演算法(只用卡爾曼濾波器和匈牙利演算法),或是近期的 OC-SORT 與 BoT-SORT。
    • 這些方法證明只要設計得當,不用深度特徵也能達到極佳的追蹤效果。
    • FastTracker 即繼承輕量幾何派輕量化、重效率的設計。

遮擋處理技術(Occlusion Handling)

著名的 ByteTrack 會利用低信心分數的偵測結果來處理部分遮擋,但一旦遇到極度擁擠的場景,表現就會變差。

有些系統會加入 CNN 來重新認人,但太耗資源;而另一些輕量化系統(如 PD-SORT 或 SparseTrack)則透過 2D 邊界框推算偽深度(pseudo-depth)來解決遮擋。

這些深度推算方法通常需要仰賴特定的攝影機視角假設,遇到視角扭曲或場景快速變換,就容易失效。

FastTracker 的解法:作者提出一種完全不依賴特定攝影機視角假設,也不強制使用深度匹配的遮擋處理機制,使 FastTracker 即便在人群擁擠、視角扭曲的複雜場景中,仍能維持物件的身份。

環境上下文(Environmental Context)的應用

Environmental Context 是 FastTracker 中 Road-Structure-Aware Tracklet Refinement 策略的第一個子模組,負責建立場景的空間語意地圖。

Environmental Context 簡單來說就是預先為系統建立一張場景的空間地圖,標記出畫面中各區域(如車道、斑馬線)物體的預期行進方向,讓後續步驟可以根據這份地圖來修正不合理的軌跡預測。

前人的作法

過去雖有研究嘗試將環境資訊加入追蹤系統,但通常用得很粗糙,例如 MENet 只是畫出可行駛區域(ROIs),接著直接把區域外的偵測結果丟掉,卻不會去修正那些因為雜訊而稍微飄出界線的真實軌跡。

而在多攝影機追蹤領域,環境資訊通常只被用來標示出入口,沒有真正用來微調單一畫面內的軌跡。

FastTracker 的突破

FastTracker 利用高階的場景結構,如道路的行進方向、雙向車道、斑馬線等資訊。

如果系統發現某個物件的移動軌跡違反了這些常理(像偏離車道方向),它會主動介入,將軌跡拉回到合理的移動模式中。

基準資料集(Benchmarks)

簡單來說就是現有考卷(dataset)不夠難,作者決定自己出一份。

現有資料集的盲點

該篇 paper 盤點了目前的車輛追蹤 dataset,發現都有各自的侷限性,例如 Waymo dataset 主要是自動駕駛視角(看正前方)、KITTI dataset 場景變化不夠多、LMOT dataset 只有夜間場景、VETRA dataset 則是無人機的空拍視角。

這些 dataset 都缺乏城市監視器(CCTV)往下俯瞰的複雜視角。

FastTracker Benchmark

雖然該 dataset 規模中等,但主要針對 CCTV 視角,包含多樣的物件類別(各種車輛與行人)、多變的光線條件,及極具挑戰性的密集路口與雙向車流遮擋場景,為未來的城市監控追蹤技術提供更實用、更貼近真實情境的測試平台。

III. BACKGROUND

於此章節,作者解釋他們所借鑑的基準方法,即 ByteTrack 所用的兩階段資料關聯(two-stage data association)策略。

該策略的目標是為了在召回率(recall,盡可能找出所有目標)與精確度(precision,避免抓錯目標)之間取得平衡。

image

上圖為 FastTracker 的整體流程,大致上可分為四步驟來看:

  1. 變數定義
    • $T$(Active tracklets):代表活躍的軌跡,即系統在前幾幀已經持續在追蹤、目前已知存在的物件目標。
    • $D{high}$(高信心分數的偵測結果):偵測器抓出來的物件中,信心分數高於門檻值($\tau{high}$)的結果,這些物件通常是非常清晰、可靠的目標。
    • $D{low}$(低信心分數的偵測結果):偵測器抓出來的物件中,信心分數介於低門檻值($\tau{low}$)與高門檻值($\tau_{high}$)之間的結果,這些物件常是被稍微遮擋、模糊的目標,但也可能是誤判。
  2. 第一階段配對:系統會優先處理最可靠的資料。
    • 作法:把高信心偵測結果($D_{high}$)與現有軌跡($T$)做配對,在此用的是基於 IoU 的相似度計算。
    • 結果:配對成功的組合稱為 $(T_1, D_1)$。
    • 未配對到的軌跡:一定會有些軌跡沒找到對應的偵測結果(稱為 $T{remain}$),也有些高分偵測結果沒配對到任何軌跡(稱為 $D{remain}$),可能為剛進入畫面的新物件。
  3. 第二階段配對:在此處理第一階段未匹配到的軌跡。
    • 作法:系統會拿第一階段沒配對上的軌跡($T{remain}$),去跟那些低信心分數的偵測結果($D{low}$)做二次配對。
    • 結果:這次配對成功的組合稱為 $(T_2, D_2)$。

為什麼採用這樣的串級式(Cascaded)設計?作者表示:

  1. 優先確保準確性:讓高信心偵測($D_{high}$)優先配對,確保大部分清晰的物件都能被穩定追蹤到。
  2. 找回消失的目標:當物件被遮擋時,detector 給的分數通常會變低,透過第二階段,去讓系統選擇性利用這些低信心偵測($D_{low}$)找回那些差點被遺漏的目標。
  3. 避免雜訊干擾:因為只有第一階段沒配對上的軌跡才有資格去跟低分偵測結果配對,可有效避免系統盲目接收所有低分偵測,進而防止產生大量的假陽性(false positives)結果,即避免誤判的意思。

:::info
而所謂串級式設計是一種將多個處理階段串聯起來、前一階段的輸出作為下一階段的輸入的設計架構。

基本架構如下:

  • 外層(主控制器):負責處理整體、較慢變化的目標。
  • 內層(次控制器):接收外層的輸出作為自己的輸入,處理較快速、局部的細節。

在該篇 paper 的應用則為:

  • 第一階段(外層):先以寬鬆門檻處理高信心偵測。
  • 第二階段(內層):再接收第一階段未配對的軌跡,用嚴格條件處理低信心偵測。
    :::

IV. APPROACH

FastTracker 是基於 ByteTrack 延伸的,在極度擁擠、嚴重遮擋的交通場景中,光靠兩階段配對是不夠的,容易產生身份切換或軌跡亂飄的情形。

為解決該情形,因此作者新增了以下這三個東西:

  1. 幾何空間的遮擋偵測:即便在沒有偵測結果的情況下,也能識別並處理被遮擋的目標。
  2. 環境感知約束(environment-aware constraints):例如道路方向性、街道佈局與行人區域等,用以改進運動軌跡並防止不合理的移動。
  3. 更聰明的軌跡初始化與刪除策略:在減少虛假身份的同時,提升對真正目標的找回能力。

Motion Prediction

當新一幀畫面進來時,系統要先預測舊目標會跑到哪裡。

對於每條軌跡 $t \in T$ ,用一個類別感知的卡爾曼濾波器(class-aware Kalman filter) $\text{KalmanPredict}(t)$ ,估計預測狀態(predicted state) $\hat{x}_t$ 。

該運動模型的參數會依據物體類別選擇,如車輛(像轎車或機車)允許較高的速度與加速度上限,而行人則以更平滑、更緩慢的動態來建模,讓預測更符合真實物理情況。

Direction and ROI Constraint

:::info
ROI(Region of Interest)為感興趣區域,使用者可以自訂一個區域,讓 FastTracker 只追蹤這個區域內的目標。
:::

FastTracker 系統會去查詢環境地圖(environment map) $M$,取得 predicted state $\hat{x}_t$ 周圍的區域 $R$ ,以此確認預測的位置合不合理。

每個區域 $R$ 都編碼了語意佈局(semantic layout)資訊(例如可行駛道路、行人路徑),並與一個指定允許行進方向的運動錐形(motion cone)相關聯。

也就是說每個區域 $R$ 不只表示「這是什麼地方」,也表示「在這裡的東西應該往哪個方向移動」,這個允許方向的範圍被稱為 motion cone。

錐形的開口角度 $\theta$ 由 $R$ 的多邊形結構推導而來:

給定一條入口邊與一條出口邊(由 prior scene-flow 的知識定義),然後畫出兩條對角線,分別連接入口邊與出口邊的對側端點。設入口邊的端點為 $E_1, E_2$ ,出口邊的端點為 $O_1, O_2$ ,對角線為 $\overrightarrow{E_1 O_2}$ 跟 $\overrightarrow{E_2 O_1}$ ,則:

這個 $\theta$ 是用兩條線 $\overrightarrow{E_1 O_2}$ 、 $\overrightarrow{E_2 O_1}$ 夾出來的角度,即為合理行進方向的容許範圍有多寬,車道很直的話 $\theta$ 就小,彎曲路口的話 $\theta$ 就大一點。


另外還有第二條公式,用於算出物體實際上正在往哪個方向移動,也就是 $\phi$ 。(前面的 $\theta$ 是算該區域允許的方向範圍)

對於每條活躍軌跡 $t$ ,同樣計算其瞬時運動方向 $\phi$ ,設軌跡中心在第 $k$ 幀與第 $k - N$ 幀的位置分別為 $pk = (x_k, y_k)$ 跟 $p{k - N} = (x{k - N}, y{k - N})$ ,位移 $\Delta p = pk - p{k - N} = (\Delta x, \Delta y)$ ,則:

這公式就在說拿現在這幀的位置 $pk$ 減掉 $N$ 幀以前的位置 $p{k-N}$ 就得到位移向量 $(x{k - N}, y{k - N})$ ,然後用 $arctan$ 把這個向量轉換成一個角度 $\phi$ 。

接著在這邊也提到了兩個函式:

  • $\text{ProjectToCone}(\hat{x}_t, \text{cone}(R))$(限制行進方向):
    • 現在有以下兩個東西:
      • $\theta$:這條路允許的行進角度範圍(例如只能往北走,左右偏差 ±20°)
      • $\phi$:物體現在實際的移動方向。
    • 若 $\phi$ 跑出了 $[−θ/2, θ/2]$ 這個範圍,$\text{ProjectToCone}()$ 就會強制把方向拉回來最近的邊界。(即 $\phi \in [−θ/2, θ/2]$ )
  • $\text{ClampToROI}(\hat{x}_t, R)$(限制在合理範圍內):除了方向要合理,位置本身也不能飄出區域 $R$ 之外,$\text{ClampToROI}()$ 這個函式負責確保預測的位置還是在這個區域的邊界內。

下圖是 ClampToROI 跟 ProjectToCone 兩個函式的運作示意圖。

  • 當 Tracklet $t_1$ 飄到區域外面時,會再被拉回來到裡面。
  • $t_3$ 因為 $t_2$ 的遮擋而被誤導,導致他的 motion angle $\phi$ 超過了所允許的閾值 $\theta$,因此會把它投射回去 motion cone 裡面。

image

Association

預測好位置後,接著就是把「現有軌跡」跟「新偵測到的目標」連起來,在此沿用了背景章節提到的作法。

  • 第一階段:將 high-confidence 的偵測結果 $D_{\text{high}}$ 透過基於 IoU 的關聯跟 tracklets $T$ 做匹配,得到配對結果 $(T_1, D_1)$ 。
    • 未匹配到的 tracklets,以及那些低分的偵測結果 $T{\text{remain}}$ 跟 $D{\text{low}}$ 會進到第二階段。
  • 第二階段:$T{\text{remain}}$ 會跟低信心分數的偵測結果 $D{\text{low}}$ 進行二次配對,藉此恢復一些模糊或部分遮擋的目標 $T2$ ,並將其從 $T{\text{remain}}$ 當中分離。
    • 更新後的 active set 會變成 $T = T_1 \cup T_2$

:::info
Active set 指的是當前幀中正在被系統追蹤的所有 tracklets 的集合,也就是目前還活著、還在追蹤中的目標清單。

例如在這邊的 $T$ 就是當前的 active set,包含所有活躍的軌跡片段。
:::

Occlusion Handling

若兩階段匹配後,還是有 tracklets 找不到怎麼辦?這時 FastTracker 會啟動獨創的無特徵遮擋處理。

首先要怎麼知道一個目標被遮擋了?

當某個 tracklets 在這一幀找不到對應的偵測結果時(變成 $T_{\text{remain}}$),系統不會直接把他給丟掉,而是去看他是不是被畫面中其他正在追蹤的目標擋住了?

具體做法是計算他(未匹配的軌跡片段 $T_{\text{remain}}$)跟其他活躍 Tracklets $T$ 的空間重疊程度來檢測是否有 Occlusion,遮擋的情形發生(用中心鄰近度分數 CP(center-proximity score)衡量)。

接著由 IoU 計算得出 $CP(t, t’)$ ,若 $CP(t, t’)$ 超過閾值 $CP{min}$ ,則 trackerlet $t$ 就視為是被遮擋,並加入遮擋名單 $T{\text{occ}}$ 裡面。

被遮擋期間,如何穩住它的狀態?

目標消失在畫面中後,系統仍然要靠 Kalman Filter 持續預測它的位置,但問題是如果速度估計有誤差,預測位置會越跑越遠,因此這套系統 apply 兩個 corrective operators:

  1. Velocity Damping(速度阻尼):踩剎車。
  2. bounding-box enlargement(邊界框放大):放大抓捕網,增加容錯率。

另外還有一個很重要的機制叫 Softly Reset(位置的軟重置),白話講就是把預測位置往最後一次看到它的位置方向拉回一點點。

對於 Velocity Damping,修改卡爾曼狀態(Kalman state),以 $x_t$ 表示,其中 $(p_x, p_y)$ 代表位置, $(v_x, v_y)$ 代表速度。

運算子 $\text{DampenVelocity(t)}$ 透過阻尼因子(damping factor) $\gamma{\text{velo}} \in (0, 1)$ 縮減速度大小: $$(v_x, v_y) \leftarrow \gamma{\text{velo}} \cdot (v_x, v_y) \tag{3}$$

這個式子就在說把目標目前預測的速度乘上一個小於 1 的係數 $\gamma_{\text{velo}}$ ,每幀都踩一下剎車,速度會慢慢縮小趨近於零。

接著為了減輕 drift 的現象(目標被遮擋的期間,預測位置越來越偏離目標真實位置的現象),位置會被 softly reset 到他最後一次未遮擋時的位置:

這個 reset 限制了不合理的 forward propagation,而後續的卡爾曼更新(Kalman updates)則從修正後的狀態繼續進行。


對於 bounding-box enlargement,為了改善重新出現(reappearance)後的重識別(re-identification)效果,bounding box 的尺寸會根據物體類別略微放大。

若 $(w, h)$ 分別代表寬度與高度,則運算子 $\text{EnlargeBox(t)}$ applies:

這麼做是因為當目標再次從遮擋物後面探出頭時,稍微放大一點的框能帶來更高的容錯率,更容易再次捕捉並配對成功。

這個調整可提升對偵測器雜訊(noise)的容忍度,並在被遮擋物體再度可見時提升對部分可見性的適應能力。

最後,被列入遮擋名單 $T_{\text{occ}}$ 的軌跡片段,在目標重新出現之前不會再跟新的偵測結果進行配對,這樣做的目的是避免目標被誤認成另一個完全不同的目標。


下圖 5 是兩個運算子在四幀( F 從 1 到 4 )的示意圖:

  • 上面:標準追蹤方法,其中快速運動與緊密的邊界框導致 drift 與 ID switches。
  • 下面:FastTracker 的方法對 $t_2$ 做修正,其中經 DampenVelocity apply 後 $t’_2 \leftarrow t_2$ ,再經 EnlargeBox apply 後 $t’’_2 \leftarrow t’_2$,在 occlusion 期間保持身份的一致性。

image


下圖 6 是 bounding box enlargement 於遮蔽處理中的有效性:

  • 上排:baseline tracker(用來當作比較基準的最基本版本 tracker)在遮蔽期間無法保持身分識別。
  • 下排:遮蔽期間放大的 bounding-box 使在目標重新出現後能夠成功恢復身分識別。

image

Tracklet Initialization and Deletion

為了保持系統乾淨可靠,不要一堆錯誤的 tracklet,作者採用明確的 Initialization and Deletion 的策略。

那這邊基本上就是在說,在 MOT 系統當中,每個被追蹤的物體都會對應一個 tracklet,而系統需要有明確的規則來決定什麼時候「新增一個 tracklet」、「什麼時候刪除 tracklet」。

何時新增 tracklet

假設在 CCTV 中看到一個新出現的人,系統偵測到這個人後會先確認這個人是否已在追蹤了?

具體作法是用 IoU 來確認,如果該新偵測到的框,和目前所有正在追蹤的框重疊程度都很低(低於閾值 $K{\text{init}}$),系統才會將其初始化,做 initialization,即: $$\text{max}{t \in T} \text{IoU}(d, t) < K_{\text{init}}$$

這樣的作法可避免同一個人被追蹤兩次,造成 tracklet 重複或混亂。

何時刪除 tracklet?

tracklet 的刪除分兩種情況:

  1. 正常情況:如果剩餘 tracklet 集合 $T_{\text{remain}}$ 在這一幀內沒有配對到任何偵測結果(即找不到目標),就直接刪除。
  2. 被遮擋的情況:如果系統判斷這個目標是被其他東西擋住了(例如走到柱子後面),就不會馬上刪除,會等目標出現,但如果等太久超過閾值 $T_{\text{occ}}$ ,則將其刪除。

這個 Initialization and Deletion 的策略在避免產生過時或虛假軌跡(Stale or Spurious Tracks)的同時,也確保了長期的穩健性。

Post Processing

FastTracker 這套系統在設計上就不太需要額外的 Post Processing,但作者在這篇 paper 還是加入了兩個輔助技術:

  1. Global Linking:將片段化的 tracklet 做 association,把斷掉的 tracklet 接回來。
    • 判斷依據:
      • 時空一致性(Spatiotemporal Consistency):兩段軌跡在時間和位置上是否合得來?
      • 外觀特徵(Appearance Features):透過 ResNet50-TP encoder 提取目標的特徵,用餘弦相似度(Cosine Similarity)衡量兩段軌跡的目標長得像不像。
    • 以上兩者都符合的話,就判定是同一個人,把軌跡合併。
  2. 高斯平滑處理(Gaussian Smoothing Process,GSP):用來 refine tracklet 的運動軌跡(Trajectory),基本上就是把抖動的 tracklet 做平滑處理。
    • 傳統的線性插值只會在兩個已知點之間畫一條直線補上去,而 GSP 會同時參考過去與未來的多個觀測點,對目標的非線性運動做整體建模,補出來的 tracklet 更符合物體真實的移動方式,也更自然、平滑。

V. BENCHMARK

這節主要是為了評估 FastTracker ,而作者自己建立的一個新資料集,叫做 FastTrack Benchmark。

為什麼要自己建資料集?

做追蹤研究需要資料集來測試 tracker 到底有多準,現有的資料集(像 UrbanTracker、CityFlow)雖然可以用,但作者認為這些不夠難、不夠真實,且場景太單一、畫面裡的物件也太少,不足以測試在真實城市交通中的表現。

所以他們乾脆自己做一個更難的。

FastTrack dataset 有什麼特別?

  1. 規模大、物件密集:
    • 共 12 部影片、80 萬筆標註偵測結果。
    • 每一幀畫面平均有 43.5 個目標物件,是其他資料集的 5 倍以上。
  2. 場景多樣、光線複雜:
    • 涵蓋 12 種交通場景:
      • 多車道路口、斑馬線、隧道、車道匯流區。
      • 日間、夜間、強烈陰影等不同光線條件。
  3. 類別豐富:標註了 9 種交通相關物件(如行人、汽車、機車等),比先前資料集的類別更多樣。

這個 dataset 物件多、場景複雜,遮擋情形會更頻繁、更嚴重,可以考驗 Tracker 的能力。

下圖 7 是 FastTracker dataset 的 Sample:

image

下表 1 是與其他家 dataset 比較的表,當中 Obj./Frame 代表每幀平均有多少個物件數量。

image

VI. EXPERIMENTAL SETUP

這節主要交代了用什麼資料測試、怎麼評分、以及系統怎麼設定。

Datasets

paper 用了四個資料集,難度由低到高:

資料集特色
MOT16靜態 + 移動攝影機,基本的行人場景
MOT17同場景但用多個偵測器輸出,評估更嚴謹
MOT20超擁擠場景,大量遮蔽,壓力測試用
自訂資料集最難:行人 + 車輛混雜、嚴重遮蔽、視覺雜亂

Metrics

  • CLEAR 指標家族,包含了最常看的 MOTA:綜合追蹤準確度,會懲罰漏偵測導致的假陰性(FN, False Negatives)、誤判多偵測到所導致的假陽性(FP, False Positives)、身份切換(IDs, Identity Switches)。
  • IDF1:這個指標特別關注身份關聯的品質,簡單來說就是看系統認人認得準不準、會不會一直把 A 錯認成 B。
  • HOTA:最全面,同時考量偵測、關聯、定位三個面向,取平衡分數。

Implementation Details

偵測階段

  • Detector 用 YOLOX,因為速度跟準確度間有良好平衡。
  • 推理(inference)時使用 NMS(non-maximum suppression,非極大值抑制)閾值 $0.75$。
  • tracklet association 用 IoU 閾值 0.5,搭配 EMA(指數移動平均,Exponential Moving Average)(α=0.8)讓框的位置更平滑穩定。
  • 偵測信心分數門檻:$\tau{low} = 0.2$ 、 $\tau{high} = 0.65$ 。
  • 最低信心分數: $CP_{\text{min}} = 0.7$
  • 初始化重疊閾值: $K_{\text{init}} = 0.8$
  • 遮蔽容忍度: $T_{\text{occ}} = 30$ 幀,也就是如果物件被判定為遮擋,系統最多會等它 30 幀,超過就刪除 tracklet。
  • 感興趣區域(Region of Interest): $M$ 由使用者設定,若提供方向資訊,Tracker 會據此自動調整。
  • 速度閾值設為 $0.75 \le \gamma{velo} \le 0.9$ 、$\delta{reset} \in {3, 4}$ 幀 、$1.1 \le \beta_{enlarge} \le 1.2$ ,依物件類別而異。

後處理階段

  • GSP(高斯平滑插值):填補軌跡空缺,最大插補間隔限制為 20 幀。
  • Global Linking:用 ReID 模型重新把斷掉的軌跡接起來。
    • 行人用 MARS 資料集訓練的 ReID 模型。
    • 車輛用 GIAOTracker 的車輛 ReID 模型。
  • ReID 模型用 Adam optimizer + 交叉熵(cross-entropy)loss function + 餘弦退火(cosine annealing)learning rate scheduler 訓練 60 個 epoch。
  • 推理時,Association 篩選條件:時間差 $\le 15$ 幀、空間距離 $\le 70$ 像素、連結分數 $> 0.9$
  • 所有實驗皆在 NVIDIA RTX 4060 GPU(8GB VRAM)的系統上執行。

VII. EXPERIMENT

A. Ablation Studies(消融研究)

什麼是消融研究?簡單來說就像是拆解實驗,把系統的功能一個一個關掉,看看少了哪個功能之後分數掉多少,以此證明每個功能都有貢獻。

paper 提到有五個主要面向需要檢視:

  1. deletion and initialization 策略對維持追蹤一致性的效果
  2. 遮擋感知(occlusion-aware)機制在暫時性視覺遺失中保持身份的貢獻
  3. 整合使用者自訂感興趣區域(ROI)與方向約束(錐形過濾)的影響
  4. Global Linking 與 trajectory smoothing 等後處理技術的作用
  5. FastTracker 在較輕量 detector 上的效能表現。

Deletion and Initialization Policies

image

表二:單獨啟用 deletion 或 initialization 策略各自會帶來些微提升,若兩者結合則能達到最佳效能。

在分數上的表現:

  • 在 MOT17 上同時採用兩種策略,可將 MOTA 從 79.4 提升至 79.9、HOTA 從 63.5 提升至 64.0,分別帶來 +0.5 MOTA 與 +0.5 HOTA 的絕對增益。
  • 在 MOT20 上也有 +0.7 MOTA 與 +0.5 HOTA 的提升。
  • FastTrack dataset 上,MOTA 從 60.1 提升至 60.9,HOTA 從 57.2 提升至 58.0。

這證明了管理軌跡的 Deletion and Initialization,能有效減少誤判與身份丟失。

Occlusion Handling

image

為了單獨測試 Occlusion Handling 的效果,作者停用了 Deletion and Initialization 策略,並回歸傳統的策略。

所以可看到表三:重新開啟 Occlusion Handling 後,分數表現如下:

  • 在 MOT17 上,HOTA 提升 2.1 分(從 63.1 至 65.2),MOTA 提升 1.4 分(從 79.0 至 80.4)。
  • 在更擁擠的 MOT20 數據集上,HOTA 提升 2.3 分,MOTA 提升 2.6 分。
  • 最大的增益出現在 FastTrack 上,HOTA 提升 3.9 分,MOTA 提升 4.2 分。

證明 Velocity Damping 跟 bounding-box enlargement 的幾何機制,在複雜場景中能精準維持身分的 Association。

ROI and Direction

image

如果單獨 apply ROI Constraint 可達到 63.5 MOTA / 60.8 HOTA 的效能,如果只用 Direction Constraint 則略微提升至 63.6 MOTA / 61.0 HOTA。

當兩種 Constraint 結合時,會達到最佳結果 63.8 MOTA / 61.0 HOTA,展示了穩定且一致的提升。

Post Processing

image

Post Processing 模組在生成初始軌跡後離線套用。

如表五,若單獨啟用 GSP 或 G-Link 皆能為基礎輸出帶來一致的提升,其中 G-Link 在所有 dataset 的 HOTA 指標上略優於 GSP。

Tracking performance of light modified YOLOX

image

為了證明 FastTracker 真的省資源,作者將其搭配的 YOLOX Detector 從大模型(61M 參數)一路縮小到極小的 YOLOX-Nano(只有 1M 參數)。

即便用 YOLOX-Nano,FastTracker 仍達到 68.3 MOTA 與 71.2 IDF1 這樣的分數,證明 FastTracker 能在資源有限的邊緣裝置上實現即時部署。

B. Benchmark Evaluation(基準測試評估)

在這裡基本上就是在跟其他家 Tracker 打擂台賽,作者將 FastTracker(純線上即時版本,不加離線後處理)丟到各大公開排行榜上,與當前最先進的 Tracker 一決高下。

image

表七是 MOT16 官方 Benchmark 結果,FastTracker 在所有方法中達到最高分,MOTA 為 79.1、HOTA 為 66.0,超越了近期最先進的方法。

與 FeatureSORT(MOTA 77.9、HOTA 62.8)相比,FastTracker 提升了 +1.2 MOTA 與 +3.2 HOTA。

相較於 StrongSORT(MOTA 77.8、HOTA 63.8),FastTracker 獲得了 +1.3 MOTA 與 +2.2 HOTA 的增益。

另外,FastTracker 也達到了最低的身份切換次數 IDs(290),展示了卓越的身份保持的能力。

image

表八展示 FastTracker 在 MOT17 benchmark 上的效能。

FastTracker 以 81.8 的 MOTA 與 66.4 的 HOTA 達到新的最先進水準,明顯優於所有先前的 Tracker。

與 FeatureSORT(MOTA 79.6、HOTA 63.0)相比,FastTracker 達到 +2.2 MOTA 與 +3.4 HOTA 的提升。

相較於 StrongSORT(MOTA 78.3、HOTA 63.5),增益為 +3.5 MOTA 與 +2.9 HOTA。

此外,FastTracker 達到最低的身份切換次數(885)與最低的漏偵測數(75162),同時確認了強大的身份保持與偵測品質。

image

表九呈現了在極具挑戰性的 MOT20 Benchmark 上的結果,FastTracker 在大多數關鍵指標上達到最高效能,以 MOTA 77.9、HOTA 65.7 與 IDF1 81.0 樹立新的最先進水準。

FastTracker 在所有 Tracker 中也達到最低的身份切換次數(684),表明即使在極度擁擠的場景中也能穩健地保持身份。

這些結果確認 FastTracker 依靠其遮擋處理能力,在高密度環境中提供最先進的追蹤效能。

image

作者納入與 DanceTrack 的比較,用來證明 FastTracker 能夠良好地泛化到 MOT Benchmarks 以外的場景。

如表十,FastTracker 以 93.4 MOTA 與 65.9 HOTA 達到最高分,超越先前所有方法。

image

表十一呈現了 FastTracker Benchmark 的結果:

  • FastTracker 在 Association 精確度上超越 FeatureSORT 與 ByteTrack,達到最佳的 MOTA(64.4)、IDF1(79.2)與 HOTA(61.5)。
  • FastTracker 也達到最低的身份切換次數(251)。
  • FastTracker 在 MOTA(64.4)上領先的同時,也在偵測與身份保持之間呈現更佳的平衡,HOTA 分別優於 StrongSORT 與 FeatureSORT +3.3 與 +3 分,IDF1 更大幅提升達 +1.8 分。

在下圖八的長條圖中顯示的百分比代表 FastTracker 相對於 baseline ByteTrack 在身份切換次數上的相對降低量,說明 FastTracker 優秀的效能。

image

在遮擋物體較多的影片中觀察到更高的降低幅度,突顯了 FastTracker 在具挑戰性條件下的穩健性。

VIII. DISCUSSION

儘管 FastTracker 在公開與內部的 Benchmark 中展現出強大的效能,但仍存在一些限制,例如:

  • 過度依賴人工標註:目前系統所使用的 ROI 和行進方向限制,都必須依靠手動定義。
  • 形狀限制太死板:目前系統規定這些區域必須精準地用四個邊來框出範圍。
  • 真實世界的挑戰:如果要將這套系統大規模部署到非常複雜或時刻都在變動的動態場景中,這種需要純手工畫線、且只能畫四邊形的設定,顯然是不切實際且不夠用的。

如何讓 FastTracker 變得更聰明?

  1. 導入語意分割實現全自動化:作者計畫利用近年來非常成熟的語意分割(semantic segmentation)與場景理解(scene understanding)技術。
  2. 讓系統自己去看懂畫面,自動偵測出道路的邊界、斑馬線等環境特徵,徹底免除人工畫線的麻煩。
  3. 支援任意多邊形與彈性方向:未來的系統不再受限於四邊形,而會支援任意多邊形(arbitrary polygonal ROIs)以及更靈活的移動方向限制。
  4. 解鎖更多複雜地形:一旦解除了形狀限制並達成自動化,FastTracker 就能廣泛應用於現實中各種更複雜的交通地形,例如圓環(roundabouts)、多車道交匯處(multi-lane roads)以及奇形怪狀的不規則路口。

:::info
語意分割(semantic segmentation)簡單來說就是把圖片中每一個像素都貼上標籤,告訴電腦這個像素屬於什麼類別。例如:

  • 道路 -> 灰色
  • 人 -> 紅色
  • 汽車 -> 藍色等等。
    :::

IX. CONCLUSION

FastTracker 是一種非常快速且輕量的 MOT Tracker,運作不依賴任何基於 CNN 的 Re-ID 網路。

FastTracker 能有效處理遮擋問題,並利用空間約束等環境感知線索來提升追蹤精度,雖專為線上部署而設計,也支援可選的後處理步驟以進一步優化結果。雖然結構簡單,FastTracker 仍優於大多數最先進的方法,並適合在資源受限的裝置上部署。