1. 程式人生 > 實用技巧 >目標跟蹤初步瞭解

目標跟蹤初步瞭解

卡爾曼濾波

與 光流法 :  都可以用來預測當前幀中的目標在下一幀的位置(用於得到上一幀目標更新到當前幀的位置等)------本質上是一個運動模型,來預測目標在當前幀時刻運動到的位置

3個矩陣:

  1. 狀態轉移矩陣F: F * x_previous[x,y,h,w,vx,vy,vh,vw] = x_current[x,y,h,w,vx,vy,vh,vw],在卡爾曼濾波模型中認為目標是勻速的!
  2. 噪聲矩陣
  3. 測量矩陣

匈牙利演算法:

找出當前幀的某個目標,是否與前一幀的某個目標(而這個前一幀的目標並不是從前一幀取,而是用卡爾曼濾波等預測得到的前一幀目標在當前幀的位置)相同。
( 位置距離 + 特徵距離 = 是同一目標衡量)

#本質上是匹配模型,但是多目標的全域性匹配,被匹配的物件是運動預測到的上一幀目標在當前幀時刻的所有目標(位置) 及 檢測到的當前幀所有目標(位置)
		
		
		解決的是基於代價的分配問題.那麼只需要將目標間的距離作為代價,來分配ID
			    Person_c1       person_c2         person_c3
		
		person_p1      d11             d12                d13
		
		person_p2      d21	       d22                d23
		
		person_p3      d31             d32                d33
		  
		最終設定一個d閾值,如果最終分配的路徑結果中,比如為d11 d22 d33,但是d11>d_thresh則,認為當前幀的person_c1是沒有分配成功的目標,認為其為新增目標,分配新增ID!!!

因此先用卡爾曼濾波或光流法對將上一幀目標更新到當前幀,然後用這些與當前幀的新的檢測detections進行匈牙利匹配,來確定是直接分配前幀已有ID還是新增ID.
結果:有些前幀的ID與當前幀的detections匹配上了,有些沒匹配可能導致前幀的ID在當前幀沒了(跟丟),也可能導致當前幀的detections沒有匹配(新增ID))

跟蹤調研

現在主流的跟蹤基於檢測的,tracking by detecting
目標跟蹤更多考慮的是對目標的表達,跟蹤過程中對目標表示的更新,跟蹤中對周圍環境變化資訊、對時空資訊的利用等等;
跟蹤的難點在於關聯和狀態估計(位置/速度/旋轉)
正因如此,跟蹤任務才即可被看作是生成式任務,也可以被看作為判別式任務,既可以通過深度學習的方法來暴力解決,也可以通過傳統統計學、機器學習的方法來解決優化。

關於跟蹤:

基於顏色特徵
基於相關濾波
基於深度學習

MOTA指標:multiple objects tracking accuracy

多目標跟蹤準確率 = 1-(所有幀中未正確跟蹤的目標數/所有幀中包含的目標數)

最大是1, 最小是-infinity;越小模型越不準!

跟蹤不需要識別,但是現在主流的跟蹤都是基於檢測的跟蹤

運動目標檢測(從背景中分離出運動的前景):

  1. 幀間差分
  2. 背景差分
  3. 光流法

運動目標跟蹤:

  1. 卡爾曼濾波
  2. 均值飄移
  3. 相關濾波(上個時代的巔峰)
  4. 深度學習:基於SiamFC系列發展

人的行為識別

(屬於模式識別,有一段典型動作編碼,只需與此編碼比對,區分行為動作型別。
目的:給一段視訊序列打動作型別標籤)

應用:視訊檢索,視訊推薦

  1. 模板匹配法:魯棒性差(13年論文,傳統方法)
  2. 狀態空間法:(概率轉移法):通過將系列動作構建狀態圖,然後通過某種概率將這些狀態節點的依存關係聯絡起來
    動態貝葉斯網路
    隱馬科夫模型
  3. 圖卷積

DeepSORT:

track by detect

demo結果可見明顯的問題:(why)
  1. 當兩個目標靠的較勁有overlap,id會被影響,賦予最新的ID(作為新目標出現)
  2. 目標即使沒有靠的近,也會發生跟丟,進而分配最新的ID的情況

處理問題1中的短時間遮擋導致的id交叉:

  1. 同時考慮了運動資訊deep motion features---DMF表觀特徵資訊deep appearance features---DAF,來計算tracks和detections的代價矩陣,基於卡爾曼濾波預測下一幀位置
  2. 且對檢測的每一幀都用一個小型的Reid網路來記錄特徵資訊,如果同時滿足兩種資訊則不會賦予新的ID