0%

卡尔曼滤波家族

多目标跟踪系统里,卡尔曼滤波几乎是标配:ByteTrack 用它预测轨迹位置,DeepSORT 用它做运动关联,几乎所有基于检测的跟踪器都把它当作运动模型的标准件。但很多人对它的理解停留在"调参能用"的层面:过程噪声协方差 QQ 和观测噪声协方差 RR 是拍脑袋设的,预测更新两步的数学含义说不清,更不知道它为什么对非线性系统失效、以及后续的 EKF、UKF、粒子滤波各自解决了什么问题。本文从贝叶斯滤波的统一框架出发,完整推导卡尔曼滤波(KF),再介绍它的三个扩展:扩展卡尔曼滤波(EKF)、无迹卡尔曼滤波(UKF)与粒子滤波(PF),最后讨论它们在多目标跟踪中的实际用法与选择依据。

第一部分:状态估计问题与贝叶斯滤波框架

问题设定

状态估计要解决的是这样一个问题:我们无法直接观测系统的真实状态,只能通过带噪声的观测来推断它。以跟踪为例,目标的真实位置 (x,y)(x, y) 是状态,但检测器给出的框位置带噪声,且可能漏检、误检。

形式化地说,系统由两个方程描述:

状态转移方程(描述状态如何随时间演化):

xk=f(xk1)+wkx_k = f(x_{k-1}) + w_k

观测方程(描述状态如何产生观测):

zk=h(xk)+vkz_k = h(x_k) + v_k

其中 xkRnx_k \in \mathbb{R}^nkk 时刻的状态,zkRmz_k \in \mathbb{R}^m 是观测,wkw_k 是过程噪声(建模状态演化中的不确定性),vkv_k 是观测噪声,ffhh 分别是状态转移函数与观测函数。噪声的统计特性通常假设为零均值高斯:

wkN(0,Qk),vkN(0,Rk)w_k \sim \mathcal{N}(0, Q_k), \quad v_k \sim \mathcal{N}(0, R_k)

QkQ_k 是过程噪声协方差,RkR_k 是观测噪声协方差。这两个矩阵是卡尔曼滤波里仅有的两个"旋钮",它们的比值决定了滤波器是更信任预测还是更信任观测,这个直觉在后面的推导中会反复出现。

贝叶斯滤波的统一视角

状态估计的终极目标是求后验分布 p(xkz1:k)p(x_k \mid z_{1:k}),即在给定截至当前时刻全部观测 z1:k={z1,,zk}z_{1:k} = \{z_1, \ldots, z_k\} 的条件下,状态 xkx_k 的概率分布。贝叶斯滤波给出了求解这个分布的递归框架,分两步:

预测步:用状态转移方程,从 k1k-1 时刻的后验推出 kk 时刻的先验:

p(xkz1:k1)=p(xkxk1)p(xk1z1:k1)dxk1p(x_k \mid z_{1:k-1}) = \int p(x_k \mid x_{k-1}) \cdot p(x_{k-1} \mid z_{1:k-1}) \, dx_{k-1}

更新步:用新观测 zkz_k 修正先验,得到后验(贝叶斯公式):

p(xkz1:k)=p(zkxk)p(xkz1:k1)p(zkz1:k1)p(x_k \mid z_{1:k}) = \frac{p(z_k \mid x_k) \cdot p(x_k \mid z_{1:k-1})}{p(z_k \mid z_{1:k-1})}

其中 p(zkxk)p(z_k \mid x_k) 是似然(由观测方程与观测噪声决定),分母是归一化常数。

为什么所有滤波方法都是同一个框架
卡尔曼滤波、扩展卡尔曼滤波、无迹卡尔曼滤波、粒子滤波解决的是同一个问题(递推估计后验分布),区别只在于对这个积分和乘积的具体计算方式做了不同近似。KF 假设一切线性高斯,解析计算;EKF 做一阶线性化;UKF 用 sigma 点做确定性采样近似;PF 用蒙特卡洛随机采样近似。理解这个统一框架,就能理解它们各自的适用边界。

第二部分:卡尔曼滤波(KF)

线性高斯假设

卡尔曼滤波(Kalman Filter,1960)是贝叶斯滤波在线性高斯情形下的解析解。它要求两个方程都是线性的,噪声都是高斯的:

xk=Fkxk1+Bkuk+wkx_k = F_k x_{k-1} + B_k u_k + w_k

zk=Hkxk+vkz_k = H_k x_k + v_k

其中 FkF_k 是状态转移矩阵,BkB_k 是控制输入矩阵,uku_k 是控制输入(如加速度指令),HkH_k 是观测矩阵。线性高斯假设的关键好处是:高斯分布经过线性变换仍然是高斯分布,因此后验分布始终是高斯的,只需跟踪均值和协方差两个量即可,无需维护完整分布。

我们用 x^kk1\hat{x}_{k|k-1} 表示预测状态(基于 z1:k1z_{1:k-1}xkx_k 的估计),x^kk\hat{x}_{k|k} 表示更新后的状态(基于 z1:kz_{1:k}),Pkk1P_{k|k-1}PkkP_{k|k} 是对应的协方差。

预测步推导

预测步利用状态转移方程传播均值和协方差。均值的传播:

x^kk1=Fkx^k1k1+Bkuk\hat{x}_{k|k-1} = F_k \hat{x}_{k-1|k-1} + B_k u_k

协方差的传播需要计算 xkx_k 相对其均值的偏差。由 xk=Fkxk1+wkx_k = F_k x_{k-1} + w_k,偏差为 Fk(xk1x^k1k1)+wkF_k (x_{k-1} - \hat{x}_{k-1|k-1}) + w_k,因此:

Pkk1=E[(xkx^kk1)(xkx^kk1)]=FkPk1k1Fk+QkP_{k|k-1} = \mathbb{E}\left[ (x_k - \hat{x}_{k|k-1})(x_k - \hat{x}_{k|k-1})^{\top} \right] = F_k P_{k-1|k-1} F_k^{\top} + Q_k

注意协方差传播是 FPFF P F^{\top} 而不是 FPF P,因为协方差是二阶矩,矩阵需要双侧相乘。+Qk+Q_k 表示过程噪声持续注入不确定性:预测步总是让不确定性变大,这正是"预测不如观测可信"的数学来源。

更新步推导

更新步的关键概念是新息(Innovation):预测观测与实际观测的差。

预测观测:z^k=Hkx^kk1\hat{z}_k = H_k \hat{x}_{k|k-1}

新息:

yk=zkHkx^kk1y_k = z_k - H_k \hat{x}_{k|k-1}

新息的协方差(先验观测协方差):

Sk=HkPkk1Hk+RkS_k = H_k P_{k|k-1} H_k^{\top} + R_k

卡尔曼增益 KkK_k 衡量"预测与观测各信多少",其推导来自最小化后验协方差的迹:

Kk=Pkk1HkSk1K_k = P_{k|k-1} H_k^{\top} S_k^{-1}

卡尔曼增益的直觉Pkk1HP_{k|k-1} H^{\top} 是状态与预测观测的互协方差,Sk1S_k^{-1} 是新息协方差的逆。当观测噪声很大时(RkR_k \to \infty),SkS_k \to \inftyKk0K_k \to 0,滤波器完全相信预测;当观测噪声很小时(Rk0R_k \to 0),KkH1K_k \to H^{-1},滤波器完全相信观测。KkK_k 就是预测与观测的自动加权器

状态更新:

x^kk=x^kk1+Kkyk\hat{x}_{k|k} = \hat{x}_{k|k-1} + K_k y_k

后验协方差更新:

Pkk=(IKkHk)Pkk1P_{k|k} = (I - K_k H_k) P_{k|k-1}

卡尔曼滤波的五个方程
整个 KF 就是五个方程:预测步两个(均值传播、协方差传播),更新步三个(增益、状态更新、协方差更新)。工程实现只需要维护 $\hat{x}$ 和 $P$ 两个量,每来一帧观测就执行一轮预测加更新。这也是为什么它在嵌入式系统上也能跑:每步只有矩阵乘法和求逆。

卡尔曼增益的另一种推导:最小化后验方差

上面的增益公式直接给出,这里给出推导,帮助理解其最优性。后验协方差可以展开为:

Pkk=Pkk1KkHkPkk1Pkk1HkKk+KkSkKkP_{k|k} = P_{k|k-1} - K_k H_k P_{k|k-1} - P_{k|k-1} H_k^{\top} K_k^{\top} + K_k S_k K_k^{\top}

我们的目标是最小化后验协方差的迹(即估计的均方误差)。对 KkK_k 求导并令其为零:

tr(Pkk)Kk=2Pkk1Hk+2KkSk=0\frac{\partial \text{tr}(P_{k|k})}{\partial K_k} = -2 P_{k|k-1} H_k^{\top} + 2 K_k S_k = 0

解出 Kk=Pkk1HkSk1K_k = P_{k|k-1} H_k^{\top} S_k^{-1}。这说明卡尔曼增益在均方误差意义下是最优的,在线性高斯假设下,KF 是所有估计器中均方误差最小的(即 BLUE:Best Linear Unbiased Estimator,且在高斯假设下也是 MMSE 最优)。

一个具体的跟踪例子

假设目标在一维直线上运动,状态为位置和速度 x=[p,p˙]x = [p, \dot{p}]^{\top},采用匀速模型,时间步长 Δt\Delta t

F=[1Δt01],H=[10]F = \begin{bmatrix} 1 & \Delta t \\ 0 & 1 \end{bmatrix}, \quad H = \begin{bmatrix} 1 & 0 \end{bmatrix}

观测只有位置(检测器给出),速度为隐状态。过程噪声 QQ 建模加速度扰动,取:

Q=q[Δt33Δt22Δt22Δt]Q = q \cdot \begin{bmatrix} \frac{\Delta t^3}{3} & \frac{\Delta t^2}{2} \\ \frac{\Delta t^2}{2} & \Delta t \end{bmatrix}

这个 QQ 的形式来自"加速度是白噪声"的连续时间假设,是匀速模型的标准取法。观测噪声 RR 反映检测框位置的抖动幅度。当目标被遮挡(无观测)时,跳过更新步只做预测,协方差 PP 持续增长,反映"不确定性随时间累积";目标重新出现时,滤波器用较大的 PP 重新吸收观测,这正好是 ByteTrack 处理漏检的机制。

第三部分:扩展卡尔曼滤波(EKF)

为什么需要 EKF

现实系统的状态转移与观测函数很少是线性的。跟踪场景里,如果状态用经纬度而观测用极坐标(距离、方位角),观测方程就是非线性的:

zk=h(xk)+vk=[x12+x22arctan(x2/x1)]+vkz_k = h(x_k) + v_k = \begin{bmatrix} \sqrt{x_1^2 + x_2^2} \\ \arctan(x_2 / x_1) \end{bmatrix} + v_k

线性高斯假设被打破后,高斯分布经过非线性变换不再是高斯分布,KF 的解析推导失效。EKF 的思路是:把非线性函数在估计点附近做一阶泰勒展开,用雅可比矩阵代替线性变换矩阵

一阶线性化

对状态转移函数在 x^k1k1\hat{x}_{k-1|k-1} 处展开:

f(xk1)f(x^k1k1)+Fk(xk1x^k1k1)f(x_{k-1}) \approx f(\hat{x}_{k-1|k-1}) + F_k (x_{k-1} - \hat{x}_{k-1|k-1})

其中 FkF_kff 的雅可比矩阵:

Fk=fxx=x^k1k1F_k = \left. \frac{\partial f}{\partial x} \right|_{x = \hat{x}_{k-1|k-1}}

对观测函数在 x^kk1\hat{x}_{k|k-1} 处展开:

h(xk)h(x^kk1)+Hk(xkx^kk1),Hk=hxx=x^kk1h(x_k) \approx h(\hat{x}_{k|k-1}) + H_k (x_k - \hat{x}_{k|k-1}), \quad H_k = \left. \frac{\partial h}{\partial x} \right|_{x = \hat{x}_{k|k-1}}

EKF 算法流程

预测步:

x^kk1=f(x^k1k1)\hat{x}_{k|k-1} = f(\hat{x}_{k-1|k-1})

Pkk1=FkPk1k1Fk+QkP_{k|k-1} = F_k P_{k-1|k-1} F_k^{\top} + Q_k

更新步:

yk=zkh(x^kk1)y_k = z_k - h(\hat{x}_{k|k-1})

Sk=HkPkk1Hk+RkS_k = H_k P_{k|k-1} H_k^{\top} + R_k

Kk=Pkk1HkSk1K_k = P_{k|k-1} H_k^{\top} S_k^{-1}

x^kk=x^kk1+Kkyk\hat{x}_{k|k} = \hat{x}_{k|k-1} + K_k y_k

Pkk=(IKkHk)Pkk1P_{k|k} = (I - K_k H_k) P_{k|k-1}

EKF 的局限

EKF 的一阶近似有两个问题:

  1. 强非线性下误差大:泰勒展开只保留一阶项,当非线性强(如大角度转弯、极坐标观测)时,线性化误差显著,可能导致滤波发散。
  2. 需要解析求导:雅可比矩阵需要手工推导或数值近似,对复杂函数(如神经网络观测模型)不友好。
  3. 误差传播仍假设高斯:即使做了线性化,EKF 仍然假设状态分布是高斯,线性化只会让这个假设错得更离谱。
EKF 的"线性化"本质上是"骗"自己
EKF 把非线性函数在当前估计点拉直(一阶泰勒),然后假装系统是线性的继续用 KF 的公式。这在弱非线性下工作良好,但系统非线性越强、不确定性越大,拉直的误差就越不可控。UKF 和粒子滤波都是针对这个缺陷提出的改进。

第四部分:无迹卡尔曼滤波(UKF)

核心思想:无迹变换

UKF(Unscented Kalman Filter,1995)不再做线性化,而是采用无迹变换(Unscented Transform, UT):用一组精心挑选的确定性采样点(sigma 点)来近似分布,让这些点经过非线性函数后,用变换后点的统计量来估计新分布的均值和协方差。

无迹变换的理论基础是:对任意非线性函数,用 2n+12n+1 个 sigma 点(nn 是状态维度)经过变换后的加权均值和加权协方差,可以精确匹配真实分布的前两阶矩(均值和协方差)。相比 EKF 的一阶泰勒,UT 至少保持二阶精度。

sigma 点的生成

给定均值 xˉ\bar{x} 和协方差 PP,生成 2n+12n+1 个 sigma 点:

X(0)=xˉ\mathcal{X}^{(0)} = \bar{x}

X(i)=xˉ+((n+λ)P)i,i=1,,n\mathcal{X}^{(i)} = \bar{x} + \left( \sqrt{(n + \lambda) P} \right)_i, \quad i = 1, \ldots, n

X(i+n)=xˉ((n+λ)P)i,i=1,,n\mathcal{X}^{(i+n)} = \bar{x} - \left( \sqrt{(n + \lambda) P} \right)_i, \quad i = 1, \ldots, n

其中 λ=α2(n+κ)n\lambda = \alpha^2 (n + \kappa) - n 是缩放参数,α\alpha 控制 sigma 点的散布范围(通常取 10310^{-3} 量级),κ\kappa 是二阶缩放参数,((n+λ)P)i\left( \sqrt{(n+\lambda)P} \right)_i 表示矩阵平方根的第 ii 列。矩阵平方根可以用 Cholesky 分解计算。

对应的权重:

Wm(0)=λn+λ,Wc(0)=λn+λ+(1α2+β)W^{(0)}_m = \frac{\lambda}{n + \lambda}, \quad W^{(0)}_c = \frac{\lambda}{n + \lambda} + (1 - \alpha^2 + \beta)

Wm(i)=Wc(i)=12(n+λ),i=1,,2nW^{(i)}_m = W^{(i)}_c = \frac{1}{2(n + \lambda)}, \quad i = 1, \ldots, 2n

其中 β\beta 用于编码先验分布信息(高斯分布取 β=2\beta = 2 最优)。

UKF 算法流程

预测步:每个 sigma 点经过状态转移函数:

Y(i)=f(X(i)),i=0,,2n\mathcal{Y}^{(i)} = f(\mathcal{X}^{(i)}), \quad i = 0, \ldots, 2n

加权得到预测均值与协方差:

x^kk1=i=02nWm(i)Y(i)\hat{x}_{k|k-1} = \sum_{i=0}^{2n} W^{(i)}_m \mathcal{Y}^{(i)}

Pkk1=i=02nWc(i)(Y(i)x^kk1)(Y(i)x^kk1)+QkP_{k|k-1} = \sum_{i=0}^{2n} W^{(i)}_c \left( \mathcal{Y}^{(i)} - \hat{x}_{k|k-1} \right) \left( \mathcal{Y}^{(i)} - \hat{x}_{k|k-1} \right)^{\top} + Q_k

更新步:预测 sigma 点经过观测函数:

Z(i)=h(Y(i))\mathcal{Z}^{(i)} = h(\mathcal{Y}^{(i)})

预测观测均值与协方差:

z^kk1=i=02nWm(i)Z(i)\hat{z}_{k|k-1} = \sum_{i=0}^{2n} W^{(i)}_m \mathcal{Z}^{(i)}

Sk=i=02nWc(i)(Z(i)z^kk1)(Z(i)z^kk1)+RkS_k = \sum_{i=0}^{2n} W^{(i)}_c \left( \mathcal{Z}^{(i)} - \hat{z}_{k|k-1} \right) \left( \mathcal{Z}^{(i)} - \hat{z}_{k|k-1} \right)^{\top} + R_k

状态与观测的互协方差:

Pxz=i=02nWc(i)(Y(i)x^kk1)(Z(i)z^kk1)P_{xz} = \sum_{i=0}^{2n} W^{(i)}_c \left( \mathcal{Y}^{(i)} - \hat{x}_{k|k-1} \right) \left( \mathcal{Z}^{(i)} - \hat{z}_{k|k-1} \right)^{\top}

增益与更新(与 KF 形式相同,只是 SkS_k 和互协方差由 sigma 点计算):

Kk=PxzSk1K_k = P_{xz} S_k^{-1}

x^kk=x^kk1+Kk(zkz^kk1)\hat{x}_{k|k} = \hat{x}_{k|k-1} + K_k (z_k - \hat{z}_{k|k-1})

Pkk=Pkk1KkSkKkP_{k|k} = P_{k|k-1} - K_k S_k K_k^{\top}

UKF 与 EKF 的对比

维度 EKF UKF
近似方式 一阶泰勒线性化 sigma 点确定性采样
精度 一阶 二阶(均值和协方差精确匹配)
是否需要雅可比 需要(解析或数值) 不需要
计算量 每次一个雅可比求值 2n+12n+1 次函数求值
强非线性 误差大可能发散 更稳健

UKF 的计算量约为 EKF 的 2n+12n+1 倍(nn 为状态维度),但对大多数跟踪场景(nn 通常 4 到 10),这个开销可以接受,而精度的提升是实打实的。UKF 的另一个工程优势是无需推导雅可比矩阵:只要状态转移函数和观测函数可以求值,就能用,这对耦合神经网络的观测模型尤其友好。

第五部分:粒子滤波(PF)

从参数化分布到蒙特卡洛采样

KF、EKF、UKF 都假设后验分布可以用高斯(均值 + 协方差)参数化。但真实后验可能是多峰的:目标可能在岔路口左转或右转,两个假设都合理,高斯分布无法表达这种多峰性。粒子滤波(Particle Filter)放弃参数化假设,用**一组带权重的随机样本(粒子)**来近似任意分布:

p(xkz1:k)i=1Nwk(i)δ(xkxk(i))p(x_k \mid z_{1:k}) \approx \sum_{i=1}^{N} w_k^{(i)} \delta(x_k - x_k^{(i)})

其中 xk(i)x_k^{(i)} 是第 ii 个粒子的状态,wk(i)w_k^{(i)} 是它的权重(iwk(i)=1\sum_i w_k^{(i)} = 1),NN 是粒子数。粒子数越多,近似越精确,代价是计算量线性增长。

重要性采样

直接从后验采样是困难的(我们不知道后验长什么样),粒子滤波用重要性采样绕开:从一个容易采样的提议分布 q(xkz1:k)q(x_k \mid z_{1:k}) 采样,再用重要性权重修正偏差。在序贯场景下,常用的是序贯重要性采样(Sequential Importance Sampling, SIS),权重递推为:

wk(i)wk1(i)p(zkxk(i))p(xk(i)xk1(i))q(xk(i)xk1(i),zk)w_k^{(i)} \propto w_{k-1}^{(i)} \cdot \frac{p(z_k \mid x_k^{(i)}) \cdot p(x_k^{(i)} \mid x_{k-1}^{(i)})}{q(x_k^{(i)} \mid x_{k-1}^{(i)}, z_k)}

如果选择状态转移分布作为提议分布(q=p(xkxk1)q = p(x_k \mid x_{k-1}),这是最简单的选择,称为"先验提议"),权重递推简化为:

wk(i)wk1(i)p(zkxk(i))w_k^{(i)} \propto w_{k-1}^{(i)} \cdot p(z_k \mid x_k^{(i)})

权重只乘以似然。粒子的状态按状态转移方程传播,权重按"观测有多可能"更新,这就是粒子滤波最朴素的工作方式。

重采样:对抗权重退化

SIS 有一个严重问题:权重退化。经过若干轮递推,少数粒子的权重会趋近 1,其余粒子的权重趋近 0,有效粒子数骤降,大量计算浪费在无意义的粒子上。度量退化程度用有效粒子数:

Neff=1i=1N(wk(i))2N_{\text{eff}} = \frac{1}{\sum_{i=1}^{N} (w_k^{(i)})^2}

NeffN_{\text{eff}} 低于阈值(如 N/2N/2)时,执行重采样(Resampling):按权重从当前粒子集中有放回地抽取 NN 个新粒子,权重大的粒子被复制,权重小的被丢弃:

xk(i)j=1Nwk(j)δ(xxk(j)),wk(i)=1Nx_k^{(i)} \sim \sum_{j=1}^{N} w_k^{(j)} \delta(x - x_k^{(j)}), \quad w_k^{(i)} = \frac{1}{N}

重采样后所有粒子权重重置为 1/N1/N。常用的重采样算法有系统重采样(systematic resampling,O(N) 复杂度,工程首选)、多项式重采样、残差重采样。重采样是粒子滤波能长期运行的保证,但也会引入粒子贫化(diversity loss):高权重粒子被反复复制,种群多样性下降。缓解手段包括加入马尔可夫链蒙特卡洛(MCMC)移动步骤或正则化重采样。

粒子滤波算法流程

完整的标准粒子滤波(SIR:Sampling Importance Resampling):

  1. 初始化:从先验 p(x0)p(x_0) 采样 NN 个粒子,权重均匀 w0(i)=1/Nw_0^{(i)} = 1/N
  2. 预测:每个粒子按状态转移方程传播 xk(i)p(xkxk1(i))x_k^{(i)} \sim p(x_k \mid x_{k-1}^{(i)})
  3. 更新:计算似然并更新权重 wk(i)wk1(i)p(zkxk(i))w_k^{(i)} \propto w_{k-1}^{(i)} \cdot p(z_k \mid x_k^{(i)}),归一化。
  4. 重采样:若 Neff<NthN_{\text{eff}} < N_{\text{th}},按权重重采样。
  5. 回到步骤 2,直到序列结束。
四种滤波器的本质区别
KF:解析解,只适用于线性高斯,但最优且高效。EKF:把非线性拉直再用 KF,快但近似粗糙。UKF:用 sigma 点精确匹配前两阶矩,无需求导,强非线性更稳。PF:用随机粒子近似任意分布,能表达多峰,但计算量大且有退化风险。选择依据是"非线性强度 × 分布形状 × 算力预算"。

第六部分:与多目标跟踪的联系

跟踪器里卡尔曼滤波怎么用

主流基于检测的跟踪器(SORT、DeepSORT、ByteTrack)都采用"检测 + 关联 + 滤波"的三段式,卡尔曼滤波负责其中的运动模型部分:

  1. 预测:对每个已确认轨迹,用 KF 预测下一帧的位置与速度,得到预测框。
  2. 关联:用预测框与检测框的 IoU(或结合外观特征的距离)做匹配(匈牙利算法或 Sinkhorn)。
  3. 更新:匹配成功的轨迹用对应检测更新 KF;未匹配的轨迹只预测不更新(漏检时保持存活一段时间,这依赖 KF 协方差的自然增长)。

ByteTrack 使用标准的匀速模型 KF,状态为 7 维:

x=[u,v,s,r,u˙,v˙,s˙]x = [u, v, s, r, \dot{u}, \dot{v}, \dot{s}]^{\top}

其中 (u,v)(u, v) 是框中心,ss 是框面积,rr 是宽高比(假设为常数),点号表示对应速度。框的观测为 [u,v,s,r][u, v, s, r]宽高比 rr 被建模为不变状态,这是跟踪场景的常见简化:目标大小变化时面积变化,但比例相对稳定。

DeepSORT 在 KF 之上增加了外观分支:用 ReID 特征计算外观距离,与马氏距离(利用 KF 协方差)加权融合作为关联代价:

cij=λd(1)(i,j)+(1λ)d(2)(i,j)c_{ij} = \lambda \cdot d^{(1)}(i, j) + (1 - \lambda) \cdot d^{(2)}(i, j)

其中 d(1)d^{(1)} 是马氏距离 d(1)(i,j)=(zjHx^i)Si1(zjHx^i)d^{(1)}(i,j) = (z_j - H\hat{x}_i)^{\top} S_i^{-1} (z_j - H\hat{x}_i)d(2)d^{(2)} 是 ReID 特征余弦距离。马氏距离用到了 KF 的协方差 SiS_i,这体现了滤波器输出不只是"一个点估计",还包括不确定性信息,这个信息在关联代价里直接参与决策。

四种方法在跟踪中的适用性

方法 适用场景 跟踪中的典型问题
KF 线性近似足够(大多数行人/车辆跟踪) 匀速模型在转弯时预测偏差大
EKF 弱非线性观测(如极坐标雷达) 需要推导雅可比,强转弯误差大
UKF 强非线性(相机与鸟瞰视角映射、非线性运动) 计算量略增,精度提升明显
PF 多峰后验(多假设、强遮挡、路口分叉) 粒子数选择困难,实时性受限

工程上的现实是:KF 因为简单高效仍是默认选择,ByteTrack 甚至只用 IoU 关联 + KF 就达到了极强的效果。滤波器的选择不是越高级越好,而是"模型误差与计算预算的权衡":检测器的质量、帧率、场景复杂度共同决定需要多复杂的滤波器。

卡尔曼滤波与学习的结合

近年来出现了"滤波 + 学习"的混合范式,值得关注:

  • 可学习的过程噪声:把 QQRR 建模为神经网络输出,通过端到端训练学习"何时该信预测、何时该信观测",缓解手工调参。
  • 滤波作为可微模块:KF 的预测更新都是可微操作,可以嵌入检测器或跟踪器的反向传播链路(如 TrackFormer 中把运动先验做成可微组件)。
  • 与图模型结合:在多目标跟踪中,KF 提供单目标的运动先验,图匹配(匈牙利/Sinkhorn)负责多目标之间的关联,两者分工明确。我们之前在异质图与匹配上的工作,正是把"滤波给的预测 + 图模型给的关联"结合。

挑战与展望

模型误差与噪声参数

卡尔曼滤波家族的共同弱点是模型误差:匀速/匀加速模型只是对真实运动的近似,当目标急转弯、变速时,模型误差无法用高斯噪声完全刻画。自适应滤波(如 Sage-Husa 自适应估计 QQRR)是经典应对,但仍依赖启发式。如何让噪声参数可学习、可校准,是滤波与现代学习结合的核心问题。

非线性与多模态

UKF 和粒子滤波分别处理了强非线性和多峰后验,但两者都未同时解决:UKF 仍假设单峰,PF 的计算量随维度指数增长(高维粒子滤波的"维度灾难")。混合方案(如高斯和滤波:用多个高斯分量近似多峰)是中间路线。

实时性与算力

多目标跟踪往往需要实时,粒子滤波数千粒子的计算量在边缘设备上难以承受。工程上的常见做法是分层滤波:用 KF 做粗粒度跟踪,只在必要时(遮挡、分叉)对少数轨迹启用粒子滤波细化。

与深度学习的融合

滤波器的贝叶斯框架与深度学习的表示能力正在融合:学习观测模型(检测器)已经成熟,学习状态转移模型(运动预测网络)是活跃方向,端到端的"检测 + 滤波 + 关联"联合优化是长期目标。滤波器的价值在于提供可解释的不确定性传播,这是纯黑盒网络难以替代的

小结

本文从贝叶斯滤波的统一框架出发,完整推导了卡尔曼滤波的预测更新两步与增益最优性,然后沿着"近似方式"这条线介绍了三个扩展:

  1. KF:线性高斯假设下的解析解,五个方程,均方误差最优,工程标配。
  2. EKF:一阶泰勒线性化,用雅可比矩阵把非线性"拉直",简单但有精度损失。
  3. UKF:sigma 点确定性采样,精确匹配前两阶矩,免求导,强非线性更稳。
  4. PF:蒙特卡洛采样近似任意分布,能表达多峰后验,但计算量大、有退化风险。

四种方法解决同一个问题(递推估计后验分布),区别只在近似的具体方式。对多目标跟踪而言,理解这个框架比记住某个滤波器的公式更重要:KF 提供高效基线,UKF 处理强非线性,PF 处理多模态,选择取决于场景的模型误差与算力预算

参考

[1] Kalman, R. E. A New Approach to Linear Filtering and Prediction Problems. Journal of Basic Engineering, 82(1):35-45, 1960.
[2] Julier, S. J., & Uhlmann, J. K. A New Extension of the Kalman Filter to Nonlinear Systems. SPIE Signal Processing, 1997.
[3] Wan, E. A., & Van Der Merwe, R. The Unscented Kalman Filter for Nonlinear Estimation. IEEE AS-SPCC, 2000.
[4] Gordon, N. J., Salmond, D. J., & Smith, A. F. M. Novel Approach to Nonlinear/Non-Gaussian Bayesian State Estimation. IEE Proceedings F, 140(2):107-113, 1993.
[5] Arulampalam, M. S., et al. A Tutorial on Particle Filters for Online Nonlinear/Non-Gaussian Bayesian Tracking. IEEE Transactions on Signal Processing, 50(2):174-188, 2002.
[6] Welch, G., & Bishop, G. An Introduction to the Kalman Filter. UNC-Chapel Hill TR 95-041, 1995.
[7] Bewley, A., et al. Simple Online and Realtime Tracking. ICIP 2016.
[8] Wojke, N., Bewley, A., & Paulus, D. Simple Online and Realtime Tracking with a Deep Association Metric. ICIP 2017.
[9] Zhang, Y., et al. ByteTrack: Multi-Object Tracking by Associating Every Detection Box. ECCV 2022.
[10] Li, P., et al. Robust Real-time Extreme Head Pose Estimation. (Sage-Husa 自适应滤波参考) ECCV 2020.
[11] Särkkä, S. Bayesian Filtering and Smoothing. Cambridge University Press, 2013.
[12] Thrun, S., Burgard, W., & Fox, D. Probabilistic Robotics. MIT Press, 2005.
[13] Doucet, A., & Johansen, A. M. A Tutorial on Particle Filtering and Smoothing. Handbook of Nonlinear Filtering, 2009.
[14] Crouse, D. F. On Implementing 2D Rectangular Assignment Algorithms. IEEE Transactions on Aerospace and Electronic Systems, 52(4):1679-1698, 2016.
[15] Cully, A., et al. Robots that Can Adapt like Animals. (可学习噪声参数参考) Nature, 2015.

🌙