多目標跟蹤之數據關聯(匈牙利匹配算法和KM算法)

ref:https://zhuanlan.zhihu.com/p/110590953

首先要明確概念:

數據關聯是多目標跟蹤任務中的關鍵步驟,其目的主要是:爲了進行幀與幀之間多個目標的匹配,其中包括新目標的出現,舊目標的消失,以及前一幀與當前幀的(行人)ID的匹配。傳統的數據關聯方法多爲運籌學方法,比較經典的即爲匈牙利匹配算法和KM算法,接下來詳細介紹這兩種算法。

在介紹匈牙利匹配算法和KM算法之前,我們需要了解一個“二分圖”的概念。簡單來說就是,兩組集合U和V,U和V各自內部的點不能相互連通,但是U和V之間的點可以連通,看示意圖:

 

 

可以看到,二分圖的結構與我們多目標跟蹤任務的結構很相像,我們可以把U與V看成是多目標跟蹤任務中的前一幀與當前幀的檢測框集合,U與V之間的關聯視爲前一幀與當前幀的同一id目標的檢測框的關聯,這樣我們需要做的就是將相鄰兩幀的目標檢測框儘可能準確的兩兩匹配。爲了解決這個問題,就需要用到匈牙利算法或者KM算法。

1. 匈牙利算法(Hungarian Algorithm)

匈牙利算法是基於Hall定理(該定理用於判定二分圖是否完全匹配)中充分性證明的思想,它是部分圖匹配最常見的算法,該算法的核心就是尋找增廣路徑,它是一種用增廣路徑求二分圖最大匹配的算法。

具體來說,Hungarian Algorithm是一個遞歸過程,詳細步驟如下:

(1)初始化二分圖:即將當前幀中可能與上一幀中目標匹配的檢測框確認

 

 

 (2)按照ID順序依次進行匹配,首先將可能與上一幀目標1相匹配的當前幀的目標1進行匹配(紅色代表已經匹配)

(3)接着對目標2進行匹配

 

 

 (4)接着對3進行匹配,這時我們發現當前幀中可以與目標3進行匹配的目標1,2已經被匹配過了,爲了使目標3可以匹配到目標,我們嘗試將之前U中匹配到目標1的目標與另一個目標匹配(黃色代表取消匹配)

 

 

 這時我們發現U中的目標1可以匹配到的V中的目標2也已經被U中的目標2匹配到了,那麼同理,我們在將U中的目標2更換匹配目標。

 

 

 這時我們再返回上一步,即可將U中的目標1,2,3均匹配到目標

(5)接着對目標4進行匹配,與上述步驟相同,但是最後並沒有找到能夠符合要求的匹配方法,所以U中的目標4在這一幀中消失,同時當前幀中的目標4被視爲新出現的目標。

以上爲匈牙利算法的流程,簡單來說就是一個遞歸過程,儘可能找到讓上一幀與當前幀目標一對一的匹配。該算法對紅線連接的準確率要求很高,也就是對運動模型和表觀模型要求較高,需要將置信度較高的邊送入匈牙利算法進行匹配,才能得到比較好的結果。

2. KM算法(Kuhn-Munkres Algorithm)

上面介紹的匈牙利算法存在一個很大的問題,就是該算法將每個目標的匹配對象視爲評級,然而在實際的跟蹤任務中,肯定有些匹配的框比較接近目標,有些框與目標相差較大,這時候如果將其視爲同級會影響匹配準確度,所以在匈牙利算法的基礎上又提出了KM算法,這也是實際任務中比較常用的算法,KM算法解決的是帶權二分圖的最優匹配問題,即引入了權值這一概念。具體步驟如下:

(1)初始化權值二分圖:對每個頂點賦值(頂標),將左邊的頂點賦值爲與其相連邊的最大權值,右邊的頂點賦值爲0。

 

(2)匹配原則爲只和權重與左邊分數(頂標)相同的邊進行匹配,若找不到邊匹配,則將此條路徑對應左邊頂點的頂標減d,右邊頂標加d(這裏我們取d爲0.1)。所以首先對U中的目標1,我們選取第一條滿足條件的邊

 

U中的目標2,同理找到滿足條件的邊:

 

接着對於U中的目標3,我們發現滿足條件的V中的目標1已經被匹配,我們首先想讓U中的目標3換邊,但是另一條邊並不滿足條件(另一條邊權重0.8,不滿足權重最大邊匹配的條件)。

然後再來考慮U中的目標1,我們同樣想更換目標1的邊,同樣的問題,與目標1匹配的另一條邊權重只有0.6,不是最大權重邊,同樣違背了權重最大的匹配條件。

遇到這種情況,就需要進行加減操作了,即將所有衝突邊對應的U中的頂點權值減d,V中頂點權值加d。

 

(這裏需要注意一下,按照最大權重的邊匹配規則,U中的目標1和目標3會同時連接到V中的目標1,這時產生了兩條衝突的邊,在V中只對應一個頂點,就是目標1,所以V中只有目標1減了d。)

 

然後繼續進行匹配操作,由於權重改變,我們發現V中目標3多了一條可以匹配的邊,所以U中目標3與V中目標2進行匹配。

(我覺得這個圖畫錯了,應該是左3和右2連接)

 

(4)最後進行U中目標4的匹配,與上述步驟相同,由於V中目標3已被匹配,所以再進行一系列的加減d操作,還是匹配失敗,兩輪以後U中目標4權值減爲0,故放棄匹配目標4。

以上即爲KM算法,總體來講也是一個遞歸過程,核心思想與匈牙利算法一樣,只不過引入了權值作爲約束條件,可以使匹配成功率大大提高。

3. 小結

上述介紹了數據關聯算法中的匈牙利算法和KM算法,具體實現起來並不複雜,另外常見的數據關聯算法還有概率相關的算法,感興趣的同學可以進一步研究。

 

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