当你在连续一段时间内观察某件事时,可以找到能够进行预测的趋势或模式。而通过预测,你可以提醒自己采取适当的行动。
具体来说,当你观察移动的目标时,轨迹是理解目标行为的最重要方法之一,可以基于此获得可操作的见解(视频 1)。
视频 1:猎豹追逐猎物(资料来源:Adobe)
当猎物距离较远时,猎豹长周期内的运动模式对规划捕猎更为重要。而随着猎物越来越近,在做出预测时,猎物短周期内的运动模式则会成为关键点。猎豹的视觉系统会锁定猎物,并一直跟踪它,直到捕获。
同样,如果想生成关于目标的轨迹,需要随着时间的推移始终跟进识别同一目标,即使在视觉外观或运动动力学发生突然变化的情况下,也是如此。然而,当目标被部分或完全遮挡时,要做到这一点就会更困难。通常来说,在附近有长时间的遮挡,或视觉上有引人注目的物体等极具挑战性的情况下,即使是食肉动物或拥有强大视觉系统的人类,也经常会失去对目标的跟踪(图 1)。
图 1:东京涩谷十字路口(资料来源:Adobe)
目标轨迹也是许多视觉人工智能应用的关键部分,例如用于结账队列分析、商店布局优化和生产检查。
NVIDIA DeepStream SDK 提供了 GPU 加速多目标跟踪器(MOT)。最新版 DeepStream SDK 6.2 发布后,多目标跟踪器更是有了显著的提升,有效地解决了具有挑战性的遮挡问题。利用基于深度神经网络的重新识别(ReID)模型进行目标匹配和关联,来实现这一点。
NvDCF 现已可配置使用 ReID 模型,对可能经历长时间遮挡或较长时间错过检测的目标提高关联性。NvDCF 仍然使用基于强鲁棒性和高效短期跟踪的判别式相关滤波器(DCF)方法。同时还配备了神经网络驱动的长期目标重新关联,从而在多目标跟踪的效率、准确性和鲁棒性之间取得最终平衡。
NvDeepSORT 使用基于 NVIDIA TensorRT 的 ReID 模型中提取的深度特征,来执行用于跨视频帧跟踪的目标关联。您能够使用自定义 ReID 模型,以便进行多目标跟踪。
NvSORT 是 NVIDIA 支持的简单在线实时跟踪器 (SORT) ,使用卡尔曼滤波器进行状态估计,并基于来自检测器的目标边界框,使用数据关联算法进行目标关联。NvSORT 使用级联数据关联算法进行强鲁棒性的目标匹配,这是对原始 SORT 的优化。
得益于 DeepStream SDK 中的统一跟踪器架构,增强的级联数据关联算法也用于以下所有其他类型的 MOT:NvDCF 和 NvDeepSORT。统一跟踪器架构让您能够通过 NvMultiObjectTracker 库,根据选择的跟踪器类型启用和禁用单个模块。同样,您也可以使用 NvDsTracker 构建自定义跟踪器。
表 1 总结了 DeepStream 6.2 中提供的多对象跟踪器组合。
表 1:DeepStream SDK 6.2 中提供的多对象跟踪器
行人追踪
是时候在一些有趣的场景中使用这些目标跟踪器,生成目标的轨迹并检验效果了。
首先是一个行人跟踪用例。使用了 PeopleNet v2.6 检测器,上面装配了不同类型的物体跟踪器。检测器配置参数和跟踪器参数都针对 PeopleNet v2.6 进行了调整。有关详细信息,请参阅 DeepStream 6.2 Object Tracker documentation(https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvtracker.html#setup-and-visualization-of-tracker-sample-pipelines)。
在视频 2 中,对 PeopleNet 、NvSORT、NvDeepSORT 和 NvDCF 的实时感知结果以顺时针方向显示,用于并排比较。不同的人和边界框(bbox)为了更容易识别,用了不同的颜色绘制,并且只有当场景中存在相应的目标时,才会显示颜色编码的轨迹。视频是以 x0.5 的速度拍摄的,以便于比较,但实际数据是实时生成的。
bbox 顶部的标签(例如[21]: 80 (0.24)) 显示的是个人 ID (例如 21), 跟踪年龄(例如 80) 和跟踪置信度(例如 0.24)。检测器配置参数针对每种跟踪器类型进行不同配置,以获得更好的跟踪精度。
视频 2:室内大堂的行人追踪
使用相同的检测模型时,并排的视觉比较使您能够获得不同对象跟踪器类型的行为和质量的定性见解。NvDCF 跟踪器具有最高的精度,因此我们在视频 3 中更仔细地显示了其跟踪结果。
视频 3:NvDCF 跟踪器在完全遮挡的情况下跟踪行人
下方图 2 的场景中央有一个大柱子,会导致走在后面的人长时间被完全遮挡。对于任何目标检测或跟踪系统来说,这都是一个特别具有挑战性的场景。一些检测错误包括部分或双重检测和遗漏检测,根据背景和物理环境的不同,可能会非常频繁地发生。
图 2:样本检测错误:
有两个人的边界框、遗漏检测和部分检测
幸好,新引入了基于 ReID 的目标重新关联,NvDCF 跟踪器可以成功跟踪大多数人(视频 4),即使他们在柱子后面经历了完全遮挡。它不仅在许多帧之后重新关联柱子前后的相同对象,而且还恢复了由柱子引起的遗漏检测(漏报率)。
一个更具挑战性的场景是,除了这种环境遮挡之外,还有许多其他目标的遮挡(视频 4)。这种遮挡产生不同程度的部分遮挡,其中检测到的目标边界框的大小和纵横比,在短时间内会显著变化。这给目标匹配和跟踪中的关联带来了挑战。
视频 4:NvDCF 跟踪器在完全和部分遮挡情况下
对行人进行跟踪
尽管存在这些挑战,您可以看到 NvDCF 跟踪器在大多数情况下只需几个 ID 开关即可执行鲁棒跟踪。在目标离开场景之后,目标跟踪就会被配置为立即终止。视频 4 中离开场景的一些目标,在重新进入后按照计划被分配了不同的 ID。
仔细观察图 3 和视频 4 中的目标 ID [3],如图 3 和视频 4 所示。在整个行程中,他多次经历严重的完全和部分遮挡,但他从一开始就一直被跟踪,直到离开现场。
图 3:穿着白衬衣的目标 ID [3] 的人
在视频 4 中的四张快照
视频 5 显示了跟踪器内部使用的目标模板,其中提取了特征,以及同一目标的相关性响应图。紫色的“x”标记显示附近的目标位置,而黄色的“+”标记显示当前目标位置。
视频 5:(左)跟踪器使用的图像模板;
(右)目标周围的相关性响应
这些结果是使用相对简单的基于 ResNet-10 的 ReID 模型生成的。为了获得更好的结果,我们鼓励您尝试更高级的自定义 ReID 模型。
DeepStream 6.2 中的 NvDCF 跟踪器是一款先进的多目标跟踪器,在精度和性能之间取得了很大的平衡。在 MOT17 Challenge 排行榜上,您可以看到学术界和工业界都积极提交了许多跟踪器。NvDCF 跟踪器在 MOT17 排行榜上显示为 NvMOT _ DSv62 型,是实时生成输出的在线跟踪器中的顶级跟踪器之一。
车辆跟踪
对于车辆跟踪用例,我们使用 TrafficCamNet 带有 DeepStream 多目标跟踪器的探测器。我们使用了一个典型的车辆交通监控系统的场景进行测试,该系统俯瞰着一个繁忙的十字路口。有大小灯杆和交通信号杆,造成了大量遮挡。相对较少的摄像机有利位置更加剧了遮挡问题,导致了对其他车辆的许多遮挡。此外,道路上的植被也增加了场景的复杂性。
由于交通杆和树木的存在,车辆会发生部分和完全遮挡,导致大量的漏检和错误检测。您可以在并排视频中看到,不同类型的目标跟踪器如何处理这些具有挑战性的情况(视频 6)。该视频是以 x0.4 的速度拍摄的,但实际数据是实时生成的。
视频 6:繁忙十字路口的车辆跟踪
在视频的左上角,显示了 TrafficCamNet 检测器的对象框,您可能会注意到检测噪音。其中包括检测到的 bbox 中的抖动、在单个 bbox 中捕获多个对象的双重检测、由于遮挡而导致的部分检测等等。
当车辆在交通杆后被遮挡时,这些检测误差和噪声会变得更加严重。要了解 DeepStream 多对象跟踪器如何处理这些噪声检测,请参阅视频 6 ,并在视频 7 中更仔细地了解 NvDCF 跟踪器的跟踪结果。
视频 7:NvDCF 跟踪器的车辆跟踪
总结
您可以下载并尝试 DeepStream SDK 6.2(https://developer.nvidia.com/deepstream-sdk),为您的用例添加强鲁棒性高效的多对象跟踪器!
有关多目标跟踪器组成部分的更多信息,请参阅 NVIDIA DeepStream Technical Deep Dive: Multi-Object Tracker 视频(https://www.youtube.com/watch?v=4nV-GtqggEw)。
即刻点击 “阅读原文” 或扫描下方海报二维码,在 NVIDIA On-Demand 上观看 GTC 精选回放,包括主题演讲相关精选、中国本地精选内容、生成式 AI 专题以及全球各行业及领域最新成果!
原文标题:采用 NVIDIA DeepStream SDK 6.2 的先进实时多目标跟踪器
文章出处:【微信公众号:NVIDIA英伟达】欢迎添加关注!文章转载请注明出处。
全部0条评论
快来发表一下你的评论吧 !