ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

多目标跟踪中的数据关联:从卡尔曼滤波到Transformer的演进与实战

多目标跟踪中的数据关联:从卡尔曼滤波到Transformer的演进与实战 1. 先聊清楚数据关联到底在解决什么问题多目标跟踪Multi-Object Tracking, MOT这几年火到什么程度自动驾驶、安防监控、智慧零售、机器人导航、体育分析几乎每个跟视觉感知沾边的方向都有它的身影。YOLO系列检测器把每帧里有哪些目标这个问题解决得越来越漂亮可一帧一帧的检测结果只是散落的珍珠数据关联要做的就是那根把珍珠串成项链的线——判断视频第 t 帧里的目标 A到底是第 t-1 帧里的目标 B还是一个刚出现的新目标。很多刚入门的同学会把多目标跟踪直接等同于检测 匹配这没有错但过于简化了。检测把单帧图像里的框给出来而跟踪要输出的是每个目标的身份标识ID和完整轨迹。同一个行人走出画面再走回来他到底还是不是之前的 ID 7两辆车交错之后左边那辆到底是原来的 A 还是 B这些问题统统要靠数据关联来回答。之所以专门写一篇关于数据关联方法的综述是因为在实际项目中我见过太多这样的情况检测模型换了一个又一个mAP 已经刷得很高但跟踪结果就是乱跳 ID、轨迹断裂。查到最后问题几乎都出在数据关联上。检测器的输出质量上限决定了跟踪的天花板可数据关联方法的选择直接决定了你能不能摸到那块天花板。这篇文章不打算面面俱到地罗列所有论文而是想把数据关联这条技术线的来龙去脉讲透从经典的概率方法到图优化方法再到如今深度学习和 Transformer 主导的端到端方案每一类方法到底解决什么问题、牺牲了什么、适合什么场景以及我在实际项目里踩过的坑和使用心得。内容会尽量保持结构清晰但也保留一点我做研究和工程时的真实视角毕竟综述除了复述方法更重要的价值是帮读者建立判断力。2. 从问题定义出发为什么数据关联看起来简单做起来头大2.1 形式化定义SORT 框架下的关联是什么数据关联的一个经典定义场景是这样的。假设在第 t 帧检测器给出了 N 个检测框 D_t {d_t^1, d_t^2, ..., d_t^N}而跟踪器维护着 M 条已有的轨迹 T {T^1, T^2, ..., T^M}。这 M 条轨迹是通过前 t-1 帧的历史信息推测出来的。数据关联要做的事就是为每一个检测框分配一个标签要么它属于已有的某条轨迹要么它是一个新出现的轨迹。如果把问题拆得更细一点还涉及轨迹的终止。如果一个目标消失了好几帧跟踪器是立刻把轨迹删掉还是再等几帧这些都属于数据关联的范畴。所以在很多实现里数据关联模块的输出其实是一种分配结果可以用一个关联矩阵来表示矩阵的行是已有轨迹列是当前帧的检测框矩阵元素表示轨迹和检测框之间的匹配代价或相似度。2.2 难点之一不确定性的叠加数据关联之所以难首先在于它面对的是双重不确定性。第一重是检测的不确定性。检测器不是完美的可能出现漏检目标明明在但没有检测框、虚检背景被当成目标、框的抖动同一目标在不同帧的框大小和位置有偏差。如果直接把检测框的 IoU 当作关联依据一个轻微的框抖动就可能导致匹配失败。第二重是运动的不确定性。目标不是静止的行人的走路方向会变车辆会加速减速甚至会被遮挡。我们常用卡尔曼滤波来预测轨迹在当前帧的位置但卡尔曼滤波本身也只是一个基于匀速或匀加速模型的预测目标一旦出现机动预测位置就会偏移。关联算法必须在这些误差存在的情况下依然做出正确的谁是谁的判断。有一句话我特别喜欢检测解决的是有没有关联解决的是是不是。前者是个感知问题后者在某种意义上是个决策问题要在不确定信息下做最优决策这远比想象中复杂。2.3 难点之二关联的全局性单帧的局部关联看起来容易——把每个检测框和最近的轨迹预测框配一下不就行了但局部贪心往往带来全局灾难。一个经典的反例是在拥挤场景中A 和 B 两个行人交叉而过。如果只按当前帧的最短距离做贪心匹配很有可能把 A 的检测框错误地分配给 B 的轨迹虽然当前这帧看起来差不多但接下来几帧错误会越滚越大最终导致两条轨迹的 ID 互换。这就是多目标跟踪里常说的 ID Switch。因此数据关联在理想情况下应该是一种全局优化不仅要考虑当前帧的匹配还要考虑整个序列中所有帧、所有轨迹的联合概率。但全局优化意味着计算量巨大实时性难以保证所以几乎所有方法都在全局最优和实时计算之间做折中。理解这个折中是理解后续所有方法的核心钥匙。3. 经典概率路线JPDA 与 MHT 的荣光与局限3.1 单目标时代的先锋贝叶斯滤波与最近邻在深入多目标方法之前有必要回顾一下单目标跟踪里的经典思路。单目标场景下的关联问题通常被称为量测-航迹关联。最简单的做法是最近邻Nearest Neighbor, NN即把当前帧的检测框中距离预测位置最近的那个作为目标的新位置。这个方法的优点是快、简单但缺点很致命一旦检测框有噪声或者有其他目标干扰最近邻很容易选错。概率数据关联PDA则换了一种思路不再强制选择唯一一个检测框而是把当前帧所有候选检测框都纳入考虑按它们各自的后验概率做加权融合。PDA 的思想后来也被证明有很强的生命力但它的前提是场景中只有一个目标多目标情况下需要扩展。3.2 JPDA联合概率在哪儿联合JPDAJoint Probabilistic Data Association把 PDA 从单目标推广到了多目标。它的核心思路是枚举当前帧所有可能的轨迹-检测框分配假设计算每个假设的联合概率然后对每个轨迹把所有假设中分配给该轨迹的检测框按概率加权求和作为该轨迹的更新值。听起来很完美但有一个致命问题分配假设的数量会随着目标和检测框数量呈指数爆炸。假设有 M 条轨迹和 N 个检测框理论上要考虑的联合事件数量是组合级的。即便采用一些剪枝简化手段在密集场景下计算负担仍然大到无法实时。JPDA 的另一个问题是它本质上仍然是一种帧级的关联没有利用长时段的轨迹信息所以对长时间遮挡的场景表现得比较乏力。我在早期复现 JPDA 的时候发现真正实现的时候几乎没有文章里写得那么简单因为联合概率的计算涉及特征值分解、矩阵求逆数值稳定性稍不注意就会崩掉。而且 JPDA 很不适合工程里常见的检测噪声一旦虚检率偏高联合事件的规模会迅速膨胀。3.3 MHT把假设树做到底MHTMultiple Hypothesis Tracking是另一个经典思路。它不走帧级加权的路而是把关联决策推迟到未来维护一棵棵假设树。每棵树的根是一个新轨迹的出现树的每条路径代表一种关联历史。当新检测框到来时MHT 会为每个现有假设扩展出关联到轨迹 A、关联到轨迹 B、新轨迹、虚警等不同分支然后在未来帧到来时再统一剪枝保留概率最高的若干分支。MHT 的优势在于它天然是全局的可以处理长时间遮挡、轨迹交叉等复杂情况。军事雷达跟踪领域长期用它性能确实好。但它的工程实现难度极高需要设计合理的假设管理策略、概率计算、剪枝阈值。计算量在目标密集时同样会爆炸绝大多数实际项目不会直接裸用 MHT而是用它的简化变体如 track-oriented MHT或者借鉴它的思想。从 JPDA 到 MHT可以看到一条主线从单帧联合到多帧联合从局部贪心到全局假设。但经典方法普遍存在一个回不去的坎——手工设计的关联特征太薄弱。它们主要依赖位置、速度、IoU 这样的运动特征无法利用目标的表观信息长什么样所以一旦目标运动模式复杂或者检测噪声高就力不从心。3.4 经典方法给我的教训特征比算法更先决定上限我在处理一个校园监控场景时用基于 IoU 的关联算法做人形跟踪发现只要两个人擦肩而过ID 就疯狂互换。后来我仔细分析了原因室内走廊里的人运动方向高度相近位置特征几乎无法区分他们。也就是说问题不是关联算法不好而是我给算法的输入特征太菜。这让我明白了一个道理数据关联的下限由算法决定上限却由特征决定。在考虑任何复杂的关联算法之前先想清楚——你用于关联的特征表达到底够不够好。4. 从概率到图二分图匹配与匈牙利算法的工程霸主地位4.1 为什么工程里几乎都是匈牙利算法进入深度学习之前的工程时代多目标跟踪的标配几乎是卡尔曼滤波 匈牙利算法。为什么因为计算快、实现简单、效果在稀疏场景下完全够用。SORT 这篇论文把这条路线推到极致只用检测框的位置和速度做关联用 IoU 作为代价矩阵就能在不少基准上取得不错的 MOTA。这让所有人意识到数据关联问题可以建模成一个二分图最大权匹配问题。匈牙利算法的输入是一个代价矩阵输出是一个全局最优的一对一匹配。它保证在给定代价矩阵的情况下找到使总代价最小或总收益最大的匹配方案。与贪心匹配相比它是全局最优的避免了许多局部陷阱。时间复杂度 O(n^3) 对于数百个目标以内的场景完全可控。不过要注意匈牙利算法处理的是硬分配每个检测框要么分配给一条轨迹要么不分配没有中间状态。这种硬分配的好处是确定性坏处是对误检非常敏感。一个误检框如果恰好离某条轨迹很近就会被硬生生匹配上把轨迹带偏。所以工程上使用匈牙利算法时通常会在前面加一个门控Gating步骤只有当检测框与轨迹预测的相似度超过某个阈值时才允许候选匹配否则直接视为新轨迹或虚警。门控能过滤掉大量明显不可能的配对也减小了代价矩阵的尺寸。4.2 代价矩阵的设计IoU、运动模型与表观特征匈牙利算法只负责怎么匹配但匹配代价怎么算才是真正的灵魂。常见的代价矩阵设计有这几类基于 IoU 的代价轨迹预测框与检测框的交并比。SORT 直接用它计算快且无需额外特征提取但只适用于帧间位移小、目标稀疏的场景。基于运动模型的代价用卡尔曼滤波预测当前帧的轨迹位置然后计算检测框中心与预测中心的马氏距离Mahalanobis Distance再叠加 IoU 代价。DeepSORT 在这方面给出了一种很好的融合实践它把马氏距离和表观特征余弦距离加权组合并分别设置阈值要求两项都必须通过门控。基于表观特征的代价提取检测框内的外观特征如 ReID 特征、颜色直方图计算轨迹历史特征库与当前检测特征的余弦相似度。这一步引入表观信息是为了让关联不再完全依赖运动学的预测从而在目标短暂遮挡后仍能找回。这里特别想提醒一点代价矩阵的权重不是拍脑袋定的。我见过很多人直接把马氏距离和余弦距离的权重设为 1:1效果很差。更合理的做法是根据数据分布统计两类代价的量级。实际操作中可以分别计算两种代价在整个验证集上的均值和标准差做标准化后再加权也可以在验证集上扫描权重组合选 MOTA 最高的那组。DeepSORT 原论文里用了两个阈值分别控制马氏距离和余弦距离这是一个容易被初学者忽略的细节先各自用阈值筛掉不可能的匹配再让匈牙利算法在剩余候选中找全局最优。4.3 级联匹配处理遮挡后的恢复DeepSORT 里还有一个非常工程化的操作叫级联匹配Cascade Matching。它的动机很朴素当目标被遮挡再出现时基于运动模型的预测通常已经发散表观特征才是可靠的线索但与此同时新出现的目标由于还没来得及建立稳定的特征历史库表观特征也不可靠。如果统一让所有轨迹和检测框做一一匹配被遮挡很久的旧轨迹很可能抢走本该分配给新目标的检测框造成新目标永远无法建立轨迹。级联匹配的思路是把轨迹按上一次成功关联的帧数分层优先为那些最近连续匹配失败的轨迹做匹配匹配完后再处理更久没匹配的轨迹。这样做能显著降低长时遮挡后的 ID Switch。我自己在实测中感受到级联匹配并不是理论上的必选但在行人密集、频繁遮挡的场景里它对 MOTA 的提升往往非常可观而且代码实现不过几十行性价比极高。4.4 图优化流派网络流与最小费用最大流匈牙利算法解决的是两帧之间的匹配而图优化流派想更进一步把整个视频序列建模成一张图节点是检测框边是跨帧的候选连接目标是在整张图上找一组最优路径使总收益最大。这类方法的代表是网络流Network Flow模型和最小费用最大流Min-Cost Max-Flow求解。网络流建模的经典做法是每个检测框拆成入点和出点从出点连向后续帧的入点边的费用可以设计为两帧框之间的表观相似度负对数同时设置源点和汇点让每条从源到汇的路径代表一条轨迹。求解最小费用最大流实际上就是在全局范围内切出若干条不交叉的轨迹路径。它的好处是保持了全局最优性与 MHT 相比有更成熟的多项式算法如连续最短路算法Successive Shortest Path能够处理上百个目标的中等规模场景。这类方法在学术上非常优雅但工程落地时有一个问题整个视频的图构建需要提前知道所有帧的检测结果难以做到真正的在线实时处理。当然也有一批工作研究在线网络流比如通过滑动窗口不断滚动构建局部图并重新求解但与匈牙利算法的简洁性相比工程复杂度还是高了不少。5. 深度学习崛起从表观特征到端到端关联5.1 深度特征给数据关联带来的改变深度学习真正改变数据关联的第一步并不是推翻匈牙利算法而是用深度 ReID 特征替换手工设计的表观特征。以 DeepSORT 为代表的一批工作证明了一个简单但训练良好的 ReID 模型能从行人图像中提取出判别力极强的表观特征让关联算法在遮挡、姿态变化、光照变化下依然保持稳健。这条路线后来演化为两个方向。一个是检测与 ReID 联合训练的 JDEJoint Detection and Embedding类方法比如 FairMOT、CSTrack它们让检测器同时输出检测框和表观嵌入向量省去单独跑 ReID 模型的开销另一个方向是继续沿用分离式检测与 ReID只是在 ReID 模型结构上不断升级。在使用这些方法时有一个问题很容易被忽略ReID 特征并不是为跟踪场景专门训练的它学到的判别力可能过度依赖数据集。比如用 Market-1501 训练的 ReID 模型往往对行人衣着敏感如果场景里两个人穿同款衣服比如校服、工服ReID 特征的区分度就断崖式下跌。所以工程落地时有条件的话一定要用场景内数据微调 ReID这比换什么关联算法都管用。5.2 图神经网络怎么参与关联深度学习的第二波影响是把关联过程本身变成可学习的网络模块。图神经网络GNN在多目标跟踪中的应用是这一波的重要代表。核心思路是把每一帧的检测框看成图的节点节点特征是检测框内的表观特征与位置特征边代表候选关联然后在图上做消息传递让节点聚合邻居信息最终输出每条边的连接概率。这类方法在理论上很有意思因为它让模型自己学习如何利用上下文判断关联。比如当两个目标外观相似、运动却相反时GNN 可以通过边上的运动特征学到即使长得像也不该连。相比之下手工设计的代价矩阵加匈牙利算法就很难表达这种复杂的交互。但 GNN 类方法也有工程上的麻烦图构建的超参数邻域大小、候选边阈值对结果影响很大训练过程通常需要先有一个不错的关联结果作为伪标签否则模型学不出来推理时的计算图结构随目标数量变化对部署不友好。我在实际项目中尝试过图网络方案效果确实有提升但代价是调试周期明显拉长。如果你追求可控性和快速迭代初期还是不建议一上来就上 GNN。5.3 让关联模块可微端到端跟踪的本质传统跟踪方法的最大痛点是分离检测模块和关联模块分开训练关联模块依赖手工设计的规则无法根据最终 MOTA 指标反向传播误差。端到端跟踪想解决的就是这个问题——把检测和关联放进同一个网络训练。这个方向的代表作包括 TrackFormer、MOTR、TransTrack 等。它们把多目标跟踪改写成集合预测问题每一条轨迹就是一个查询Query解码器输出当前帧的检测框和轨迹 ID。Transformer 的自注意力机制天然可以建模目标之间的交互从而在解码阶段隐式地做了数据关联。使用这类模型最直观的感受是你不再需要显式地写卡尔曼滤波和匈牙利算法了模型自己学会了跨帧对齐和 ID 分配。这在很多公开基准上确实表现惊艳而且在遮挡、拥挤场景中比传统两阶段方法更鲁棒。但端到端模型的训练极其消耗资源需要很大的显存和很长的训练时间调参也更复杂。推理时虽然有硬件加速但实时性在小算力设备上依然是个挑战。换个角度想端到端模型并不是完全抛弃了数据关联而是把关联从显式的优化问题变成了隐式的表示学习问题。它不再给你一个清晰的代价矩阵而是把关联决策藏在了注意力权重里。这种暗箱化带来性能收益的同时也降低了可解释性和可调试性。如果线上效果出了问题你很难像查匈牙利算法的代价矩阵那样一层层定位问题在哪里。5.4 Transformer 时代的关联范式转移从技术演进的逻辑来看数据关联经历了一个清晰的转向经典概率方法依赖假设-检验-剪枝图方法依赖建模-优化深度学习方法则依赖学习-推理。每一种范式都在试图解决前一种范式遗留下来的核心短板。Transformer 出现之后关联范式进一步发生转移。在 MOTR 这类方法中轨迹不再是一组历史检测框而是一个不断被更新的查询向量关联也不再是逐帧匹配而是查询与检测在注意力空间中的对应关系。这个范式的优点是可以天然处理长时遮挡因为查询向量在遮挡期间可以被保留并在目标重新出现后重新激活。不过Transformer 类跟踪器在工程上依然没有一个统一的最佳实践。比如查询数量的设定、轨迹终止条件的控制、损失函数的权重往往直接决定效果好坏。对这些超参数的敏感性是很多团队在实际部署时最后选择放弃端到端方案的原因。我的建议是如果场景相对固定且你有较强的训练资源和调参能力端到端方案值得投入如果产品需要快速迭代和稳定复现经典检测 ReID 卡尔曼 匈牙利的组合仍然是更稳的选择。6. 评价指标别再只盯着 MOTA 了6.1 MOTA、MOTP、IDF1、HOTA 各自在说什么数据关联方法的效果最终要靠指标来量化。很多文章会简单报一个 MOTA但 MOTA 真的能反映数据关联的质量吗我们仔细拆一下。MOTAMultiple Object Tracking Accuracy的计算公式是MOTA 1 - (FN FP IDSW) / GT其中 FN 是漏检数FP 是虚检数IDSW 是身份切换次数GT 是真实目标数。可以看到MOTA 对检测质量极其敏感漏检和虚检在公式里占了大头IDSW 的权重相对很低。这意味着一个检测很准但关联很差的方法MOTA 看起来可能还不错一个检测稍有波动但关联极其稳健的方法MOTA 反而可能很难看。所以我一直认为单看 MOTA 会严重低估数据关联的价值。MOTPMultiple Object Tracking Precision衡量的是跟踪框与真实框的重叠精度它本质上衡量的是检测框回归的精度而不是关联质量。如果只写 MOTP读者你根本无法判断这篇工作的关联好还是不好。IDF1 则是从身份匹配角度计算的指标统计的是正确匹配的 ID 占所有匹配数的比例。它比 MOTA 更关注 ID 的稳定性当数据关联方法减少了 ID Switch 时IDF1 会有直观的提升。但这个指标也有局限它对轨迹的碎片化非常敏感会把一个长轨迹拆成多个短轨迹的问题暴露得很明显。HOTAHigher Order Tracking Accuracy是 2020 年后逐渐流行的综合评价指标。它把检测质量和关联质量拆开用 IoU 阈值做分层次的评估既关注检测准不准也关注关联对不对。HOTA 的关联子项可以更真实地反映数据关联方法的优劣。我在对比实验里通常同时报 MOTA、IDF1、HOTA 三组数据这样读者才能看清楚一个方法到底是靠提升检测上分还是靠提升关联上分。6.2 评测中的常见误区误区一只报训练集或自己采集的数据集上的指标。多目标跟踪模型的数据分布差异极大公开数据集上效果好不代表真实场景中同样出色尤其是行人密度、遮挡频率、相机运动模式都会显著影响数据关联的表现。误区二忽略指标的计算细节。不同工具包对匹配阈值的默认设置不同对匹配上的条件定义不同直接横向对比会得到错误结论。我在对比几种方法时特意统一了 TrackEval 的版本和参数才保证结果有可比性。误区三选用零碎轨迹的测试序列来评价。由于 HOTA 和 IDF1 都强调 ID 的连续性如果你的测试视频本身存在大量目标出画、入画的情况这些指标会被大幅拉低而这不完全是数据关联的锅。建议在评测时单独统计一下理想可跟踪时长和平均遮挡时长这些数据能帮你更合理归因。6.3 实际项目中我如何做指标解读在多目标跟踪的工程落地中我会把指标按算法迭代和用户体验两个层面拆开看。算法迭代时我会重点看 HOTA 的关联子项AssA、IDF1 和 IDSW 次数因为它们直接反映数据关联是否在变好同时保留 MOTA用于和过往方法对齐。用户体验方面我会额外统计轨迹平均长度和最大持续跟踪时长因为很多业务方真正关心的是能不能每 10 秒内稳定地跟随同一个顾客而不是一个综合分数。有一个案例让我印象深刻一套模型 MOTA 提升 3 个点但业务反馈说体验变差了。后来排查发现MOTA 的提升主要来自检测更准而 IDSW 反而增加了顾客频繁被识别成新的人。如果只看 MOTA这次迭代是成功的但结合 IDF1 和 HOTA 看这次关联质量其实退步了。从那以后我在任何跟踪项目的验收单上都会强制要求同时列出三类指标缺一不可。7. 工程落地选型不同场景下数据关联方案怎么定7.1 低速稀疏场景直接上卡尔曼 匈牙利如果你做的是工厂里传送带上的工件计数、仓库门口的人流量统计这类场景目标少、运动相对平稳、遮挡不严重直接采用检测器 卡尔曼滤波 IoU/位置代价 匈牙利匹配就够了。没必要引入 ReID也没必要用复杂的图模型。SORT 论文已经证明这套方案在简单场景下可以跑到很高的速度。这个方案落地时有两个细节值得注意。第一卡尔曼滤波的状态表示需要根据相机视角调整如果是俯视视角匀速模型通常够用如果是平视视角且目标有加速、减速建议把状态空间扩到含加速度项。第二IoU 代价对目标尺度比较敏感如果目标在画面中忽大忽小典型的如无人机俯拍车辆IoU 会剧烈波动这时优先考虑中心点距离 尺度比的代价而不是纯 IoU。7.2 密集人流场景必须引入表观特征与级联匹配行人密集、频繁遮挡、外观相似度高——这类场景是最考验数据关联的。最简单有效的升级路线是检测 ReID 卡尔曼 级联匹配 匈牙利。这个方案在 MOT17、MOT20 上可以做到不错的效果也是目前绝大多数安防系统的默认架构。这里的 ReID 特征需要注意几点。一是特征维度不需要太高128 维到 512 维足够太高反而可能过拟合二是每条轨迹维护的特征历史库应该有帧数上限通常保留最近 30 到 50 帧的特征做均值或最近邻查询不然一个长时间处于遮挡状态的轨迹特征会漂移得很厉害三是余弦距离阈值要根据场景单独标定我一般会在验证集上画相似度分布曲线找一个让误匹配和新目标误判率均衡的切点。另外遮挡处理不能只靠关联算法。如果目标被遮挡超过 30 帧哪怕 ReID 特征再强也极难找回。工程上常见的做法是轨迹冻结当轨迹连续 N 帧没有匹配到检测框时先不删除而是标记为丢失状态并在后续帧保留一个搜索区域当有检测框落进搜索区域且表观特征足够相似时再恢复。搜索区域的范围应根据目标的运动速度动态调整避免搜索范围过大导致误匹配。7.3 车辆与高速运动目标运动模型的重要性超过表观特征车辆跟踪和行人跟踪有个显著区别车辆是刚体运动机动性强、速度快而且不同车辆的外观相似度可能极高同款黑色轿车。这种情况下表观特征的判别力不够稳定运动模型反而更可靠。使用匀加速模型或恒定转弯率速度模型CTRV配合卡尔曼滤波往往比堆 ReID 更有用。在车辆交叉口或高速公路上还有一个非常关键的工程技巧利用车道线或道路约束来限制关联候选集。如果车辆在车道 1下一帧就不太可能跳到车道 3。这种利用场景先验的做法能大幅降低代价矩阵的模糊性。相反如果完全依赖通用 ReID 特征在光线变化强烈的高速场景里反而容易被阳光反射等干扰带偏。7.4 离线批量场景图优化和网络流更值得投资有些业务并不要求实时比如体育比赛战术分析、野生动物行为研究、后台取证分析。这类场景下整段视频的检测结果一次性拿全可以离线做全局优化。此时图优化类方法网络流、最小费用最大流就非常有价值它们可以利用未来帧的信息来纠正当帧的关联错误。我做过一个羽毛球运动员跟踪项目由于运动员动作剧烈、遮挡频繁在线匈牙利算法几乎无法保持 ID 稳定。后来改成先检测整场比赛、再构建全局图做最小费用最大流求解ID Switch 下降了接近一半。代价是计算时间从原本的随帧实时变成了比赛结束后统一处理但对业务来说完全可接受。离线批次里还可以叠加一些后处理技巧比如轨迹平滑、短轨迹删除、断链修补。用全局信息来修正局部错误是离线方案对在线方案的一大优势。7.5 选型决策表下面这个表是我在实际项目里常用的选型参考供读者快速定位。场景特征推荐方案主要优点主要风险目标少、运动平稳、实时要求高检测 卡尔曼 IoU 匈牙利简单、快速、部署容易遮挡和密集场景下 ID 容易跳变行人密集、遮挡频繁、实时要求高检测 ReID 卡尔曼 级联匹配 匈牙利在复杂行人场景中稳健性较好需要训练 ReID特征域迁移需微调车辆、高速机动目标检测 运动模型CTRV/匀加速 匈牙利 场景约束运动鲁棒不依赖外观外观相近时可能互相抢 ID体育分析、离线分析检测 网络流/全局图优化全局信息可大幅提升关联准确率计算量大不能在线科研验证、极致精度端到端 Transformer 类跟踪器隐式关联抗遮挡能力最强训练资源大可解释性和可控性弱8. 顺着技术脉络看数据关联下一步会走向哪里8.1 交互与群组建模是一个明确方向目前绝大多数数据关联方法仍然把目标看作独立的个体忽略目标之间的交互关系。但真实场景中人的运动往往受群体影响几个人并肩走、一个人停下等人、一群人一起转弯。如果数据关联模型能够感知这种交互就能利用群体一致性来辅助关联。这个方向的工作目前还不算多但已经有一些尝试。比如引入行人轨迹的社交力模型或者用图网络建模目标间的相对运动。我认为未来一段时间内交互建模会成为数据关联的新增长点尤其在城市级多目标跟踪、机器人多目标感知这类场景中。8.2 长时遮挡与终身身份真正难啃的骨头多目标跟踪里那句长时间遮挡后 ID 不丢是很多论文的 benchmark 目标但实际效果并不理想。目前的 ReID 特征对短时遮挡有效对长时遮挡后的身份保持能力却非常有限端到端 Transformer 有所改善但依然没有彻底解决。要解决长时身份保持光靠视觉可能不够。语音、无线电、位置信号等多模态感知可能是方向之一再往前一步目标长期记忆的建模、跨镜头的重识别都是这个问题的延伸。我判断未来的多目标跟踪会逐渐从单相机视频内跟踪走向多相机多模态统一身份保持数据关联的形态也会随之改变。8.3 学习型代价与可微优化的融合另一个值得关注的方向是学习型代价 可微优化的融合。以前我们认为匈牙利算法是离散的组合优化没法接在神经网络后面做反向传播但近年出现的可微匹配、可微最优传输方法让端到端学习关联代价成为可能。也就是说模型可以学会什么样的代价矩阵会带来更好的跟踪效果而不是手工设计权重。这个方向一旦成熟传统方法里繁琐的代价权重调参、门槛高的特征融合技巧都会被统一到一个可学习的框架里。不过它的落地还很远目前更多停留在学术探索阶段。说到底数据关联这个老问题的生命力比很多人想象中要持久。从 JPDA 到 MHT从匈牙利到网络流从 DeepSORT 到 Transformer表面的技术术语换了一轮又一轮但底层要解决的东西一直没变如何在不确定中做出最优的身份决策。9. 写在最后我的个人实操体会如果让我对刚入坑多目标跟踪的读者说几句掏心窝的话我会强调三点。第一先把检测做扎实再看关联。检测器的漏检率和虚检率决定了数据关联难度的下限。一个质量很差的检测结果任何神仙关联算法都救不回来反过来一个质量极高的检测结果哪怕只用简单的匈牙利算法也能拿到不错的跟踪效果。我见过太多团队跳过检测、直接调关联模块的最后发现瓶颈根本不在关联。第二不要盲目追求最新方法。Transformer 类端到端跟踪器确实代表了未来方向但它的部署成本、训练成本、可解释性问题在很多业务里是无法接受的。与其盲目上最新模型不如把经典的检测 ReID 卡尔曼 级联匹配 匈牙利路线吃透把它在每个场景下的效果压榨到极致再去探索更复杂的方案。第三一定要建立自己的评估闭环。准备一批能代表真实业务分布的验证视频统一用 TrackEval 工具跑分同时记录推理耗时、显存占用等工程指标。每次方法迭代后都要结合 MOTA、IDF1、HOTA 和实际体验一起看。这样才能保证你优化的方向和数据关联的真实价值是一致的。数据关联不是多目标跟踪里最性感的模块但往往是决定系统上限的关键一环。希望这篇建立在多年工程实践和阅读思考之上的综述能帮读者少走一些弯路真正把多目标跟踪系统做到不仅检测准而且跟得住、分得清。
返回列表