0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

卡爾曼濾波是如何解決目標(biāo)跟蹤問(wèn)題的?

冬至子 ? 來(lái)源:CV研習(xí)社 ? 作者:愛做菜的煉丹師 ? 2023-07-14 11:41 ? 次閱讀

初探卡爾曼濾波的廣泛應(yīng)用

卡爾曼濾波是基于線性系統(tǒng)的基礎(chǔ)上,測(cè)量方差已知的前提下,在包含一系列噪聲的觀測(cè)數(shù)據(jù)中進(jìn)行系統(tǒng)狀態(tài)的最優(yōu)估計(jì),得到誤差最小的估計(jì)值。

眾所周知該方法經(jīng)久不衰幾十年,涉及領(lǐng)域包括機(jī)器人導(dǎo)航、運(yùn)動(dòng)控制、傳感器融合、圖像處理等。僅在無(wú)人駕駛中,我們就多處看到它的身影,比如:

  • 感知模塊
  • 融合模塊
  • 定位模塊
  • 控制模塊

以感知中目標(biāo)跟蹤為例,卡爾曼濾波可以用來(lái)預(yù)測(cè)下一時(shí)刻行人運(yùn)動(dòng)的最優(yōu)位置,不僅可以濾除檢測(cè)帶來(lái)的虛警,還可以彌補(bǔ)偶發(fā)的漏檢,使目標(biāo)的運(yùn)動(dòng)過(guò)程更加平滑。如下圖所示:從T0到T7時(shí)刻,檢測(cè)器對(duì)行人A的觀測(cè)結(jié)果大部分是良好的,但是在T3時(shí)刻出現(xiàn)了虛警B,此時(shí)卡爾曼濾波器會(huì)根據(jù)T3的前后時(shí)刻來(lái)判斷行人B是一個(gè)新的對(duì)象還是噪聲;在T4時(shí)刻檢測(cè)器再次失效,行人A消失了,此時(shí)卡爾曼濾波器會(huì)根據(jù)T3時(shí)刻行人A的位置來(lái)估計(jì)T4時(shí)刻A可能運(yùn)動(dòng)到某處作為結(jié)果。

圖片

既然線性系統(tǒng)是卡爾曼濾波的前提,那么為何它還能如此廣泛應(yīng)用?

以車輛運(yùn)動(dòng)模型為例,雖然在整個(gè)運(yùn)動(dòng)過(guò)程中很難擬合出其運(yùn)動(dòng)規(guī)律,但是如果把每次運(yùn)動(dòng)的時(shí)間間隔都縮的很小,那么就可以近似的將車輛的運(yùn)動(dòng)看成勻速、勻加速、均減速等。

入門卡爾曼濾波的基本原理

卡爾曼濾波器采用遞歸的方式來(lái)解決線性問(wèn)題,只需上一個(gè)時(shí)刻的估計(jì)值和當(dāng)前的測(cè)量值來(lái)進(jìn)行狀態(tài)估計(jì),并使估計(jì)均方誤差最小。作為初步理解,我們只需要看下面兩個(gè)方程:

預(yù)測(cè)方程如下所示:

圖片

其中A是狀態(tài)轉(zhuǎn)移矩陣,用來(lái)表達(dá)如何將上一時(shí)刻的狀態(tài)量通過(guò)某種關(guān)系轉(zhuǎn)換成當(dāng)前狀態(tài);B是控制輸入矩陣,但是在實(shí)際應(yīng)用中這一項(xiàng)通常為0;w表示的過(guò)程噪聲,是期望為0,方程為Q的高斯白噪聲。

觀測(cè)方程如下所示:

圖片

很多初學(xué)者會(huì)對(duì)觀測(cè)方程產(chǎn)生疑問(wèn),為什么它可以由狀態(tài)值和觀測(cè)誤差來(lái)表示?觀測(cè)量不是指?jìng)鞲衅髦苯虞敵鰡幔?/p>

其實(shí)它是對(duì)傳感器測(cè)量的模擬仿真,用真值加上誤差來(lái)表征傳感器的測(cè)量值,而H可以看成是狀態(tài)量到觀測(cè)量的一種變換關(guān)系。我們將狀態(tài)變換過(guò)程和模擬的觀測(cè)過(guò)程合起來(lái)就是下面的流程圖:

圖片

因此使用卡爾曼濾波器解決實(shí)際問(wèn)題,就需要滿足兩大基本假設(shè):

  • 需要滿足線性系統(tǒng)
  • 需要符合高斯分布

進(jìn)階卡爾曼濾波的公式推演

卡爾曼濾波過(guò)程有五大核心公式,手?jǐn)]版本如下:公式(1)(2)屬于預(yù)測(cè)過(guò)程,公式(3)(4)(5)屬于狀態(tài)更新。我們一條條來(lái)解釋這幾個(gè)公式:

圖片

圖片

上式是先驗(yàn)估計(jì)的求解過(guò)程:由上一時(shí)刻的最優(yōu)估計(jì)值結(jié)合控制輸入和環(huán)境噪聲來(lái)預(yù)測(cè)當(dāng)前的狀態(tài)估計(jì)值。在很多時(shí)候該公式會(huì)被簡(jiǎn)化成當(dāng)前估計(jì)值等于上一時(shí)刻最優(yōu)估計(jì)+噪聲,在目標(biāo)跟蹤任務(wù)中BU項(xiàng)是可以被忽略的,A表示的是狀態(tài)轉(zhuǎn)移矩陣或者說(shuō)是運(yùn)動(dòng)模型,如何準(zhǔn)確的構(gòu)建狀態(tài)矩陣需要用戶結(jié)合自身場(chǎng)景來(lái)確定。所以像EKF,UKF等并非從算法上對(duì)KF做了什么優(yōu)化,而是搭建更合適的運(yùn)動(dòng)模型來(lái)模擬實(shí)際場(chǎng)景。

圖片

上式是先驗(yàn)估計(jì)的協(xié)方差求解過(guò)程:由上一時(shí)刻的先驗(yàn)估計(jì)協(xié)方差P和過(guò)程噪聲Q決定(推導(dǎo)的過(guò)程可以對(duì)公式(1)的當(dāng)前估計(jì)值求取協(xié)方差即可得到)。這里我們會(huì)發(fā)現(xiàn)先驗(yàn)估計(jì)協(xié)方差P中是包含過(guò)程噪聲Q的,所以當(dāng)P越小會(huì)導(dǎo)致卡爾曼增益K就越?。ㄟ@里需要結(jié)合卡爾曼增益K的公式一起看)。

圖片

上式是更新卡爾曼增益的過(guò)程:它其實(shí)是一個(gè)中間變量,我們?cè)谡f(shuō)先驗(yàn)估計(jì)協(xié)方差P的時(shí)候提到,P中是包括過(guò)程噪聲Q的,那么結(jié)合該式可以發(fā)現(xiàn)卡爾曼增益K的調(diào)節(jié)本質(zhì)上就是調(diào)節(jié)Q和R兩個(gè)噪聲值。

  • K越小越相信模型的預(yù)測(cè)估計(jì);
  • K越大越相信傳感器中的觀測(cè);
  • 所以K的值和傳感器精度以及環(huán)境誤差有關(guān);

圖片

上式是最優(yōu)估計(jì)的修正過(guò)程:這里Z是我們的觀測(cè)值,X相當(dāng)于我們的預(yù)測(cè)值,直接拿觀測(cè)值和預(yù)測(cè)值做差,用K來(lái)決定是相信觀測(cè)值Z多一些還是相信預(yù)測(cè)值X多一些。

圖片

上式是更新后驗(yàn)估計(jì)的協(xié)方差過(guò)程:主要用于下一次迭代的輸入,屬于一個(gè)中間變量,一旦P0這個(gè)初始值確定后,該值會(huì)慢慢趨于收斂(通過(guò)調(diào)Q)。算法調(diào)優(yōu)時(shí)可以不用特別關(guān)注該項(xiàng)。

深入卡爾曼濾波的參數(shù)調(diào)優(yōu)

卡爾曼濾波是一個(gè)需要手動(dòng)調(diào)參的算法,在上面的介紹中我們提到最優(yōu)估計(jì)值是先驗(yàn)估計(jì)和觀測(cè)值之間的權(quán)衡,而這個(gè)權(quán)重是通過(guò)卡爾曼增益K進(jìn)行調(diào)節(jié)的。通過(guò)K的推導(dǎo)公式可以發(fā)現(xiàn)它的大小取決于超參數(shù)Q和R。

回顧一下上一節(jié)公式中的Q和R是什么?

在卡爾曼濾波的過(guò)程中有兩種噪聲,過(guò)程噪聲和觀測(cè)噪聲:

  • 過(guò)程噪聲:外界環(huán)境引入的誤差;
  • 觀測(cè)噪聲:傳感器自身的誤差;

它們均符合正態(tài)分布,Q就是過(guò)程噪聲的方差,Q值越小表示對(duì)預(yù)測(cè)值的信任度越高,但是過(guò)小的Q也會(huì)引起系統(tǒng)發(fā)散;Q值越大表示對(duì)測(cè)量值的信任度就會(huì)變高。

R是觀測(cè)噪聲的方差,R值越小表示系統(tǒng)的初始增益大,收斂快更快,但是在穩(wěn)態(tài)情況下引入過(guò)多的噪聲容易出現(xiàn)震蕩不收斂的現(xiàn)象;R值越大表示對(duì)測(cè)量值的信任度降低,響應(yīng)也會(huì)隨著變慢。

另一個(gè)超參數(shù)就是P的初始值,它決定了濾波器初始的工作狀態(tài),更準(zhǔn)確的說(shuō)就是濾波器初始的收斂速度。調(diào)大P0能夠迭代出較大的初始增益,相應(yīng)的使濾波器更快的響應(yīng)輸入信號(hào)的變化。

所以卡爾曼濾波調(diào)參是在P0,Q,R之間追求系統(tǒng)和濾波之前的收斂平衡。對(duì)于初學(xué)者而言,通常不太關(guān)心P0,只需不為0即可;而Q和R需要一點(diǎn)點(diǎn)嘗試,適當(dāng)?shù)脑黾?減小參數(shù),反復(fù)迭代才能逐步收斂于一個(gè)穩(wěn)定值。

實(shí)踐卡爾曼濾波的目標(biāo)跟蹤

多目標(biāo)跟蹤有很多方法,可以使用當(dāng)前幀和之前幀中的信息做當(dāng)前時(shí)刻的目標(biāo)跟蹤;也可以對(duì)每一幀的預(yù)測(cè)使用所有幀中的信息尋找全局最優(yōu)。

這里我們基于卡爾曼濾波算法將運(yùn)動(dòng)模型看似線性勻速運(yùn)動(dòng)來(lái)估計(jì)幀間位移,并結(jié)合匈牙利算法進(jìn)行預(yù)測(cè)的外接框和檢測(cè)的外接框做數(shù)據(jù)匹配,最終選擇合適的目標(biāo)外接框作為最優(yōu)跟蹤BBox。應(yīng)用于圖像空間需要以下幾步:

  • IoU作為前后幀間目標(biāo)關(guān)聯(lián)的衡量標(biāo)準(zhǔn);
  • 卡爾曼濾波器預(yù)測(cè)目標(biāo)的當(dāng)前位置;
  • 匈牙利算法進(jìn)行檢測(cè)框和預(yù)測(cè)框數(shù)據(jù)關(guān)聯(lián);

估計(jì)模型

這里我們采用卡爾曼濾波對(duì)目標(biāo)的軌跡進(jìn)行預(yù)測(cè),并且使用置信度較高的跟蹤結(jié)果進(jìn)行預(yù)測(cè)的修正。

數(shù)據(jù)關(guān)聯(lián)

這里我們采用帶權(quán)重的匈牙利算法,使用IoU構(gòu)建的權(quán)重作為成本矩陣,當(dāng)然這里的權(quán)重還可以以不同維度的特征做加權(quán)。

實(shí)驗(yàn)例子

下面是一個(gè)基于C++實(shí)現(xiàn)的檢測(cè)+跟蹤的例子,直接原生的算法未做任何優(yōu)化,所以并非工程可用,但也更能暴露算法本身的缺陷,從而加以針對(duì)性的優(yōu)化策略。從視頻中我們可以看到基于卡爾曼濾波+數(shù)據(jù)關(guān)聯(lián)的跟蹤算法對(duì)獨(dú)立目標(biāo)具有穩(wěn)定的輸出,但是當(dāng)目標(biāo)較遠(yuǎn)時(shí)或者存在遮擋的情況下,id就會(huì)發(fā)生漂移。我們可以從以下三個(gè)方面來(lái)分析:

  • 檢測(cè)角度:基于檢測(cè)的跟蹤算法,必然檢測(cè)的穩(wěn)定性是關(guān)鍵,與其把重心放在跟蹤算法的優(yōu)化上,不如先把目標(biāo)檢測(cè)弄穩(wěn)定,好在當(dāng)下圖像級(jí)別的目標(biāo)檢測(cè)已經(jīng)達(dá)到了很高的性能,具備了模型小,推理快,精度高的優(yōu)勢(shì)。
  • 數(shù)據(jù)關(guān)聯(lián):視頻中的車輛跟蹤失效,很大一部分原因出在當(dāng)前幀的檢測(cè)框和基于上一幀的預(yù)測(cè)框之間外接框匹配算法上,這里僅使用了IoU來(lái)匹配兩個(gè)框的關(guān)聯(lián)性,但是此類形態(tài)上的重合度無(wú)法解決目標(biāo)被遮擋后的匹配問(wèn)題,而且在遠(yuǎn)距離處外接框較小,當(dāng)目標(biāo)個(gè)數(shù)較多時(shí),很容易造成混亂。至于如何優(yōu)化數(shù)據(jù)關(guān)聯(lián)算法,小伙伴們可以考慮特征級(jí)別或者多維度級(jí)聯(lián)的方式!
  • 估計(jì)模型:這里說(shuō)的就是卡爾曼濾波算法了,我們用的是均速模型表針車輛的運(yùn)動(dòng)模型,雖然極小的時(shí)間間隔中,這種模型帶來(lái)的誤差也能接受,但是為了更好的構(gòu)建運(yùn)動(dòng)方程,也可以考慮采用擴(kuò)展卡爾曼或者無(wú)跡卡爾曼來(lái)擬合車輛的非線性運(yùn)行。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2542

    文章

    50302

    瀏覽量

    750279
  • 濾波器
    +關(guān)注

    關(guān)注

    159

    文章

    7673

    瀏覽量

    177231
  • 狀態(tài)機(jī)
    +關(guān)注

    關(guān)注

    2

    文章

    490

    瀏覽量

    27438
  • 卡爾曼濾波
    +關(guān)注

    關(guān)注

    3

    文章

    162

    瀏覽量

    24611
  • C++語(yǔ)言
    +關(guān)注

    關(guān)注

    0

    文章

    147

    瀏覽量

    6945
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    卡爾濾波

    卡爾濾波的估計(jì)值能很好的逼近真實(shí)值,我的疑惑是,這和濾波有什么關(guān)系,請(qǐng)高手介紹下卡爾算法是如
    發(fā)表于 07-04 22:57

    圖書分享:卡爾濾波算法的幾何解

    網(wǎng)上搜到一篇關(guān)于卡爾濾波算法的論文,對(duì)低維卡爾濾波算法作了幾
    發(fā)表于 06-11 15:28

    卡爾濾波有哪些應(yīng)用

    卡爾濾波風(fēng)力發(fā)電機(jī)中的風(fēng)速估計(jì),轉(zhuǎn)速估計(jì)甚至扭矩估計(jì)都設(shè)計(jì)到卡爾濾波,如果只是單一傳感變量的
    發(fā)表于 07-12 06:00

    卡爾濾波在被動(dòng)目標(biāo)跟蹤系統(tǒng)中的應(yīng)用

    建立了雙觀測(cè)站被動(dòng)跟蹤系統(tǒng)的非線性濾波模型,通過(guò)擴(kuò)展卡爾濾波方法在該非線性模型下的具體實(shí)現(xiàn)步驟。分析了
    發(fā)表于 04-18 15:32 ?50次下載
    <b class='flag-5'>卡爾</b><b class='flag-5'>曼</b><b class='flag-5'>濾波</b>在被動(dòng)<b class='flag-5'>目標(biāo)</b><b class='flag-5'>跟蹤</b>系統(tǒng)中的應(yīng)用

    基于卡爾濾波與Mean Shift的運(yùn)動(dòng)車輛跟蹤

    針對(duì)Mean Shift算法不能跟蹤快速目標(biāo)、跟蹤過(guò)程中窗寬的大小保持不變的特點(diǎn)。首先,卡爾濾波
    發(fā)表于 04-08 09:21 ?25次下載

    基于霍夫-無(wú)跡卡爾濾波目標(biāo)檢測(cè)與跟蹤

    采用霍夫變換法對(duì)雷達(dá)目標(biāo)進(jìn)行起始,解決了機(jī)動(dòng)目標(biāo)的非線性強(qiáng)的問(wèn)題,得到精確的航跡起始初值信息,并將初值信息作為無(wú)跡卡爾濾波
    發(fā)表于 08-19 17:48 ?42次下載

    卡爾濾波算法

    卡爾濾波算法
    發(fā)表于 12-17 17:22 ?52次下載

    如何使用FPGA實(shí)現(xiàn)純方位目標(biāo)跟蹤的偽線性卡爾濾波

    偽線性卡爾濾波器廣泛應(yīng)用于純方位目標(biāo)跟蹤中,其遞歸性非常適合于硬件實(shí)現(xiàn)。結(jié)合實(shí)際項(xiàng)目,在對(duì)數(shù)據(jù)流進(jìn)行分析的基礎(chǔ)上,使用xilinx公司vi
    發(fā)表于 03-10 17:13 ?15次下載

    結(jié)合卡爾濾波等的四旋翼無(wú)人機(jī)目標(biāo)跟蹤算法

    結(jié)合卡爾濾波等的四旋翼無(wú)人機(jī)目標(biāo)跟蹤算法
    發(fā)表于 06-23 15:00 ?24次下載

    卡爾濾波在被動(dòng)目標(biāo)跟蹤系統(tǒng)中的應(yīng)用

    簡(jiǎn)述卡爾濾波在被動(dòng)目標(biāo)跟蹤系統(tǒng)中的應(yīng)用
    發(fā)表于 10-18 10:11 ?0次下載

    基于擴(kuò)展卡爾濾波的機(jī)動(dòng)目標(biāo)航跡跟蹤

    針對(duì)高速飛行目標(biāo)航跡跟蹤問(wèn)題,進(jìn)行了擴(kuò)展卡爾濾波的曲線擬和仿真試驗(yàn)研究。首先建立目標(biāo)
    發(fā)表于 02-15 17:25 ?1次下載

    卡爾濾波(KF)與擴(kuò)展卡爾(EKF)

    卡爾濾波是一種高效率的遞歸濾波器(自回歸濾波器), 它能夠從一系列的不完全包含噪聲的測(cè)量(英文:measurement)中,估計(jì)動(dòng)態(tài)系統(tǒng)的
    發(fā)表于 05-10 17:51 ?3次下載

    淺析卡爾濾波

    在 飛行器姿態(tài)計(jì)算 中,卡爾濾波是最常用的姿態(tài)計(jì)算方法之一。今天就以目前的理解講以下卡爾濾波
    的頭像 發(fā)表于 06-14 10:44 ?1941次閱讀

    什么是卡爾濾波?卡爾濾波的作用是什么

    一、什么是卡爾濾波? 你可以在任何含有不確定信息的動(dòng)態(tài)系統(tǒng)中使用卡爾濾波,對(duì)系統(tǒng)下一步的走向
    的頭像 發(fā)表于 08-08 09:39 ?6802次閱讀
    什么是<b class='flag-5'>卡爾</b><b class='flag-5'>曼</b><b class='flag-5'>濾波</b>?<b class='flag-5'>卡爾</b><b class='flag-5'>曼</b><b class='flag-5'>濾波</b>的作用是什么

    卡爾濾波是什么 卡爾濾波目標(biāo)追蹤技術(shù)分析

    卡爾濾波以及其擴(kuò)展算法能夠應(yīng)用于目標(biāo)狀態(tài)估計(jì),如果這個(gè)目標(biāo)是行人,那么就是行人狀態(tài)估計(jì)(或者說(shuō)行人追蹤),如果這個(gè)
    的頭像 發(fā)表于 04-29 09:46 ?745次閱讀
    <b class='flag-5'>卡爾</b><b class='flag-5'>曼</b><b class='flag-5'>濾波</b>是什么 <b class='flag-5'>卡爾</b><b class='flag-5'>曼</b><b class='flag-5'>濾波</b>與<b class='flag-5'>目標(biāo)</b>追蹤技術(shù)分析