DeepSORT : 一種簡單且有效的物體追蹤方法

目前AI應用廣泛,近期也有新聞報導:「百萬「AI科學」精密計算人流 北港武德宮日湧逾17萬人次」這些看起來超強的AI應用到底是如何辦到的呢?
本文將簡單介紹這類物件偵測+統計數量的方法。

首先所我們將影片(圖片)輸入電腦,需要辨識影像中的人、車等物件這類任務簡稱電腦視覺,目前已經有各種成熟的AI模型可以辨識影像中的各種物件,其中較知名的是開源的YOLOv7(圖1)
圖1 YOLOv7物件偵測示意圖

我們已經能透過YOLOv7偵測物件,下一步就是本文的主角: DeepSORT,全名為Deep Simple Online and Realtime Tracking,是一種可以即時追蹤物件的算法。你有沒有看過一部電影或影片,在裡面有很多人和東西在移動,但你可以一直關注一個特定的角色?這跟這個主題有點相似,就是在影片中追蹤物體或人物的移動。DeepSORT可以幫助使用電腦追蹤物體在影片中的移動。研究團隊添加了 "外觀信息",以幫助他們在短時間內仍能追蹤物體,即使它暫時不在視線範圍內。這意味著,即使物體消失在某些地方一小段時間,他們仍然可以繼續追蹤它。可以查看我們實作的範例影片(影片:影1 YOLOv7物件偵測示意圖)

我們在空拍機視角的影片中偵測道路上的車輛,並且給予每一台車輛特定編號,所以從影片中可以發現特徵框跟編號會隨著同一台車輛移動,這樣就能計算出影片內有多少不同的車輛總數。

本文不詳細敘述數學公式,但簡單介紹DeepSORT實現的原理,主要分成三個步驟: 
1. 目標偵測器(YOLO or Fast-RCNN)
2. 追蹤目標
3. 匹配

第一步:目標偵測器可以採用目前流行的各種模型,只要能夠將目標的特徵框抓取出來即可。

第二步:會使用卡爾曼濾波器(Kalman Filter) 追蹤目標,這裡假設影片中的物體是等速運動,可以從第一步取得所需的八個參數,各別是特徵框的X,Y,長寬比,高度四個參數與這四個參數對應的速度。這一步驟可以透過追朔前後幀的重疊性去追蹤特徵框

第三步:會使用匈牙利演算法(Hungarian Algorithm)進行匹配,和前面第二步的差異於處理遮擋物的影響,因為一個目標物如果長時間被遮擋(汽車經過陸橋)時卡爾曼濾波器會很不穩定,因為目標的特徵框之間距離過大,所以在影片中下一秒(或間隔更長)因遮擋導致兩個特徵框在互相爭奪匹配,會需要匈牙利演算法進行判斷並匹配,為了解決這個問題,會將最近期有被匹配過的特徵框作為候選人。

詳細的實現方法以及數學原理可以參考文獻,若直接想使用YOLOv7 或 YOLOv5已訓練好的權重輸入給DeepSORT使用文末有提供連結前往GitHub。

最後探討這項簡單又有效的追蹤方法有哪些場合會失誤呢?
Ans: 經過長時間遮擋物例如隧道、收費站等,以及遠距離視野目標物過小,主要原因是不同目標的特徵框重疊比例過高和長時間遮擋導致即便使用匈牙利演算法也無法匹配到正確的特徵框。

如果讀者運用程式碼有問題或有任何有趣的應用想法歡迎留言討論^^ 


撰文:許楷翊


參考文獻:
1. 新聞網址: https://reurl.cc/a1nxyG
2. YOLOv7: Wang, C. Y., Bochkovskiy, A., & Liao, H. Y. M. (2022). YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors. arXiv preprint arXiv:2207.02696.
4. DeepSORT: Wojke, N., Bewley, A., & Paulus, D. (2017, September). Simple online and realtime tracking with a deep association metric. In 2017 IEEE international conference on image processing (ICIP) (pp. 3645-3649). IEEE.

留言