MOT Algorithm ft.SORT, DeepSORT, StrongSORT
這篇文章是學習時整理的一些筆記,讓自己複習時方便,文章內容為閱讀清單之整理
今年專案都在研究 Tracking,對 StrongSORT 接觸了不少,所以來寫一篇閱讀筆記~
對於多目標追蹤,我覺得這篇文章介紹的很完整,指路👉多目标跟踪(MOT)经典算法简介
Introduction
目標追蹤依據演算法作法大致可以分為兩類:TBD(Tracking-by-Detecton)和 DFT(Detection-Free Tracking)。
TBD 做法是在每一幀影進行物件偵測後,再將偵測到的目標進行關聯,也是目前最主流的做法;而 DFT 則是基於初始框無需檢測器的多目標跟蹤,使用給定的初始框,在後續視頻幀中對初始框內的物體進行位置預測,常用於單目標追蹤。
MOT (Multiple Object Tracking) 多目標追蹤包含兩部分:物件偵測(Object Detection)及物件追蹤(Object Tracking),物件偵測即偵測某幀影像中的物件內容;而物件追蹤則必須從相鄰兩幀影像中配對物件關聯性。
MOT 算法的步驟大致是以下流程:(1)給定影像,並利用 Detector 檢測影像內容物件,(2)對於每個檢測到的物件計算特徵與相似度,(3)對於計算之相似度計算倆倆物件之間屬於同一目標之機率,(4)對於關聯對象發配ID。
接下來就要從最熱門的算法開始講起…
整個演算法的演進,這部影片敘述的淺顯易懂,在直接進入介紹前可以先看這個影片,推推👉 How DeepSORT Works?
SORT
對於連續、有相關性之間的影像 tracking 不能完全使用 detection,因為當出現了遮擋,目標物會消失,因此需要加入其他方法。
傳統方法 mean shift , optical flow:關注目標物位置、大小、移動方向,在下一幀影像往理想移動方向擴大搜尋範圍來找到目標物,雖然精準但計算複雜且遇到遮擋目標物也會遺失。
因此考慮到目標移動、消失、遮擋等等因素,所以就有了 SORT …
SORT 是一切的源頭,也是一個大致的框架,幫往後的算法奠定一個基礎的架構,這個算法的核心就是兩個重要的演算法:卡爾曼濾波與匈牙利演算法。在整個演算法中,卡爾曼濾波用來預測目標下一幀可能的所在位置,即使目標物被短暫遮擋,依然能持續跟蹤,而匈牙利演算法為物件間的關聯提供了最優解法。
這兩個重要的演算法又可以用一篇文章來單獨說明了歐買尬~
整體流程簡介如下:
Detection → Kalman Filter → Target Association → Target ID Life Cycle
- Detection: 偵測影像中的物件
- Kalman Filter: 利用「假設恆定速度與高斯分佈」來猜測目標物理想所在位置,用預測值與測量值更新狀態
- Target Association: 將偵測到的目標物分配給現有的目標物(使用 Hungarian Algorithm by IOU),並更新其最新狀態位置
- Target ID Life Cycle: 決定是否需要創建新目標物或是沿用舊目標
DeepSORT
儘管卡爾曼濾波很有效,但它造成了大量的 ID Switches,因此 DeepSORT 引進了新的配對方法取代了原本的配對方法:
Matching Cascade: Cost Matrix of Hungarian Algorithm = Appearance Descriptor Cosine Similarity + Bbox Mahalanobis Distance (Kalman Filter)
簡單來說,在「物件之間的配對」這一部分,DeepSORT 利用模型提取物件影像特徵後,以特徵的Cosine相似度作為 cost 加入配對計算,將深度學習加入追蹤算法中運算,讓此算法不僅考慮到運動分支,同時也考慮到外觀分支。(即目標的移動與目標的外觀特徵)
StrongSORT
論文:https://arxiv.org/abs/2202.13514
程式碼:https://github.com/dyhBUPT/StrongSORT
好!重頭戲來拉~ 也是我花最多心思研究的一個演算法
嗯… 其實 DeepSORT 已經很強拉! StrongSORT 改進了哪裡呢?
其實整體架構和 DeepSORT 是一樣的,不過 StrongSORT 又做了一些小加強…
(外觀特徵) 採用更強的特徵提取器BoT來取代(以ResNet50作為骨幹),用 JDE tracking 方法提出的特徵更新策略更新外觀(採用指數平滑移動平均線(EMA)的方式更新),更新第 t 個 frame 時的第 i 個軌跡外觀狀態,提高配對與減少時間
(運動軌跡) 採用 ECC(Enhanced Correlation Coefficient 增強相關技術) 進行相機運動補償,並利用 NSA Kalman 自適應計算噪聲
而由於跟蹤器變的更強,限制住了性能,故採用新的 Vanilla Matching 取代 DeepSORT 的 Matching Cascade 方式 (使用普通的線性分配,即 Cost Matrix 是特徵模型和運動模型代價的加權)
以下是我個人對於 StrongSORT 演算法畫的流程圖~ 👉 https://www.figma.com/file/Djps8IY73ywTE31DBIeTvz/StrongSORT?type=whiteboard&node-id=0%3A1&t=jNxyelexaoLM8Bxh-1
閱讀清單
1.多目标跟踪(MOT)经典算法简介
2.StrongSORT: Make DeepSORT Great Again
3.初探物件追蹤 Multiple Object Tracking(MOT)
4.多目标跟踪(MOT)入门
5.Deep SORT多目标跟踪算法代码解析(上)
6.带你入门多目标跟踪(一)领域概述
7.StrongSORT(deepsort强化版)浅实战+代码解析
8.DeepSORT(工作流程)