帶你入門多目標跟蹤(四)外觀模型 Appearance Model

行人跟蹤作爲MOT中的一個典型的問題,十分具有研究價值,本系列文章以行人跟蹤爲例來介紹MOT。

在講解外觀模型問題前,首先需要對MOT的各個部件有一個大概的瞭解。在設計一種MOT算法時,有兩點問題需要格外關注。

一是如何測量在視頻幀中各目標之間的相似性(measure similarity between objects in frames);

二是如何基於第一點測量出的相似性,進行視頻中目標ID的恢復(how to recover the identity information based on the similarity measurement between objects across frames.)。

一個典型MOT系統包含的部件

第一點中包括了外觀模型運動模型交互模型排斥模型遮擋模型等(modeling of appearance, motion, interaction, exclusion, and occlusion)。

至於第二點,其實是選取何種推斷方式。以往論文裏會比較多的使用概率推理(Probabilistic Inference)或確定性最優化(Deterministic Optimization)的方法。

上篇文章講的匈牙利算法和KM算法就屬於Deterministic Optimization中的二分圖匹配算法(Bipartite graph matching)。

除二分圖匹配以外,Deterministic Optimization中還有很多算法可以應用在MOT中,比如動態規劃(Dynamic Programming)、最小費用最大流算法(Min-cost Max-flow)、條件隨機場(Conditional Random Field)、MWIS相關算法(Maximum-weight Independent Set)等等。感興趣的讀者可以自行找資料學習。

P.S. 這些術語以英文爲準,若發現翻譯錯誤,還請了解的朋友幫忙指正。


這篇文章將針對第一點中的外觀模型展開講解。

作爲第一個講解的部件,外觀模型的重要性不言而喻。通俗地講,外觀建模問題就是如何抽取有鑑別力的特徵

”良好的特徵會簡化問題“
”特徵好了之後,調參的難度會降低一些“
“檢測越好,特徵越好,跟蹤質量就越高”
——某MOT羣日常聊天中大佬們常說的話

我個人把外觀模型分爲兩類,一類是深度學習之前的傳統方法,通過手工設計算法來抽取特徵,比較有代表性的是KLT算法(Kanade-Lucas-Tomasi )。另一類就是深度學習時代的基於CNN抽取特徵,許多ReID的網絡都能用作這一類的特徵抽取器。

學界目前研究重點是基於CNN進行特徵抽取,我在這裏對第一類只做簡單介紹。

1. 手工設計算法抽取特徵

以比較有代表性的KLT爲例,KTL最早的雛形是Lucas and Kanade 的工作[1] ,之後由Tomasi and Kanade在[2]中進一步發展,之後也是最知名的工作就是Shi and Tomasi 發表在CVPR94上的[3]

圖中“小藍×”就是KLT算法選取的特徵點

其核心思想是尋找一些適合用來跟蹤的特徵點,根據這些特徵點,進行下一步的跟蹤。它認爲一個好的特徵點的定義就是能更容易被跟蹤。其原理,簡而言之,是通過檢查每個2乘2梯度矩陣的最小特徵值來定位好的特徵,並且使用Newton-Raphson方法跟蹤特徵,以最小化兩個窗口之間的差異。

Reference:

[1] Bruce D. Lucas and Takeo Kanade. An Iterative Image Registration Technique with an Application to Stereo Vision. International Joint Conference on Artificial Intelligence, pages 674-679, 1981.

[2] Carlo Tomasi and Takeo Kanade. Detection and Tracking of Point Features. Carnegie Mellon University Technical Report CMU-CS-91-132, April 1991.

[3] Jianbo Shi and Carlo Tomasi. Good Features to Track. IEEE Conference on Computer Vision and Pattern Recognition, pages 593-600, 1994.

2. 基於CNN提取特徵

在深度學習大火的今天,基於CNN的特徵抽取獲得了比手工設計算法提取特徵更好的效果。對於MOT(行人跟蹤),一個不錯的方法是使用行人重識別(Re-Identification/ReID)的網絡作爲特徵抽取器。行人重識別算法通常提取行人圖像特徵,對特徵進行距離度量,從而判斷是否是同一個人。 這些特徵就可以用來輔助我們進行行人跟蹤。若兩個檢測框框出的是同一個行人,那麼這兩個向量的距離會比較小;若不是同一個行人,這兩個向量的距離會比較大。

使用ReID網絡抽取的特徵進行距離可視化

若將這些距離進行可視化,就可以很清晰地看出效果,類似的目標被分在了相近的位置。

讀者可以設想,在視頻的前後兩幀中,我們已經通過目標檢測的方法得到了若干檢測框,之後把檢測結果都通過ReID的網絡抽取成特徵,如果ReID的網絡鑑別力足夠高,我們可以判斷這些向量相互之間的距離,直接完成所有目標的配對,甚至無需其他MOT組件和Inference過程!

當然,這只是理想情況,雖然ReID能完成行人鑑別的功能,但其效果還不能完美到替代MOT任務。我們可以認爲ReID學習到了一些對行人進行鑑別的能力,這種能力可以輔助我們進行多目標跟蹤,或者提高我們已有跟蹤算法的效果。所以更多時候,在MOT中將ReID的網絡作爲一個組件,會是一個更合適的選擇。

舉個例子來簡單介紹一下ReID的網絡。一個比較經典的方法是使用Triplet loss來訓練一個去掉了全連接層的ResNet,最後一層卷積層的輸出就是我們需要的特徵。

圖示最右爲ResNet-34,去掉最後一層FC層即可成爲特徵抽取器

Triplet loss是深度學習中的一種損失函數,用來訓練差異性較小的樣本,使用錨(Anchor)示例、正(Positive)示例、負(Negative)示例構成一個三元組,通過訓練使Anchor與Positive的特徵距離減小,使Anchor與Negative的距離增大,通過這種方式來學習出一個對行人有鑑別力的網絡。再利用這個網絡,就能抽取出我們想要的特徵

ReID目前是一個很火爆的研究方向,各種新文章新結構層出不窮,這裏就不做詳細介紹了。這些結構基本都可以看成一個特徵抽取器,用在MOT上。有興趣的讀者可以自行研究。

值得提醒的一點,建議大家選擇模型時,儘量挑選魯棒性高的模型。個別模型已經在某數據集上嚴重過擬合,這種模型對於我們是沒有太大幫助的,畢竟我們是要將這個模型運用在它從未學習過的數據集上。

若使用ReID數據集進行外觀模型的訓練,個人建議多使用一些數據集,還可適當加入一些自己收集的數據,這樣可以獲得魯棒性更高的模型。我個人習慣是使用Market1501,Duke,CUHK03進行混合,再加入自己的數據來訓練外觀模型。

當然,還可以採用多種外觀模型,再進行各種模型融合,也是很一種很有效的手段。集成學習是當之無愧的刷分大殺器。

對外觀模型的介紹基本就是這些,個人認爲,只要能用來提取框內目標有鑑別力特徵的模型,都可以用作外觀模型,用來提高MOT的效果,不僅限於文中介紹到的這些。甚至外觀模型這個概念本身,大家都不必太過執着,能抓到耗子的就是好貓,特徵爲王,能抽到好特徵的模型就是好模型

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章