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


ref:

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

https://www.zhihu.com/search?type=content&q=%E5%8C%88%E7%89%99%E5%88%A9%E5%8C%B9%E9%85%8D%20%E8%B7%9F%E8%B8%AA%E5%85%B3%E8%81%94

首先要明確概念:

數據關聯是多目標跟蹤任務中的關鍵步驟,其目的主要是:為了進行幀與幀之間多個目標的匹配,其中包括新目標的出現,舊目標的消失,以及前一幀與當前幀的(行人)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算法,具體實現起來並不復雜,另外常見的數據關聯算法還有概率相關的算法,感興趣的同學可以進一步研究。

數據關聯的最大瓶頸是計算量爆炸的問題。

如果我們回顧一下數據關聯面對的問題,問題可以總結為:在所有可能關聯中,找到概率最大的一個或者幾個。但很多時候,我們並不需要計算所有的可能性,只需要用一個方法找到最優解即可。從這個角度,問題變成了一個分配問題求最優解的過程。常用的求解算法有:

  1. 單個最優:匈牙利算法,拍賣算法 等
  2. 多個最優:Murty's 等
  3. 多個次優:Gibbs 采樣 等

這里已經提到多個解的情況了,意味着有些時候我們要保留多個結果,接下來我就會介紹數據關聯的最重要的兩個傳統方法:聯合概率數據關聯(JPDA)和多重假說追蹤(MHT)。GNN用貪婪算法的思維,只保留一個最優關聯,缺點就是拋棄了除了最優以外的所有信息,當多個最優的關聯方式的概率相差不大的時候,很容易出錯。而JPDA在PDA的基礎上,選出多個關聯方式,並且用聯合概率的方式融合它們得到一個新的聯合概率,以此來利用更多的信息。但是融合也會產生問題,雖然利用了所有信息,但是融合后的結果卻不是准確結果了。相比於JPDA的融合,MHT選擇直接保留多種關聯方式,來真正得到准確結果。但與此同時,當每個時刻保留超過一種關聯方式的時候,額外的基於各個時間的關聯步驟產生了,因此假說的概念被引入。舉個例子,總共兩個時刻1和2,時刻1有五個關聯方式保留下來,時刻2也是五個關聯方式,當描述對於時刻1和2整體的數據關聯時,我們必須從時刻1和2分別挑出一種關聯,組成對於整體關聯描述的一種方案。這樣的方案,被稱之為假說,總共的假說個數是 [公式] 。同時,MHT給出了計算每個假說概率的方法。回到上面的簡單多目標情景,使用GNN和JPDA時,隨着時間增長的計算次數的增長是加法: [公式] ;MHT的計算次數隨着時間的增長方式是乘法: [公式] 。隨着時間的增長,計算量將大到無法處理。

盡管MHT有着更精確的結果,但是計算量直接大到爆炸。盡管實際情況中,應用了很多預處理和后處理步驟來刪減計算的數量,但是面對復雜的情景,要實現實時計算還是幾乎不可能。更別提,大多數傳統方法都假定目標的數量是固定的,關聯的過程不存在目標新生和消失的情況,即使有些考慮變化數量的目標,但也只是更大的計算量。

此時,數據關聯急需一個新的理論框架,由此而生的是隨機有限集(RFS)理論。在RFS理論框架下,用集合來描述所有目標狀態空間和測量空間。集合中元素的數量和狀態都可以用一個RFS概率密度來描述。基於RFS理論而產生的方法有 概率假說密度(PHD),多重伯努利(MB),帶標簽的RFS濾波器,以及它們的各種變體。其中一種變體,廣義標簽多重伯努利(GLMB),由多目標追蹤領域大佬Ba-Ngu Vo提出,甚至可以實現長時間追蹤一百萬數量以上的目標。當然還有更新的

總結來說,數據關聯在多目標追蹤問題中是非常重要且困難的一步,傳統方法被計算量限制,新理論仍然處於一個探索階段,相信隨着數據關聯研究的突破,多目標追蹤問題的處理可以被進一步完善。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM