Correlation Learning
CVPR 2021
Introduction
以往實作物件追蹤時,為了要有好的辨別能力,大家會把物件的外觀特徵也加入模型中運算,利用外觀特徵把目標從一群物件中找出來
但如果遇到下圖 (a) 的狀況,要追蹤的物件是白色十字的物件,顏色越深代表跟欲追蹤物件的外觀相似程度高,(a) 的狀況是很多物間跟目標物件外觀相似,模型無法分辨出到底哪個是目標
這篇論文提出的模型 CorrTracker 能夠分析目標物件周圍場景與目標的相關性,讓 feature map 像是上圖 (b) 一樣,能夠輕鬆找出目標
Related Work
Real-time Tracking
人們一開始做物件追蹤時,使用 IOU 追蹤法,觀察這一幀跟下一幀的 bounding box,哪個距離近就判斷這兩個 bounding box 屬於同個物件,這方法雖然很快,但如果畫面中有很多物件錯綜複雜的混在一起,就無法追蹤
後來有人想到可以用 Person Re-Identification (紀錄物件表面特徵,簡稱Re-ID) 的方式追蹤,雖然追蹤變準確但計算表面特徵也讓計算量飆增
接著又有人想到能把 Re-ID 放在 one-stage 的模型中訓練 (JDE),使計算量變少,過不久 FairMOT 提出 anchor free 的方式追蹤,不但把 Re-ID 放在 one-stage 訓練,也免除 anchor 帶來的缺點,本篇論文的模型就是以 FairMOT 來做更改
Tracking with Graph Model
Graph neural network 也有人做在物件追蹤當中,特點是能在空間中傳遞特徵,同時擁有前景和背景的特徵,傳遞時減少損失
Tracking with Optical Flow
光流追蹤法 : 觀察 pixel 在各個 frame 之前的移動,如果有一些 pixel 在移動的速度和路徑都一樣,這一組 pixel 可能屬於同一個物件上
這方法相當耗時,模型不但要去計算每個 pixel 的移動當量,在資料上的蒐集和製作也不容易
Attention Mechanism
在圖片的局部相關性做 attention,或相似於 Transformer 的方式都能獲得很好的效果,但建議只要針對一個軸 attention 就好,以免計算量過大
Methodology
下圖是 CorrTracker piplilne
此方法分成三的步驟
- 一般的特徵抽取
- 從時空相關性中學習,並預測出檢測結果
- 執行數據關聯,並將檢測結果分配到最可能的路徑中
步驟 1、2 是可以分割的,他們同時放在 end-to-end 的訓練架構裡,主要的貢獻在於對複雜的位置極其複雜的訊息建模,幫助追踪器在復雜的場景中抑制干擾
Motivation
在 frame t 中的每一個物件的表示法
還有一個物件在前幾幀移動的軌跡
藉由這兩樣能夠算出 affinity matrix
- f (.) 是特徵抽取 function
- 前幾幀移動的軌跡會隨著往後的每一幀去更新
像上面這種配對時只要找到物件的外觀特徵,容易在物件多且重疊的狀況下表現欠佳,因此作者提出要把物件附近的特徵也考慮進去的做法
Spatial Local Correlation Layers
剛才提到,我們必須要考慮目標以及目標鄰近區域的關係,這邊的鄰近區域以座標的遠近作為參考
- l 代表 FPN 裡面的第 l 層
- C¹ 表示 query feature Fq 和 reference feature Fr 之間的 correlation volume
- x 是 query feature 的座標,2 維
- d 是偏移量,2 維
如此我們就能有這個區域附近的 correlation 資訊,接著我們把 C¹ 放進具有 dilation convolution 的 MLP 中消化,再把這皆經過消化的 correlation 資訊和最簡單的表面資訊加起來,就成了以下的式子
Correlation at Multiple Pyramid Levels
為了獲得更大範圍的周邊資訊,直觀的想法就是增加 R (鄰近座標範圍的區域),但直接把 R 調大會讓計算變得沉重,不同的物件大小也會讓偵測增加難度,所以作者使用特徵金字塔 FPN
維度是 W x H x (2R+1)²,因為座標可以左右或者上下偏移,還有原地不動,這樣就是 2R(左右或上下)+1(不動)
透過上採樣往下一層傳播
如此我們可以獲得大的視野(receptive),讓我們了解目標物件旁邊的狀況,有了 FPN 也讓我們把這些資訊整合在一起
Temporal Correlation Learning
很多現有的模型在輸入圖片時,往往使用單個 frame 輸入,這對模型來說資訓練實在有限,且更難掌控物件的追蹤
如果像上面提到的,一次可以輸入兩個 frame,模型就能獲得更多資訊,對解決遮擋問題也有幫助
用前一幀計算後的結果跟當前一幀的結果計算 correlation,這種作法就有一點像 attention,通常模型都是用前一幀來計算,如果要獲得最大精準度,可以採用前五幀
Self-supervised Feature Learning
在 groundTruth 方面,C¹ 採用以下方式
y 代表在 x 座標上的物件ID,如果是一樣就標註為 1,反之標註為 0,背景標註為 -1,使用 class-balanced cross-entropy loss
下面這個很酷,他說使用一個叫做 colorization 作為一個代理任務來訓練相關性,顏色越相近就越相關
Tracking Framework
我們現在有 FairMOT 模型作為框架,把上面講的那些 correlation module 插入進去,loss也改用 Self-supervised Feature Learning 的 loss
在 inference time 中,會把當前跟前一幀的 C¹ 做比較,比較的方式使用匈牙利演算法,如果發現差很多,那就設定為新物件,如果發現物件消失了,等物件消失一定的時間就把他移除
Experiments
為了要證明上面的 correlation module 是有效率且準確的,作者做了一些 module 之間的比較
證明使用兩幀當輸入且使用他們提出的板模可以達到最高準確度
下面是 CorrTracker 跟其他現有模型的比較
準確度竟然比 tubeTK還要高,tubeTK 的計算難度超高,而且我覺得超準,只是 FPS 好像不到1,CorrTracker 還有到 14,好像真的很強
接著是 R(位移) 的大小跟準確度之間的關係,看得出來 R 在 5 的時候準確度最高,少一點速度也沒有快很多,所以最後設定 R = 5
最後是一些視覺化的圖
Conclusion
我覺得他沒有解釋清出他的 correlation 詳細一點的實作內容,在 Self-supervised Feature Learning 那邊的解釋也有點含糊帶過,但不得不說,他實驗的準確度高得驚人,所以他提出的體論是有道理的,如果能夠把目標附近的特徵也學進去,對目標追蹤來說會有很大的幫助
雖說 CorrTracker 的準確度很高,ID switch 也發生的很少,但速度還是有點偏慢,反觀 FairMOT 雖然精準度和其他都輸 CorrTracker 一點,可是速度卻可以是他的接近兩倍
另外他的模型架構圖也沒有很清楚,我還不是很確定這些 correlation module 到底要放在 FairMOT 的哪邊,真希望他能補一張完整的架構圖
他沒有 Code,我好生氣,也找不到其他人實做出來,真的很好奇為什麼不提供程式碼還可以發論文,這樣對學術界一點幫助也沒有(還有我的畢業也沒幫助) : (
Code
沒有 Code!!!!!(生氣)
: (((((