智慧交通day02-车流量检测实现04:卡尔曼滤波器
1、背景介紹
卡爾曼濾波(Kalman)無論是在單目標還是多目標領域都是很常用的一種算法,我們將卡爾曼濾波看做一種運動模型,用來對目標的位置進行預測,并且利用預測結果對跟蹤的目標進行修正,屬于自動控制理論中的一種方法。
在對視頻中的目標進行跟蹤時,當目標運動速度較慢時,很容易將前后兩幀的目標進行關聯,如下圖所示:
?如果目標運動速度比較快,或者進行隔幀檢測時,在后續幀中,目標A已運動到前一幀B所在的位置,這時再進行關聯就會得到錯誤的結果,將A‘與B關聯在一起。
?那怎么才能避免這種出現關聯誤差呢?我們可以在進行目標關聯之前,對目標在后續幀中出現的位置進行預測,然后與預測結果進行對比關聯,如下圖所示:
?我們在對比關聯之前,先預測出A和B在下一幀中的位置,然后再使用實際的檢測位置與預測的位置進行對比關聯,只要預測足夠精確,幾乎不會出現由于速度太快而存在的誤差。
卡爾曼濾波就可以用來預測目標在后續幀中出現的位置,如下圖所示,卡爾曼濾波器就可以根據前面五幀數據目標的位置,預測第6幀目標的位置。
?卡爾曼濾波器最大的優點是采用遞歸的方法來解決線性濾波的問題,它只需要當前的測量值和前一個周期的預測值就能夠進行狀態估計。由于這種遞歸方法不需要大量的存儲空間,每一步的計算量小,計算步驟清晰,非常適合計算機處理,因此卡爾曼濾波受到了普遍的歡迎,在各種領域具有廣泛的應用前景。
2.原理介紹
我們假設一個簡單的場景,有一輛小車在行駛,它的速度是v,可以通過觀測得到它的位置p,也就是說我們可以實時的觀測小車的狀態。
- 場景描述
小車在某一時刻的狀態表示為一個向量:
??
雖然我們比較確定小車此時的狀態,無論是計算還是檢測都會存在一定的誤差,所以我們只能認為當前狀態是其真實狀態的一個最優估計。那么我們不妨認為當前狀態服從一個高斯分布,如下圖所示:
?高斯分布的中心就是圖中:
因為我們有兩個變量,所以可以用一個協方差矩陣P?k??來表示數據之間的相關性和離散程度:
??
- 預測下一時刻的狀態
下面我們需要通過小車的當前狀態,運用一些物理學的知識來預測它的下一個狀態,即通過k-1時刻的位置和速度,可以推測下一個時刻的狀態為:
?寫成矩陣形式就是:
?????此處的F?k??就是狀態轉移矩陣。
系統的不確定性和相關性可以通過協方差矩陣描述,那根據當前協方差矩陣預測下一時刻的協方差矩陣:
???在這里我們用到了協方差的性質:
- 增加系統的內部控制
我們需要對小車進行控制,比如加速和減速,假設某個時刻我們施加的加速度是\color{green}{\mathbf{a}}a,那么下一時刻的位置和速度則應該為:
?再寫成矩陣的形式:
???
????其中,Bk??我們稱為狀態控制矩陣,而u?k??稱為狀態控制向量,前者表明的是加速減速如何改變小車的狀態,而后者則表明控制的力度大小和方向。
- 考慮系統的外部影響
- 對觀測數據的預測
前面我們通過小車的上一個狀態,對它的當前狀態做了預測,此時我們要考慮對于小車的狀態能夠觀測到什么呢?
小車的當前狀態和觀測到的數據應該具備某種特定的關系,假設這個關系通過矩陣表示為H?k??,如下圖所示:
在此前對小車所做的預測狀態下,我們的觀測值為:
????那我們就完成了對觀測值的預測:
- 實際的觀測結果
前面推測小車當前的狀態,推測了我們的觀測數據,但是現實和理想之間必然是存在差距的,我們預測的觀測結果和實際的觀測結果可能如下圖所示:
?卡爾曼濾波需要做的最重要的最核心的事就是融合預測和觀測的結果,充分利用兩者的不確定性來得到更加準確的估計。通俗來說就是怎么從上面的兩個橢圓中來得到中間淡黃色部分的高斯分布,看起來這是預測和觀測高斯分布的重合部分,也就是概率比較高的部分。
- 高斯分布的乘積
一維高斯分布來分析比較簡單點
兩個服從高斯分布的函數相乘:
????????對于任意兩個高斯分布,將二者相乘之后還是高斯分布,我們利用高斯分布的兩個特性進行求解,其一是均值處分布函數取極大值,其二是均值處分布曲線的曲率為其二階導數,我們可以求出:
重新歸一化,使總概率為1,可以得到
圖中藍色和橙色兩個波形的直接乘積是黃色這個波形,紫色是計算了均值和方差的記過,黃色的分布可以通過紫色的波形乘上一個系數得到。
對于高階的高斯分布:
- 新的高斯分布
通過預測和觀測值的高斯分布的乘積得到的即是卡爾曼濾波的最優估計
在新的均值和方差計算公式中,我們令:
將式(11)中的兩個式子相同的部分用 k 表示為(13),下面進一步將式(13)寫成矩陣的形式:
如果 Σ 表示高斯分布的協方差,u 表示每個維度的均值,將它們寫成矩陣形式就是:
前面我們已經得到了預測結果和觀測結果服從的兩個高斯分布,如下:
預測部分:
測量部分:
將它們放到式(15)中算出它們之間的重疊部分
?由式(14)可得卡爾曼增益為:
所以我們可以進行如下推導,將式(16)和式(17)兩邊化簡下,注意K可以展開得到卡爾曼濾波對當前狀態(基于預測和觀測的)最優估計的計算方程:
??K?′??就是卡爾曼增益:
?
- 實際中的計算方法
在實際使用卡爾曼濾波的時候,計算的步驟一般為:
預測階段
更新階段
最重要的是,我們要時刻關注不斷迭代的系統變量,分別是系統的狀態:x,其誤差協方差矩陣:P,和卡爾曼增益:K。
在實際應用時,對Q和R的選擇要依據實際情況來定,可以不斷調試來尋找一個最優解,也可以是可變的,只要最終效果能夠更好。
總結
1.卡爾曼濾波器中在目標跟蹤中的應用
卡爾曼濾波器通過預測目標在后續幀中的位置,避免在進行目標關聯時出現誤差
濾波器根據上一時刻( k -1 時刻) 的值來估計當前時刻( k 時刻) 的狀態,得到 k 時刻的先驗估計值; 然后使用當前時刻的測量值來更正這個估計值,得到當前時刻的估計值。
- 目標不確定性和相關性的度量
- 預測目標的下一時刻的狀態
- 系統內部的控制和外部的影響
- 利用觀測值進行修正
- 實際應用中:預測和更新兩個階段
總結
以上是生活随笔為你收集整理的智慧交通day02-车流量检测实现04:卡尔曼滤波器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: smzdm 扫地机器人_堪称米家最值!米
- 下一篇: 聚类(Clustering):hiera