這一篇文章主要講解馬氏距離、匈牙利匹配算法、卡爾曼濾波等三個部分,是為了后續講解Deep Sort多目標跟蹤提供先驗知識。
一、馬氏距離
1⃣️ 馬氏距離定義:
馬氏距離是由印度統計學家馬哈拉諾比斯(
P. C. Mahalanobis)提出的,表示數據的協方差距離。它是一種有效的計算兩個未知樣本集的相似度的方法或者計算一個樣本點與一個分布的距離。與歐氏距離不同的是它考慮到各種特性之間的聯系(例如:一條關於身高的信息會帶來一條關於體重的信息,因為兩者是有關聯的)並且是尺度無關的(scale-invariant),即獨立於測量尺度。
馬氏距離可以衡量一個隨機變量和一個分布之間的距離:
對於一個均值為
、協方差矩陣為
的多維隨機變量:



馬氏距離為:
馬氏距離也可以定義為兩個服從同一分布並且其協方差矩陣為Σ的隨機變量X與Y的差異程度:

如果協方差矩陣為單位矩陣,則馬氏距離簡化為歐式距離;如果協方差矩陣為對角矩陣,也稱為正規化的馬氏距離。
2⃣️ 馬氏距離的重要意義
(1)為什么要使變量去掉單位尺度?
(2)為什么馬氏距離是與尺度無關的?
(3)協方差矩陣在馬氏距離中的作用,為什么要使變量間線性無關?
二、匈牙利算法——解決二分圖匹配問題
參考博文:匈牙利算法和帶權重的匈牙利算法:
https://zhuanlan.zhihu.com/p/62981901
二分圖:對於無向圖G=(V,E),如果存在一個划分使V中的頂點分為兩個互不相交的子集,且每個子集中任意兩點間不存在邊 ϵ∈E,則稱圖G為一個二分圖。
二分圖如上圖所示,黑線代表初步匹配的連線,因為需要1對1匹配,后續采用匈牙利匹配算法得到紅線。
1⃣️ 簡介
匈牙利算法是一種在
多項式時間內求解任務分配問題的
組合優化
算法,並推動了后來的原始對偶方法。美國數學家哈羅德·庫恩於1955年提出該算法。此算法之所以被稱作匈牙利算法,是因為算法很大一部分是基於以前
匈牙利數學家Dénes Kőnig和Jenő Egerváry的工作之上創建起來的。
2⃣️ 匈牙利算法
每次執行得到的結果不一樣,和順序有關,得到的解不一定是最優解。下面以一個簡單的例子作為說明:
(1) 給左1號分配女生,先從右1 開始,右1仍是單身,所以匹配上
(2)給2號分配女生,從右2開始,能匹配上
(3)給3號分配女生,從右1開始,右1被占,問右2,右2也被占,那就先問問右1能否換人,左1說我和右2有連接,我可以讓給你,但是我先問問右2肯不肯和我匹配,右2被占,那右2說我問問左2,左2可以和右3進行匹配,那問題就迎刃而解,2-3,1-2,3-1匹配上。
(4)給4號分配女生,從右3開始,依據上面的流程,發現1,2,3實在不能換人,所以4號就沒法進行匹配。
示意圖如下:
(1) (2) (3)
(4)
3⃣️ 帶權值的匈牙利算法
匈牙利算法認為上述每條線的重要性是等價的,但實際上每條線都有自己的重要性,所以引入帶權值的匈牙利算法。
匹配原則:匹配的原則是只和 權重與左邊分數(頂標)相同的邊 進行匹配,若找不到邊匹配,對此條路徑的所有左邊頂點的頂標減d,所有右邊頂點的頂標加d。參數d我們在這里取值為0.1。
(1)給左側右側的結點進行標分:
(2)從左1開始,分數>=(左標+右標分數)的線先匹配上
(3)到左2, 左2可以與右3鏈接
(4)到左3,左3只能連接右1,但右1和左1存在連線,則沖突,則對沖突線的所有左邊節點-d(取10),右邊節點+d。得到:
此時左3可以找到右2進行匹配,得到:
(5)對左4進行匹配,沖突,-d得到0.1,再沖突-d得到0.0, 所以放棄對左4進行匹配。
在引入權重后,分配多了依據,匹配成功率能夠大大提高。
三、kalman濾波
參考博文:https://blog.csdn.net/baidu_38172402/article/details/82289998
算法核心思想:根據當前的儀器“測量值”和上一時刻的“預測值”和“誤差”,計算得到當前的最優量,在預測下一刻的值。kalman濾波的特點在於誤差納入計算,分為預測誤差和測量誤差兩種。在一切的測量方法里,都可以使用kalman濾波來優化。
博文提供兩個具體的例子:船位的測量和室內溫度的測量。
kalman濾波分為5個步驟:
1⃣️ 一般形式的kalman filter:
2⃣️ 便於理解的5個步驟:
(1)由上一時刻的狀態預測當前時刻的狀態,得到預測值
(2)由上一次時刻的誤差協方差和過程噪聲預測新的誤差
(3)計算kalman增益
(4)結合測量量,對結果進行修正
(5) 為下一步估計下一時刻的最優值進行更新操作