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