【论文阅读】多目标跟踪——Observation-Centric SORT: Rethinking SORT for Robust Multi-Object Tracking

(一)Title

在这里插入图片描述

写在前面: 2023.03收录在CVPR上的一篇文章,CMU的作品。文章立意很新颖,从motion model这个角度切入,深入剖析了SORT中KF的先验条件(都是线性运动)与实际跟踪场景不匹配而产生的后果,在大家都在卷detection和re-id的时代,另辟蹊径,对motion model分析改进,并给出了大量的推导证明,并且最终也达到了SOTA。

两个概念:“Estimation-Centric” & “Observation-Centric”

三个局限性:

Sensitive to State Noise

Temporal Error Magnification

Estimation-Centric

三个改进:

OCR:虚拟轨迹平滑噪声

OCM:利用观测确定方向一致性

OCR:检测匹配检测

(二)Summary

背景介绍

TBD(Tracking by Detection)是一类通过建立运动模型进行关联匹配的跟踪方法。基于滤波的方法假设一个过渡函数来预测目标在未来时间步长的状态,称为状态“估计”( state estimations)。除此之外,还利用一个观测模型(目标检测器),来得出目标的状态测量,称为状态“观测”( observations)。观测值通常作为辅助信息,帮助更新滤波器的后验状态。轨迹状态主要以状态估计进行“扩展”。

当前方法存在的问题

目前主流的SORT-like算法采用Kalman filter作为滤波器,建立线性运动模型进行预测更新。然而,当目标运动为非线性时,基于KF跟踪,鲁棒性不足。同时在遮挡期间由于缺少用于更新卡尔曼滤波器参数的测量时,通常是利用先验估计进行后验更新,这种“Estimation-Centric”(以估计为中心)的方法会导致错误的累计,从而导致较大的运动方向变化。(Limitations of SORT 将在后文具体展开)

本文方法

本文提出了一种“Observation-Centric”(以观测为中心)的方法,利用检测结果来计算遮挡期间的虚拟轨迹,以此来修正遮挡期间累积的错误。同时为了避免方向估计中存在的较大噪声,利用检测结果来获取轨迹的方向一致性

实验表现

  • OC-SORT在单个CPU(i9-9980XE)上以793的FPS速度运行
  • 在MOT17、MOT20、头部跟踪、以及物体运动高度非线性的DanceTrack上均达到了SOTA,在KITTI上达到了第二名的成绩。

(三)Research Object

​ 现有的基于motion model的方法大多假设目标为线性运动,虽然这种假设在实际场景中并不成立,但当帧率足够高的情况下,物体的运动可以合理近似为线性。然而作者在大量实验中发现,这种先验假设下,导致大多数错误出现在遮挡和非线性运动同时发生的情况下。

​ 因此作者重新思考了当前基于运动模型的SORT-Like中存在的一些局限性,发现高帧率同时会放大模型对状态估计噪声的敏感性,同时”Estimation-Centric“的方式会在遮挡期间造成状态估计噪声的累计,噪声对速度方向的影响往往导致重新关联后的轨迹再次丢失。考虑到现代检测器的发展,通过检测器得到目标状态的方差通常小于滤波器的状态估计方差。作者侧重于利用检测结果,即”Observation-Centric“,来提高KF作为motion model的上限。

(四)Problem Statement

1、Kalman Filter

​ 基本卡尔曼滤波器(Kalman filter, KF):
p r e d i c t { x ^ t ∣ t − 1 = F x ^ t − 1 ∣ t − 1 P t ∣ t − 1 = F t P t − 1 ∣ t − 1 F t T u p d a t e { K t = P t ∣ t − 1 H t T ( H t P t ∣ t − 1 H t T + R t ) − 1 x ^ t ∣ t = x ^ t ∣ t − 1 + K t ( z t − H t x ^ t ∣ t − 1 ) P t ∣ t = ( I − K t H t ) P t ∣ t − 1 (1) \begin{aligned} &predict \begin{cases} \hat{x}_{t|t-1}=F\hat{x}_{t-1|t-1} \\ P_{t|t-1}=F_{t}P_{t-1|t-1}F_{t}^T \end{cases}\\ &update \begin{cases} K_{t}=P_{t|t-1}H_{t}^T(H_{t}P_{t|t-1}H_{t}^T+R_{t})^{-1}\\ \hat{x}_{t|t}=\hat{x}_{t|t-1}+K_{t}(z_{t}-H_{t}\hat{x}_{t|t-1})\\ P_{t|t}=(I-K_{t}H_{t})P_{t|t-1} \end{cases} \end{aligned} \tag{1} predict{ x^tt1=Fx^t1∣t1Ptt1=FtPt1∣t1FtTupdate Kt=Ptt1HtT(HtPtt1HtT+Rt)1x^tt=x^tt1+Kt(ztHtx^tt1)Ptt=(IKtHt)Ptt1(1)
​ 给定观测值 z t z_{t} zt ,KF在预测和更新阶段交替维护两个变量,即后验状态估计 x ^ t ∣ t \hat{x}_{t|t} x^tt和后验协方差矩阵 P t ∣ t P_{t|t} Ptt

​ SORT作为基于KF的MOT跟踪器,其状态定义为 x = [ u , v , s , r , u ˙ , v ˙ , s ˙ ] x =[u,v,s,r,\dot{u},\dot{v},\dot{s}] x=[u,v,s,r,u˙,v˙,s˙],其中 ( u , v ) (u,v) (u,v)为目标中心的二维坐标, s s s为边界框的面积, r r r为边界框的宽高比,假定为常数。观测值定义为 z = [ u , v , w , h , c ] z=[u,v,w,h,c] z=[u,v,w,h,c]分别为物体中心点二维坐标、边界框宽度、边界框高度以及检测置信度。

​ 在SORT-Like中,预测阶段用于估计下一帧的目标出现位置,而更新阶段用于利用检测器的输出结果更新卡尔曼滤波参数,并将更新后的后验状态输出。当视频帧率很高时,SORT可以很好的工作,因为目标对象在短时间内可以近似为线性运动。

​ 然而,在很多现实场景中,由于出现拥挤遮挡等情况,往往在一些连续的时间步长上没有观测值,因此无法使用公式1中的更新步来更新KF参数。SORT直接使用当前帧的先验估计 x ^ t ∣ t − 1 \hat{x}_{t|t-1} x^tt1作为后验状态 x ^ t ∣ t \hat{x}_{t|t} x^tt,称之为”dummy update“(虚拟更新),即
x ^ t ∣ t − 1 = x ^ t ∣ t , P t ∣ t = P t ∣ t − 1 (2) \hat{x}_{t|t-1}=\hat{x}_{t|t},P_{t|t}=P_{t|t-1} \tag{2} x^tt1=x^tt,Ptt=Ptt1(2)
​ 作者针对该做法,认为其背后的理由是当没有观察结果可以修正估计时,要相信估计结果,因此称之为”Estimation-Centric“,也就是以状态估计来更新KF参数。然而该做法在非线性运动和遮挡同时发生时,将会大大提高跟踪器的错误率(下文证明了以估计为中心的运动模型的缺陷)。

2、Rething the Limitations of SORT

  • Sensitive to State Noise

在线性运动模型的假设下,根据运动方程,状态估计可表示为
{ u t + 1 = u t + u t ˙ △ t v t + 1 = v t + v t ˙ △ t (3) \begin{cases} u_{t+1}=u_{t}+\dot{u_{t}}\triangle t\\ v_{t+1}=v_{t}+\dot{v_{t}}\triangle t \end{cases} \tag{3} { ut+1=ut+ut˙tvt+1=vt+vt˙t(3)
假设估计的目标中心位置遵循
{ u ∼ N ( μ u , σ u 2 ) v ∼ N ( μ v , σ v 2 ) \begin{cases} u\sim \mathcal{N}\left(\mu_u, \sigma_u^2\right)\\ v\sim \mathcal{N}\left(\mu_v, \sigma_v^2\right) \end{cases} { uN(μu,σu2)vN(μv,σv2)
其中, ( μ u , μ v ) (\mu_u,\mu_v) (μu,μv)代表真实位置。假设状态噪声在不同时间步长上是独立的,由式3可以得到,当在两个时间步 t → t + △ t t\rightarrow t+\triangle t tt+t时,其速度可以表示表示为
{ u ˙ = u t + △ t − u t △ t v ˙ = v t + △ t − v t △ t (4) \begin{cases} {\dot{u}}=\frac{u_{t+\triangle t}-u_{t}}{\triangle t}\\ {\dot{v}}=\frac{v_{t+\triangle t}-v_{t}}{\triangle t} \end{cases} \tag{4} { u˙=tut+tutv˙=tvt+tvt(4)
速度估计噪声可表示为
{ δ u ˙ ∼ N ( 0 , 2 σ u 2 ( △ t 2 ) ) δ v ˙ ∼ N ( 0 , 2 σ v 2 ( △ t 2 ) ) \begin{cases} \delta_{\dot{u}}\sim \mathcal{N}\left(0, \frac{2\sigma_u^2}{(\triangle t^{2})}\right)\\ \delta_{\dot{v}}\sim \mathcal{N}\left(0, \frac{2\sigma_v^2}{(\triangle t^{2})}\right) \end{cases} δu˙N(0,(t2)2σu2)δv˙N(0,(t2)2σv2)
上式可以得到结论:较小的 △ t \triangle t t会放大速度估计噪声

这表明在高帧率视频中,SORT-Like会受到速度估计的严重噪声影响。

以上是根据实际情况简化得来的,事实上,速度不仅仅是由未来时间步长的状态决定( u t + 1 − u t u_{t+1}-u_{t} ut+1ut)。在附录G中作者提供了更加严格的证明分析

对于大部分的跟踪场景来说,在高帧率的情况下,目标在连续帧之间只有几个像素(MOT17中平均位移为1.93像素和0.65像素),也意味着速度噪声会与速度本身相同甚至更大,但由于观测值可以在更新后验参数时修复噪声,在正常情况下并不会出现很大的误差。然而在遮挡场景下,由于缺少观测,灵敏度很高的状态噪声会被多次累计的误差放大,从而对结束遮挡后的重新跟踪阶段带来新的问题

  • Temporal Error Magnification

考虑目标在当两个时间步 t → t + T t\rightarrow t+T tt+T之间的时间步长上被遮挡,假设 △ t = 1 \triangle t=1 t=1,则速度估计的噪声服从
{ δ u ˙ t ∼ N ( 0 , 2 σ u 2 ) δ v ˙ t ∼ N ( 0 , 2 σ v 2 ) \begin{cases} \delta_{\dot{u}_{t}}\sim \mathcal{N}(0, 2\sigma_u^2)\\ \delta_{\dot{v}_{t}}\sim \mathcal{N}(0, 2\sigma_v^2) \end{cases} { δu˙tN(0,2σu2)δv˙tN(0,2σv2)
t + T t+T t+T时刻时,状态估计为
{ u t + T = u t + T u t ˙ v t + T = v t + T v t ˙ (5) \begin{cases} u_{t+T}=u_{t}+T\dot{u_{t}}\\ v_{t+T}=v_{t}+T\dot{v_{t}} \end{cases} \tag{5} { ut+T=ut+Tut˙vt+T=vt+Tvt˙(5)
状态噪声服从于
{ δ u + T ∼ N ( 0 , 2 T 2 σ u 2 ) δ v + T ∼ N ( 0 , 2 T 2 σ v 2 ) \begin{cases} \delta_{ {u+T}}\sim \mathcal{N}(0, 2T^{2}\sigma_u^2)\\ \delta_{ {v+T}}\sim \mathcal{N}(0, 2T^{2}\sigma_v^2) \end{cases} { δu+TN(0,2T2σu2)δv+TN(0,2T2σv2)
上式可以看到,当没有检测更新时,KF的线性运动假设会导致状态估计的误差相对于遮挡时间快速累计。多个时间步内未更新,其位置状态方差跟时间平方成正比,最后累计的误差可能跟目标尺寸一样大

例如在MOT17中,行人的大小约为50x300像素,即使假设位置估计的方差为1像素,经过10帧的遮挡,在最终位置估计中积累与目标大小一样大的位移(200x200像素)。如此量级的误差积累,当场景拥挤时,会造成大量的ID switch。

  • Estimation-Centric

​ 以上两个有关SORT的缺陷,是由于SORT遵循KF以估计为中心,允许在不存在观测值的情况下进行更新,并完全信任估计的结果。而状态估计中的噪声是随着隐马尔可夫过程累积的,”Estimation-Centric“的跟踪器在遮挡和非线性下很容易”犯错“。

​ 作者认为检测器的检测噪声是互相独立的,同时在单帧的情况下,检测方差要小于估计方差,即检测得到的目标定位结果比通过线性运动假设得到的状态估计更准确。(存疑)

​ 基于此,作者考虑利用更多检测的信息,即”Observation-Centric“来尽可能缓解SORT本质上的局限性。

解释了什么是”Estimation-Centric“ 和作者提出的“Observation-Centric”,也就是在估计不可靠的时候,应该侧重于以观测为中心来更新KF的参数。

(五)Method

方法概述:

为了实现“Observation-Centric”,作者基于观测值提出了三种不同方面的改进。

1、ORU:通过一个虚拟的轨迹对KF参数进行在线平滑,回溯到检测丢失的时候,用虚拟观测点对KF进行参数更新。

2、OCM:在Cost Matrix中增加了由观测结果计算的动量项

3、OCR:以”检测匹配检测“的方法来处理目标停止或短时遮挡的特殊情况

下图为算法pipeline

在这里插入图片描述

1、Observation-centric Re-Update (ORU)

​ 从上文分析可知,即使一个目标在丢失一段时间后被重新关联,他也可能再次丢失。因为它的KF参数由于多个时间步上没有检测更新导致的误差累计而偏离了正确的方向。因此作者考虑在遮挡期间重新更新KF参数,减小误差发散。

具体做法:

​ 当轨迹在Lost状态下重新关联上检测(Re-activation),就会根据本次观测值和这条轨迹丢失前最后一次关联上的观测值,构建一条虚拟轨迹作为观测值。利用该条虚拟轨迹,重新更新丢失期间的KF参数。以此辅助KF的预测结果做更新,修复在一段时间内因缺少实际观测而积累的误差。

​ 假设某条轨迹在丢失前最后一次关联上的观测值为 z t 1 z_{t_{1}} zt1,重新关联时的观测值为 z t 2 z_{t_{2}} zt2,则虚拟轨迹定义为:
z ~ t = T r a j v i r t u a l ( z t 1 , z t 2 , t ) , t 1 < t < t 2 (6) \tilde{z}_{t}=Traj_{virtual}(z_{t_{1}},z_{t_{2}},t),t_{1}<t<t_{2}\tag{6} z~t=Trajvirtual(zt1,zt2,t),t1<t<t2(6)

T r a j v i r t u a l ( ⋅ ) Traj_{virtual}(·) Trajvirtual()为虚拟轨迹表达式,作者在ablation study中分别假设虚拟轨迹为CV,CA,GPR,LR模型,最终 根据实验结果选择了CV模型建立虚拟轨迹。

沿着虚拟轨迹 z ~ t ( t 1 < t < t 2 ) \tilde{z}_{t}(t_{1}<t<t_{2}) z~t(t1<t<t2),进行预测-再更新的循环,如式7。
r e − u p d a t e { K t = P t ∣ t − 1 H t T ( H t P t ∣ t − 1 H t T + R t ) − 1 x ^ t ∣ t = x ^ t ∣ t − 1 + K t ( z ~ t − H t x ^ t ∣ t − 1 ) P t ∣ t = ( I − K t H t ) P t ∣ t − 1 (7) re-update\begin{cases} K_{t}=P_{t|t-1}H_{t}^T(H_{t}P_{t|t-1}H_{t}^T+R_{t})^{-1}\\ \hat{x}_{t|t}=\hat{x}_{t|t-1}+K_{t}(\tilde{z}_{t}-H_{t}\hat{x}_{t|t-1})\\ P_{t|t}=(I-K_{t}H_{t})P_{t|t-1} \end{cases} \tag{7} reupdate Kt=Ptt1HtT(HtPtt1HtT+Rt)1x^tt=x^tt1+Kt(z~tHtx^tt1)Ptt=(IKtHt)Ptt1(7)
由于该虚拟轨迹的运动模式是由丢失前后的两次真实观测所锚定,因此不会受到”dummy update“的影响,重新关联后目标的KF参数会收敛至比较合理的范围内。

OCR如何减少错误关联?

在这里插入图片描述

​ 目标在第二步和第三步之间被遮挡,跟踪器在第三步重新关联上目标。

灰色星星是没有OCR的目标估计中心,在第四步中可以发现,灰色星星由于KF参数发散,产生了”错误定位“,与观测结果和实际位置不符,导致接下来的关联匹配失败。也就是说即使目标在遮挡之后重新被找到,在接下来的时间步上仍然可能丢失。

黄色星星是利用OCR平滑了遮挡期间KF参数后的目标估计中心,可以发现在结束遮挡后的后续帧能成功跟上目标的运动。

2、Observation-Centric Momentum (OCM)

​ 虽然线性运动假设提供了物体运动方向的一致性,但存在状态噪声的干扰,导致该线索很难被正确的应用在相似性度量(cost matrix)上面。

原因在于:

​ 当时间差 △ t \triangle t t很小时,由于速度噪声对状态噪声的敏感性,其变化会很显著。

​ 当时间差 △ t \triangle t t很大时,由于状态误差随时间积累和线性运动假设失效,方向估计的噪声也会很大。

​ 考虑到检测的状态方差是独立的,并不会累计。因此作者选择使用观测值代替估计值来降低运动方向计算时带来的噪声,并在代价矩阵中引入方向一致项

具体做法:
C ( X ^ , Z ) = C I o U ( X ^ , Z ) + λ C v ( Z , Z ) (8) C(\hat{X},Z)=C_{IoU}(\hat{X},Z)+\lambda C_{v}(\mathcal{Z},Z)\tag{8} C(X^,Z)=CIoU(X^,Z)+λCv(Z,Z)(8)

λ = 0.2 \lambda=0.2 λ=0.2

其中, X ^ \hat{X} X^是( N × 7 N\times7 N×7)的目标状态估计集, Z Z Z是( M × 5 M\times5 M×5)的当前帧的目标观测集。 λ \lambda λ是一个权重因子。 Z \mathcal{Z} Z包含了现有轨迹的观测轨迹(先有轨迹在所有帧上的历史观测值)。 C I o U ( ⋅ , ⋅ ) C_{IoU}(·,·) CIoU(⋅,⋅)计算IOU矩阵( N × M N\times M N×M), C v ( ⋅ , ⋅ ) C_{v}(·,·) Cv(⋅,⋅)计算(现有轨迹两个历史观测值的方向 θ t r a c k \theta^{track} θtrack)和(现有轨迹历史观测值和新观测值的方向 θ i n t e n t i o n \theta^{intention} θintention)之间的一致性。 C v ( ⋅ , ⋅ ) C_{v}(·,·) Cv(⋅,⋅)包含了所有的匹配结果 △ θ = ∣ θ t r a c k − θ i n t e n t i o n ∣ \triangle \theta=|\theta^{track}-\theta^{intention}| θ=θtrackθintention N × M N\times M N×M

假设两个时间步长上的观测位置为 ( u 1 , v 1 ) (u_{1},v_{1}) (u1,v1) ( u 2 , v 2 ) (u_{2},v_{2}) (u2,v2),则运动方向 θ \theta θ可表示为
θ = a r c t a n ( v 1 − v 2 u 1 − u 2 ) \theta=arctan(\frac{v_{1}-v_{2}}{u_{1}-u_{2}}) θ=arctan(u1u2v1v2)
下面是具体图例解释做法:

在这里插入图片描述

绿色虚线代表一条现存的轨迹,绿色点代表这条轨迹不同时间步上的历史观测值,红色点代表当前帧检测到的观测值。黄色连线代表两个历史观测值表示的方向,蓝色连线代表当前观测值与这条轨迹历史观测值表示的方向,所需要计算的方向一致性(方向差)则为 △ θ \triangle \theta θ

如何确定两个时间步之间的间隔 △ t \triangle t t

在附录A中作者推导出方向估计中噪声分布的概率密度函数的封闭解。并得出结论:

在线性运动模型下,方向估计噪声的尺度与两个观测点之间的时差呈负相关,即 △ t \triangle t t越大,方向估计越准确。然而,线性运动假设通常只在 △ t \triangle t t较小的时候成立。

作者在ablation study中设置 △ t \triangle t t分别为1、2、3、6,根据实验结果最后选择 △ t = 3 \triangle t=3 t=3

3、Observation-Centric Recovery (OCR)

具体做法:

当完成每轮的匹配关联后,会剩下当前帧未匹配上的检测 D u n m a t c h D_{unmatch} Dunmatch和未匹配上的轨迹 T u n m a t c h T_{unmatch} Tunmatch,将the last observation of T u n m a t c h T_{unmatch} Tunmatch D u n m a t c h D_{unmatch} Dunmatch进行关联匹配,用丢失前的位置作为找回线索与当前帧的检测进行匹配,以恢复Unmatched Track。

作者认为这个方法可以有效缓解目标停止运动,或者极短时间遮挡的情况导致目标丢失关联失败的情况(因为状态估计依旧认为该目标是“运动”的,导致偏离了正确位置)

OCR用于恢复轨迹,这部分依赖于历史检测值而不是错误的估计值。以检测匹配检测,只在特定的场景中生效,但个人认为OCR也同样会对正常场景产生错误关联。

(六)Experiments

1、Experimental Setup

  • Datasets

MOT17、MOT20、KITTI、DanceTrack、CroHD

在这里插入图片描述

KITTI:10FPS

CroHD:25FPS

  • Metrics

HOTA、IDF1、MOTA

2、Ablation Study

  • Component Ablation

在这里插入图片描述

分析:

ORU在两个数据集上对跟踪器性能都有较大的提升;而OCM仅仅在非线性程度更强、遮挡情况更严重的DanceTrack上表现出很大的提升;OCR在不复杂的场景下甚至会出现“负优化”这类情况,与先前的分析相吻合。

  • Virtual Tracjectory in ORU

在这里插入图片描述

分析:

​ 作者假设了四种“Virtual Tracjectory”的运动模型。针对GPR的RBF核函数选择为:
k ( x , x ′ ) = e x p ( − ∣ ∣ x − x ′ ∣ ∣ 50 ) k(x,x')=exp(-\frac{||x-x'||}{50}) k(x,x)=exp(50∣∣xx∣∣)
​ 并在附录B中提供了更多的内核配置的研究。

​ 结果表明假设恒速、恒加速度运动模型会表现得更好,相反线性回归和高斯过程回归(GPR)表现的并不好,原因是因为轨迹是在线生成的,所以很难利用有限的历史数据拟合虚拟轨迹。

最终选择的运动模型为恒速运动模型
z ~ t = z t 1 + t − t 1 t 2 − t 1 ( z t 2 − z t 1 ) \tilde{z}_{t}={z}_{t_{1}}+\frac{t-t_{1}}{t_{2}-t_{1}}(z_{t_{2}}-z_{t_{1}}) z~t=zt1+t2t1tt1(zt2zt1)

  • △ t \triangle t t in OCM

在这里插入图片描述

分析:

较大的 △ t \triangle t t会降低速度估计的噪声,但同样也会阻碍目标运动近似为线性。 实验结果表明与该结论分析一致,当 △ t = 1 \triangle t=1 t=1慢慢增加时,可以提高关联的质量;然而当 △ t \triangle t t大于某个阈值时,因为其无法保持线性运动的近似性,反而会损害其性能。最终选定 △ t = 3 \triangle t=3 t=3

3、Benchmark Results

自适应检测阈值可以进一步提高OC-SORT的性能

  • MOT17 and MOT20

在这里插入图片描述

  • DanceTrack

在这里插入图片描述

在强非线性和严重遮挡情况下,OC-SORT性能大大优于baseline

  • KITTI

在这里插入图片描述

​ 在”行人类别“上将性能提升到state-of-the-art;而在”汽车“类别上并没有达到一个很好的性能。原因在于OC-SORT在关联匹配中使用IoU,当物体速度较快或帧率较低的时候,IOU可能很低甚至为0。所以添加其他线索(如GIOU、外观等)可以有效解决这一问题。

(七)Conclusion

​ OC-SORT实际上就是对SORT进行改进,侧重于利用检测结果,使KF这个运动模型在遮挡、非线性运动、漏检等情况下更具有鲁棒性,成为一个Robust Multi-Object Tracking,这也是作者的内核思想,以观测为中心,提高KF作为motion model的上限

​ 然而,OC-SORT只是利用观测来弥补KF缺点带来的错误关联,并没有对非线性物体运动进行重新设计,GPR的失败也说明了把SORT扩展到非线性物体运动的困难。同时还存在一个局限性:不适合低帧率和高速运动目标的跟踪(需要引入其他线索,或更好的关联方式)

附录A:Velocity Direction Variance in OCM

证明:两个状态估计之间的时间间隔越大,则轨迹方向估计的方差越小

设运动模型为 x t = f ( t ) + ϵ x_{t}=f(t)+\epsilon xt=f(t)+ϵ,假设 ϵ \epsilon ϵ为高斯噪声, ( μ u t , μ v t ) (\mu_{u_{t}},\mu_{v_{t}}) (μut,μvt) t t t时刻的目标中心点的真实位置。则两个时间步长的真实运动方向为:
θ = a r c t a n ( μ v t 1 − μ v t 2 μ u t 1 − μ u t 2 ) (9) \theta=arctan(\frac{\mu_{v_{t_{1}}}-\mu_{v_{t_{2}}}}{\mu_{u_{t_{1}}}-\mu_{u_{t_{2}}}}) \tag{9} θ=arctan(μut1μut2μvt1μvt2)(9)
由于检测结果不会沿着马尔可夫过程传播而受到误差积累的影响,假设观测噪声为独立同分布,则状态分布为:
{ u t ∼ N ( μ u t , σ u 2 ) v t ∼ N ( μ v t , σ u 2 ) \begin{cases} {u_{t}}\sim \mathcal{N}(\mu_{u_{t}}, \sigma_u^2)\\ {v_{t}}\sim \mathcal{N}(\mu_{v_{t}}, \sigma_u^2) \end{cases} { utN(μut,σu2)vtN(μvt,σu2)
由于arctan是单调函数,因此只需要考虑括号里面的函数单调性。

假设方向估计噪声为 θ ~ = v t 1 − v t 2 u t 1 − u t 2 \tilde{\theta}=\frac{v_{t_{1}}-v_{t_{2}}}{u_{t_{1}}-u_{t_{2}}} θ~=ut1ut2vt1vt2,设 w = u t 1 − u t 2 , y = v t 1 − v t 2 , 则 z = y w w=u_{t_{1}}-u_{t_{2}},y=v_{t_{1}}-v_{t_{2}},则z=\frac{y}{w} w=ut1ut2,y=vt1vt2,z=wy,

y y y w w w共同构成了一个高斯分布:
[ y w ] ∼ ( [ μ y μ w ] , [ σ y 2 ρ σ y σ w ρ σ y σ w σ w 2 ] ) (10) \begin{bmatrix} y\\ w\\ \end{bmatrix} \sim(\begin{bmatrix} \mu_{y}\\ \mu_{w} \end{bmatrix}, \begin{bmatrix} \sigma^{2}_{y}&\rho \sigma_{y}\sigma_{w}\\ \rho\sigma_{y}\sigma_{w} & \sigma^{2}_{w} \end{bmatrix}) \tag{10} [yw]([μyμw],[σy2ρσyσwρσyσwσw2])(10)
其中 μ y = μ v t 1 − μ v t 2 \mu_{y}=\mu_{v_{t_{1}}}-\mu_{v_{t_{2}}} μy=μvt1μvt2 μ w = μ u t 1 − μ u t 2 \mu_{w}=\mu_{u_{t_{1}}}-\mu_{u_{t_{2}}} μw=μut1μut2 σ w = 2 σ u \sigma_{w}=\sqrt{2}\sigma_{u} σw=2 σu σ y = 2 σ v \sigma_{y}=\sqrt{2}\sigma_{v} σy=2 σv

推导出有关 z z z的概率密度函数的封闭解为:

在这里插入图片描述

假设 μ w > 0 , μ y > 0 \mu_{w}>0,\mu_{y}>0 μw>0,μy>0。以上解可以得出结论

μ y \mu_{y} μy μ w \mu_{w} μw越大,即方向真实值( μ z = μ y μ w \mu_{z}=\frac{\mu_y}{\mu_{w}} μz=μwμy)处概率密度越高,尾部收敛的越快, a r c t a n θ arctan\theta arctanθ的方向估计噪声越小。 因此,线性运动的假设下,应该尽可能选择两个时间差较大的观测值来估计方向。

在这里插入图片描述

由于u轴和v轴的检测噪声是独立的,所以 ρ = 0 \rho=0 ρ=0,假设噪声 σ w = σ y = 1 \sigma_{w}=\sigma_{y}=1 σw=σy=1。当真值 μ z = μ y μ w \mu_{z}=\frac{\mu_y}{\mu_{w}} μz=μwμy不同时,由上图可视化结果可以分析得到, μ w 、 μ y \mu_{w}、\mu_{y} μwμy越小,分布在 μ z \mu_{z} μz的聚类峰不再显著,原因是 △ t \triangle t t越小, μ w 、 μ y \mu_{w}、\mu_{y} μwμy越小,越接近噪声 σ y \sigma_{y} σy σ w \sigma_{w} σw,使得噪声占主导。 通过两个连续帧之间的观测来估计速度方向就会出现这种情况,因为观测的方差可以接近物体运动的绝对位移。

这也为上文提到的SORT第一个局限性”Sensitive to State Noise“的结论提供了一个support。

附录B: Interpolation by Gaussian Progress Regression

​ 上文实验中,证明在线插值中,使用GPR并不可行。考虑将其引入到离线插值(post-processing),插值的最大时间间隔设置为20帧,考虑用上文一样的核函数。

在这里插入图片描述

​ 结果证明GPR在线和离线插值都无法提高其跟踪性能。

B.1 Choice of Kernel Function in Gaussian Process

​ 当没有额外的有关时间序列数据的信息时 ,通常使用RBF核函数(径向基核函数 (Radial Basis Function)):
k ( x , x ′ ) = σ 2 e x p ( − ∣ ∣ x − x ′ ∣ ∣ 2 2 l 2 ) (13) k(x,x')=\sigma^{2}exp(-\frac{||x-x'||^2}{2l^2})\tag{13} k(x,x)=σ2exp(2l2∣∣xx2)(13)
​ 其中, l l l是拟合数据的长度尺度,决定了目标函数“摆动"的长度, σ 2 \sigma^2 σ2是决定函数距离其均值的平均距离的方差。通常认为GPR对 l l l敏感

B.2 GPR for Offline Interpolation

​ 作者对缺失轨迹进行离线处理时,做了ablation study,来比较GPR和LI(线性插值)的效果。设置 σ = 1 \sigma =1 σ=1,训练数据为 [ u , v , w , h ] [u,v,w,h] [u,v,w,h]

​ 下表可以看到,使用LI在一定程度上可以提高有关跟踪性能的多个指标,而直接使用GPR反而会降低性能,并且对 l l l不敏感。

在这里插入图片描述

​ 作者分析造成GPR性能低下的原因主要有两个:1、提供给GPR训练的数据点非常有限;2、中间数据点的缺失使得数据序列不连续;

​ 随后作者在实验中发现,首先通过使用LI对缺失轨迹进行插值然后使用GPR对插值步骤进行平滑以此来解决第二个问题,这样做要比直接使用GPR进行回归更加有效。

可以看到在MO17上还是LI性能比较好,但在DanceTrack上GPR+LI性能更好,应该是后者场景非线性更强的原因

​ 通过修正GPR的数据缺失问题,使其可以在非线性轨迹情况下对LI进行更精确的轨迹拟合。但是考虑到GPR的表现与LI相比仍然很小,并且GPR需要更重的计算开销,因此作者不建议在大多数MOT任务中使用这种做法。选择何种方式对轨迹进行插值(离线or在线)仍然值得研究。

附录C:Results on More Benchmarks

  • Results on More Benchmarks

在这里插入图片描述

  • Public Tracking on MOT17 and MOT20

在这里插入图片描述

附录D:Pseudo-code of OC-SORT

附录E:More Results on DanceTrack

​ 在DanceTrack上直观比较OC-SORT相较于baseline(SORT)的性能提升

在这里插入图片描述

附录F:Integrate Appearance into OC-SORT

Deep OC-SORT

附录G:More Discussion of State Noise Sensitivity

​ 上文有关速度噪声将会放大位置估计的噪声这一结论,是在一个简化模型中分析得到的(速度仅由状态估计计算,噪声在不同时间步上独立),因此在本节中,作者提供了更一般的证明。

In Section 3.2.1, we show that the noise of state estimate will be amplified to the noise of velocity estimate. This is because the velocity estimate is correlated to the state estimate. But the analysis is in a simplified model in which velocity itself does not gain noise from the transition directly and the noise of state estimate is i.i.d on different steps. However, in the general case, such a simplification does not hold. We now provide a more general analysis of the state noise sensitivity of SORT. (???)

​ 对于(1)中的预测过程,不在描述为平均状态估计,而是进一步考虑状态估计的噪声预测,表示为:
x t ∣ t − 1 = F t x t − 1 ∣ t − 1 + w t (14) x_{t|t-1}=F_{t}x_{t-1|t-1}+w_{t}\tag{14} xtt1=Ftxt1∣t1+wt(14)
​ 其中, w t w_{t} wt是过程噪声,且服从 w t ∼ N ( 0 , Q t ) w_t \sim \mathcal{N}(0,Q_t) wtN(0,Qt); x t = [ u , v , s , r , u ˙ , v ˙ , s ˙ ] T x_t=[u,v,s,r,\dot{u},\dot{v},\dot{s}]^{T} xt=[u,v,s,r,u˙,v˙,s˙]T,因此,速度噪声不仅来自于位置估计,也来自于速度估计。同时,速度项的噪声会放大下一时刻位置估计的噪声。

​ 过程噪声Q和运动转移方程F为:
Q t = [ σ u 2 0 0 0 0 0 0 0 σ v 2 0 0 0 0 0 0 0 σ s 2 0 0 0 0 0 0 0 σ r 2 0 0 0 0 0 0 0 σ u ˙ 2 0 0 0 0 0 0 0 σ v ˙ 2 0 0 0 0 0 0 0 σ s ˙ 2 ] (15) Q_{t}=\begin{bmatrix} \sigma^2_{u} & 0 & 0&0&0&0&0 \\ 0 & \sigma^2_{v} & 0&0&0&0&0 \\ 0 & 0 & \sigma^2_{s}&0&0&0&0 \\ 0 & 0 & 0&\sigma^2_{r}&0&0&0 \\ 0 & 0 & 0&0&\sigma^2_{\dot{u}}&0&0 \\ 0 & 0 & 0&0&0&\sigma^2_{\dot{v}}&0 \\ 0 & 0 & 0&0&0&0&\sigma^2_{\dot{s}} \end{bmatrix} \tag{15} Qt= σu20000000σv20000000σs20000000σr20000000σu˙20000000σv˙20000000σs˙2 (15)

F t = [ 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 ] (16) F_{t}=\begin{bmatrix} 1 & 0 & 0&0&1&0&0 \\ 0 & 1 & 0&0&0&1&0 \\ 0 & 0 & 1&0&0&0&1 \\ 0 & 0 & 0&1&0&0&0 \\ 0 & 0 & 0&0&1&0&0 \\ 0 & 0 & 0&0&0&1&0 \\ 0 & 0 & 0&0&0&0&1 \end{bmatrix} \tag{16} Ft= 1000000010000000100000001000100010001000100010001 (16)

​ 假设当一条轨迹开始丢失的时间步为 t 0 t_0 t0,同时不考虑先前时间步上积累的噪声。只考虑x上方向的运动(y同理),则位置噪声和速度噪声可表示为:
{ δ u t 0 ∼ N ( 0 , σ u 2 ) , δ u ˙ t 0 ∼ N ( 0 , σ u ˙ 2 ) (17) \begin{cases} \delta_{u_{t_0}}\sim\mathcal{N}(0,\sigma^2_{u}),\\\delta_{\dot{u}_{t_0}}\sim\mathcal{N}(0,\sigma^2_{\dot{u}})\tag{17} \end{cases} { δut0N(0,σu2),δu˙t0N(0,σu˙2)(17)
​ 在下一个时间步上,由于没有观测进行修正,误差将被累计:
{ δ u t 0 + 1 ∼ N ( 0 , 2 σ u 2 + σ u ˙ 2 ) , δ u ˙ t 0 + 1 ∼ N ( 0 , 2 σ u ˙ 2 ) (18) \begin{cases} \delta_{u_{t_0+1}}\sim\mathcal{N}(0,2\sigma^2_{u}+\sigma^2_{\dot{u}}),\\ \delta_{\dot{u}_{t_0+1}}\sim\mathcal{N}(0,2\sigma^2_{\dot{u}})\tag{18} \end{cases} { δut0+1N(0,2σu2+σu˙2),δu˙t0+1N(0,2σu˙2)(18)
​ 依此类推,T时刻后的累计误差如下所示,将比正文中提到的更大:
δ u t 0 + T ∼ N ( 0 , ( T + 1 ) σ u 2 + 1 2 T ( T + 1 ) σ u ˙ 2 ) (19) \delta_{u_{t_0+T}}\sim\mathcal{N}(0,(T+1)\sigma^2_{u}+\frac{1}{2}T(T+1)\sigma^2_{\dot{u}})\tag{19} δut0+TN(0,(T+1)σu2+21T(T+1)σu˙2)(19)

正文中,累计误差表达如下:
δ u + T ∼ N ( 0 , 2 T 2 σ u 2 ) \delta_{ {u+T}}\sim \mathcal{N}(0, 2T^{2}\sigma_u^2)\\ δu+TN(0,2T2σu2)

​ 在SORT中,由于速度项的噪声太敏感,因此需要对其进行抑制,在代码中Q具体设置为:
Q t = [ 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0.01 0 0 0 0 0 0 0 0.01 0 0 0 0 0 0 0 0.0001 ] (20) Q_{t}=\begin{bmatrix} 1 & 0 & 0&0&0&0&0 \\ 0 & 1 & 0&0&0&0&0 \\ 0 & 0 & 1&0&0&0&0 \\ 0 & 0 & 0&1&0&0&0 \\ 0 & 0 & 0&0&0.01&0&0 \\ 0 & 0 & 0&0&0&0.01&0 \\ 0 & 0 & 0&0&0&0&0.0001 \end{bmatrix} \tag{20} Qt= 100000001000000010000000100000000.0100000000.0100000000.0001 (20)
​ 现在分析速度噪声组成中,位置项和速度项谁是主导,计算位置项和速度项中噪声的比值:
β = ( T + 1 ) σ u 2 0.5 T ( T + 1 ) σ u ˙ 2 = 200 T (21) \beta=\frac{(T+1)\sigma^2_{u}}{0.5T(T+1)\sigma^2_{\dot{u}}}=\frac{200}{T} \tag{21} β=0.5T(T+1)σu˙2(T+1)σu2=T200(21)
​ 在实际应用中,通常设置最大丢失帧数为10帧,因此 β = 20 \beta=20 β=20,由速度项引起的速度噪声可以忽略不计,这使得可以用正文中的简化模型进行噪声分析;

​ 但他同时也带来了一个副作用,即速度项的噪声在运动过程中权重过小,使得SORT中轨迹的速度方向无法在短时间内快速变化。(详情见附录H),这使得当非线性运动和遮挡同时发生时,会提升跟踪器的错误率,因此激发了ORU的设计。

附录H:Intuition behind ORU

​ 一般来说,一旦丢失的轨迹与观测重新关联,其状态估计中积累的误差可以在更新阶段修复。这种方式在KF中是完全合理的。

​ 然而在SORT中,通常将速度项对应的协方差设置的非常小(上文分析),因此在重新关联的步骤中,轨迹很难转向正确的速度方向

在这里插入图片描述

​ 如上图所示,展示了ORU是如何改变lost轨迹在重新关联后的运动趋势,其中每个带阴影部分的圆形区域代表预测和检测能成功关联跟踪的合格范围。

​ (a)图显示在 t 1 t_1 t1时刻轨迹丢失,在 t 2 t_2 t2时刻重新关联。

​ (b)图显示在没有ORU的情况下,即使 t 2 t_2 t2时刻KF状态被 z t 2 z_{t2} zt2更新,在 t 2 + 1 t_2+1 t2+1时刻,真实目标轨迹与KF估计值之间仍然存在方向差异,导致关联失败,轨迹再次丢失

​ © 图显示在使用ORU的情况下,通过更新遮挡期间的KF参数(速度),得到了明显的目标状态变化(尤其是运动方向),此时,在 t 2 + 1 t_2+1 t2+1时刻,状态估计(红色)更加接近观测值,可以成功关联

​ 从上述图例中可以发现,在SORT中,即使丢失的轨迹在与观测值重新关联后,更新后的轨迹速度方向与真实值仍有显著差异,原因就在于附录G中对Q的约束。而使用了ORU之中的虚拟轨迹,即使Q中速度项方差很小,但仍可以有效校准轨迹的速度方向。

其实并没有改进KF,而是基于观察得出SORT中基于KF做法的局限性,并思考怎么样可以在MOT中把SORT用的更好。

​ 假设轨迹在 t 1 t_1 t1时刻丢失,在 t 2 t_2 t2时刻被重新关联。假设 t 1 t_1 t1时刻后验状态估计是
KaTeX parse error: Got group of unknown type: 'internal'
t 1 t_1 t1时刻后验协方差是
P t 1 ∣ t 1 = [ σ u 1 2 0 0 0 0 0 0 0 σ v 1 2 0 0 0 0 0 0 0 σ s 1 2 0 0 0 0 0 0 0 σ r 1 2 0 0 0 0 0 0 0 σ u ˙ 1 2 0 0 0 0 0 0 0 σ v 1 ˙ 2 0 0 0 0 0 0 0 σ s ˙ 1 2 ] (23) P_{t_1|t_1}=\begin{bmatrix} \sigma^2_{u_1} & 0 & 0&0&0&0&0 \\ 0 & \sigma^2_{v_1} & 0&0&0&0&0 \\ 0 & 0 & \sigma^2_{s_1}&0&0&0&0 \\ 0 & 0 & 0&\sigma^2_{r_1}&0&0&0 \\ 0 & 0 & 0&0&\sigma^2_{\dot{u}_1}&0&0 \\ 0 & 0 & 0&0&0&\sigma^2_{\dot{v_1}}&0 \\ 0 & 0 & 0&0&0&0&\sigma^2_{\dot{s}_1} \end{bmatrix} \tag{23} Pt1t1= σu120000000σv120000000σs120000000σr120000000σu˙120000000σv1˙20000000σs˙12 (23)
​ 经过 t △ = ( t 2 − t 1 ) t_\triangle=(t_2-t_1) t=(t2t1)后,在 t 2 t_2 t2时刻,得到先验状态估计
KaTeX parse error: Got group of unknown type: 'internal'
​ 其中,
{ u 2 = u 1 + u ˙ 1 t △ , v 2 = v 1 + v ˙ 1 t △ , s 2 = s 1 + s ˙ 1 t △ , r 2 = r 1 , u ˙ 2 = u ˙ 1 , v ˙ 2 = v ˙ 1 , s ˙ 2 = s ˙ 1 (25) \begin{cases} u_2=u_1+\dot{u}_1t_{\triangle},\\ v_2=v_1+\dot{v}_1t_{\triangle},\\ s_2=s_1+\dot{s}_1t_{\triangle},\\ r_2=r_1,\\ \dot{u}_2=\dot{u}_1,\\ \dot{v}_2=\dot{v}_1,\\ \dot{s}_2=\dot{s}_1 \end{cases}\tag{25} u2=u1+u˙1t,v2=v1+v˙1t,s2=s1+s˙1t,r2=r1,u˙2=u˙1,v˙2=v˙1,s˙2=s˙1(25)
​ 在 t 2 t_2 t2时刻,得到先验协方差为:
P t 2 ∣ t 2 − 1 = [ σ u 2 2 0 0 0 0 0 0 0 σ v 2 2 0 0 0 0 0 0 0 σ s 2 2 0 0 0 0 0 0 0 σ r 2 2 0 0 0 0 0 0 0 σ u ˙ 2 2 0 0 0 0 0 0 0 σ v 2 ˙ 2 0 0 0 0 0 0 0 σ s ˙ 2 2 ] (26) P_{t_2|t_2-1}=\begin{bmatrix} \sigma^2_{u_2} & 0 & 0&0&0&0&0 \\ 0 & \sigma^2_{v_2} & 0&0&0&0&0 \\ 0 & 0 & \sigma^2_{s_2}&0&0&0&0 \\ 0 & 0 & 0&\sigma^2_{r_2}&0&0&0 \\ 0 & 0 & 0&0&\sigma^2_{\dot{u}_2}&0&0 \\ 0 & 0 & 0&0&0&\sigma^2_{\dot{v_2}}&0 \\ 0 & 0 & 0&0&0&0&\sigma^2_{\dot{s}_2} \end{bmatrix} \tag{26} Pt2t21= σu220000000σv220000000σs220000000σr220000000σu˙220000000σv2˙20000000σs˙22 (26)
​ 其中,

{ σ u 2 2 = σ u 1 2 + t △ ( σ u 2 + σ u ˙ 1 2 ) + t △ ( t △ − 1 ) 2 σ u ˙ 2 σ v 2 2 = σ v 1 2 + t △ ( σ v 2 + σ v ˙ 1 2 ) + t △ ( t △ − 1 ) 2 σ v ˙ 2 σ s 2 2 = σ s 1 2 + t △ ( σ s 2 + σ s ˙ 1 2 ) + t △ ( t △ − 1 ) 2 σ s ˙ 2 σ r 2 2 = σ r 1 2 + t △ σ r 2 σ u ˙ 2 2 = σ u ˙ 1 2 + t △ σ u ˙ 2 σ v ˙ 2 2 = σ v ˙ 1 2 + t △ σ v ˙ 2 σ s ˙ 2 2 = σ s ˙ 1 2 + t △ σ s ˙ 2 (27) \begin{cases} \sigma^2_{u_2}=\sigma^2_{u_1}+t\triangle(\sigma^2_u+\sigma^2_{\dot{u}_1})+\frac{t\triangle(t\triangle-1)}{2}\sigma^2_{\dot{u}} \\ \sigma^2_{v_2}=\sigma^2_{v_1}+t\triangle(\sigma^2_v+\sigma^2_{\dot{v}_1})+\frac{t\triangle(t\triangle-1)}{2}\sigma^2_{\dot{v}}\\ \sigma^2_{s_2}=\sigma^2_{s_1}+t\triangle(\sigma^2_s+\sigma^2_{\dot{s}_1})+\frac{t\triangle(t\triangle-1)}{2}\sigma^2_{\dot{s}}\\ \sigma^2_{r_2}=\sigma^2_{r_1}+t\triangle\sigma^2_r\\ \sigma^2_{\dot{u}_2}=\sigma^2_{\dot{u}_1}+t\triangle\sigma^2_{\dot{u}}\\ \sigma^2_{\dot{v}_2}=\sigma^2_{\dot{v}_1}+t\triangle\sigma^2_{\dot{v}}\\ \sigma^2_{\dot{s}_2}=\sigma^2_{\dot{s}_1}+t\triangle\sigma^2_{\dot{s}}\\ \end{cases} \tag{27} σu22=σu12+t(σu2+σu˙12)+2t(t1)σu˙2σv22=σv12+t(σv2+σv˙12)+2t(t1)σv˙2σs22=σs12+t(σs2+σs˙12)+2t(t1)σs˙2σr22=σr12+tσr2σu˙22=σu˙12+tσu˙2σv˙22=σv˙12+tσv˙2σs˙22=σs˙12+tσs˙2(27)
如果按照SORT的做法,根据重新关联上的观测值 z t 2 z_{t_2} zt2,则更新步骤为
S O R T − u p d a t e { K t 2 = P t 2 ∣ t 2 − 1 H T ( H P t 2 ∣ t 2 − 1 H T + R t 2 ) − 1 x ^ t 2 ∣ t 2 = x ^ t 2 ∣ t 2 − 1 + K t 2 ( z t 2 − H x ^ t 2 ∣ t 2 − 1 ) P t 2 ∣ t 2 = ( I − K t 2 H ) P t 2 ∣ t 2 − 1 (28) SORT-update \begin{cases} K_{t_2}=P_{t_2|t_2-1}H^T(HP_{t_2|t_2-1}H^T+R_{t_2})^{-1}\\ \hat{x}_{t_2|t_2}=\hat{x}_{t_2|t_2-1}+K_{t_2}(z_{t_2}-H\hat{x}_{t_2|t_2-1})\\ P_{t_2|t_2}=(I-K_{t_2}H)P_{t_2|t_2-1} \tag{28} \end{cases} SORTupdate Kt2=Pt2t21HT(HPt2t21HT+Rt2)1x^t2t2=x^t2t21+Kt2(zt2Hx^t2t21)Pt2t2=(IKt2H)Pt2t21(28)
​ 其中, H H H为:
H = [ 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 ] (29) H=\begin{bmatrix} 1&0&0&0&0&0&0\\ 0&1&0&0&0&0&0\\ 0&0&1&0&0&0&0\\ 0&0&0&1&0&0&0 \end{bmatrix}\tag{29} H= 1000010000100001000000000000 (29)
按照OC-SORT的做法,在丢失的时间间隔内,将生成虚拟轨迹,并在丢失期间对轨迹使用ORU来平滑KF参数,以获得 t 2 t_2 t2时刻的后验估计。使用恒速线性运动模型来生成虚拟轨迹,即
z ~ t = z t 1 + t − t 1 t 2 − t 1 ( z t 2 − z t 1 ) , t 1 < t < t 2 (30) \tilde{z}_t=z_{t_1}+\frac{t-t_1}{t_2-t_1}(z_{t_2}-z_{t_1}),t_1<t<t_2\tag{30} z~t=zt1+t2t1tt1(zt2zt1),t1<t<t2(30)
​ 根据虚拟观测值 z t ~ \tilde{z_{t}} zt~,则更新步骤为
O C S O R T − u p d a t e { K t = P t ∣ t − 1 H t T ( H t P t ∣ t − 1 H t T + R t ) − 1 x ^ t ∣ t = x ^ t ∣ t − 1 + K t ( z ~ t − H t x ^ t ∣ t − 1 ) P t ∣ t = ( I − K t H t ) P t ∣ t − 1 (28) OCSORT-update \begin{cases} K_{t}=P_{t|t-1}H_{t}^T(H_{t}P_{t|t-1}H_{t}^T+R_{t})^{-1}\\ \hat{x}_{t|t}=\hat{x}_{t|t-1}+K_{t}(\tilde{z}_{t}-H_{t}\hat{x}_{t|t-1})\\ P_{t|t}=(I-K_{t}H_{t})P_{t|t-1} \tag{28} \end{cases} OCSORTupdate Kt=Ptt1HtT(HtPtt1HtT+Rt)1x^tt=x^tt1+Kt(z~tHtx^tt1)Ptt=(IKtHt)Ptt1(28)
​ 在KF中,通常假设过程噪声 Q t Q_t Qt是一组恒定的高斯噪声,然而这种假设在实际应用过程中,会造成两方面的冲突。第一方面,当轨迹有与之匹配的观测时,在高帧率的场景下,我们需要过程噪声尽可能小。另一方面,当轨迹失去其观测时,由于过程噪声太小了,导致真实运动方向与线性运动假设所保持的方向之间差异会变大。从而造成即使在重新关联后,SORT在后续帧也可能再次丢失该目标。

Notes:

第一遍阅读这篇文章的时候,只知道作者做了一件什么事情,而且这件事情是基于motion model去做的,并没有深究其背后的原因,甚至不太理解题目中的“Observation-Centric”是什么意思;

第二遍看的时候,对The Limitations of SORT有了点理解,但是不多,只是单纯认为,在遮挡的情况下,KF无法进行更新步,导致协方差发散,预测的位置也可能在遮挡结束后与真实位置大相径庭,导致关联失败(其实根本没协方差什么事);

第三遍看的时候,才发现作者想解决的问题就是轨迹的”速度方向“,原因在于KF中对线性运动模型的假设和SORT在过程噪声中设置很小的速度项误差导致与MOT场景目标的运动模型不符合,特别是在没有观测更新的情况下,估计的速度方向与真实方向差距会越来越大,导致结束遮挡,观测更新后的速度方向依然不正确。因此提出了ORU建立虚拟轨迹,该虚拟轨迹通过两个观测点近似遮挡期间的目标的速度方向,以此来减小速度方向上的差异。 而OCM,也是在关联矩阵中,考虑了方向一致性(之前的IOU匹配的预测框也是在线性运动模型下预测的,可能检测框偏移了方向,就匹配不到了,这个做法相当于在关联阶段也考虑了非线性的问题,而方向一致性的矩阵完全由观测来决定,观测并没有线性运动的先验条件,因此避免了引入KF预测即线性模型的约束)

直到现在,这篇文章中提到的一些细节和观点,仍然没有把握的很具体清晰,对一些证明论据也存在一些疑问。常读常新,一篇好的文章经得起反复推敲,反复琢磨,下次再读到它的时候,应该会有新的角度,新的理解,新的启发性思考。

猜你喜欢

转载自blog.csdn.net/weixin_46084134/article/details/134029684