NVIDIA英伟达嵌入式系统 · 5月17日 · 北京市

利用 NVIDIA DeepStream 中的单视角 3D 跟踪技术减轻视觉感知中的遮挡现象

说到智能视频分析(IVA)应用(如交通监控、仓库安全和零售消费者分析)的感知,最大的挑战之一就是遮挡。例如,人们可能会移动到结构性障碍物后面,零售消费者可能由于货架而无法被完全看到,汽车可能会被隐藏在大型卡车后面。

本文将介绍如何利用 NVIDIA DeepStream SDK 中全新的单视角 3D 追踪功能,来解决现实生活中 IVA 部署常见的视觉感知遮挡问题。

视觉感知中的视角和投影

在我们的物理世界中,通过相机镜头观察到的一些物体的运动可能看起来并不稳定,这是由于相机对 3D 世界的 2D 呈现所造成的。

水星和火星等行星的逆行就是一个例子,这让古希腊天文学家感到困惑。他们无法解释为什么行星有时看起来会向后移动(图 1)。

之所以会出现明显退行,是由于恒星和行星在夜空中的轨迹所造成的。这些是宇宙 3D 空间中轨道运动在夜空 2D 画布上的投影,如果古代天文学家知道 3D 空间的运动模式,他们就可以预测这些行星在 2D 夜空中的出现。

640.png
图 1. 2014 年(左)和 2016 年(右)火星在夜空中的逆行运动轨迹(图片来源:NASA)

交通监控摄像头提供了类似的例子。这些摄像头通常用于监测一个大面积的区域,在这个区域里,车辆在近场和远场的运动动态可能截然不同。

在视频 1 中,远处的车辆看起来较小且移动缓慢。当车辆靠近摄像头并转弯时,可以观察到物体运动的突然变化。这些变化使得我们在 2D 摄像机视图中很难找到常见的模式,因此也很难预测车辆未来可能移动的位置。

物体跟踪本质上是对物体物理状态的连续估计,同时随着时间的推移来识别其独特身份。该过程通常包括对物体运动动态进行建模和预测,以抑制测量(检测)中的固有干扰。从所提供的示例来看,直接在原生 3D 空间中对物体状态进行估计和预测显然比在投影的 2D 摄像头图像平面中效果更好,这是因为物体存在于 3D 空间中。

使用 NVIDIA DeepStream 进行单视角 3D 跟踪

NVIDIA DeepStream SDK 是一个基于 GStreamer 的完整流媒体分析工具包,可用于基于 AI 的多传感器处理,视频、音频和图像理解。DeepStream 6.4 版本引入了一种名为单视角 3D 跟踪(SV3DT)的新功能,该功能能够在单摄像头视图内估计 3D 物理世界中的物体状态。

这一过程包括使用每个摄像头的 3×4 投影矩阵或摄像头矩阵,将 2D 摄像头图像平面上的观测测量转换为 3D 世界坐标系。物体在 3D 世界地平面中的位置表示为物体底部的中心,因此,行人被建模为一个立在世界地面平面上的圆柱体(具有高度和半径),圆柱体模型底部的中心是行人的脚部位置(图 2)。

Weixin Image_20240517120228.png
图 2. 每个圆柱形模型的底部中心表示每个行人在 3D 世界地平面上的位置(用绿点标记)

使用 3×4 投影矩阵和圆柱形人体模型,可以估算出针对检测到物体的 3D 人体模型在 3D 世界地平面上的位置,从而使投影在 2D 摄像头图像平面上的 3D 人体模型,与检测到的物体的边界框相吻合。

例如,在图 3(左)中,灰色边界框表示对象检测器使用 NVIDIA TAO PeopleNet 模型检测到的物体,紫色和黄色圆柱体代表从 3D 世界地平面上的估计位置投影到 2D 摄像头图像平面的相应的 3D 人体模型,投影的 3D 人体模型底部的绿点代表预估的脚部位置。尽管摄像头视图有透视和旋转,但这些位置与实际脚部位置非常吻合。

Weixin Image_20240517120300.png
图 3. SV3DT 有助于跟踪零售消费者准确的脚部位置,即使存在遮挡也不影响

新推出的 DeepStream SV3DT 功能的一个重要优势是,即使存在明显的局部遮挡,也可以准确地找到物体的 2D 和 3D 脚部位置,而这是现实世界 IVA 应用中最具挑战性的问题之一。欲了解更多详细信息,请参阅采用 NVIDIA DeepStream SDK 6.2 的先进实时多对象跟踪器:

https://developer.nvidia.com/...

例如,图 3(右)显示了一个人在狭窄的过道里购物,摄像头只能看到其上半身的一小部分,这将导致物体边界框较小,只能捕获头部和肩部区域。在这种情况下,要在全局商店地图上对此人进行定位就变得极具挑战性,至少可以说,估计脚部位置是一项非同小可的任务。

使用边界框的底部中心作为对象位置的代表会为轨迹估计带来很大的误差。即使使用摄像头校准信息将 2D 点转换为 3D 点情况也是如此,尤其是当摄像头透视和旋转较大时。

DeepStream SDK 中的多目标跟踪器模块中的 SV3DT 算法,在假设摄像头安装在头部上方的情况下,通过利用 3D 人体建模信息来解决这个问题。大多数部署在智能空间中的大型摄像头网络系统通常都是这种情况。有了这个假设,在估算相应的 3D 人体模型位置时,就可以使用头部作为锚点。如图 3 显示,即使在人被严重遮挡的情况下,SV3DT 算法也可以成功地找到匹配的 3D 人体模型位置。

视频 2 显示了在一家便利店中对消费者进行跟踪的情况。需要注意的是,所使用的 3×4 投影矩阵没有考虑镜头失真,尽管特定的摄像头有一定的镜头失真,正如您所看到的,水平线有点弯曲而不是直线。这会导致 3D 人体模型位置估计更加不准确,尤其是当人位于视频帧的边缘时。

尽管如此,人们在便利店的 2D 和 3D 脚部位置(用绿点表示)还是被准确而稳健地追踪到了,这也提高了队列长度监控和占用率地图等其他分析的准确性。

图 4 显示了如何在合成数据集中稳健地追踪每个行人的脚部位置,即使下半身的大部分被货架等大型物体遮挡。

640.gif

图 4. 基于合成数据集的严重颗粒遮挡情况下的 SV3DT 行人位置跟踪

我们相信,解决部分遮挡问题将为现实应用带来许多可能性。SV3DT 目前处于 Alpha 模式,因为其对象类型支持有限(仅限站立的人),其他情况(如人们坐着和躺着)或其他对象类型可能会在未来的版本中得到支持。您可以针对您的特定用例进行尝试,并在 DeepStream 论坛中提供反馈。我们计划在未来版本中进行进一步改进:

https://forums.developer.nvid...

DeepStream SV3DT 用例

该 DeepStream SV3DT 用例演示了如何在本文介绍的零售商店视频上启用单视角 3D 跟踪,并从管道中保存 3D 元数据。如图 4 和视频 2 所示,用户可以从数据中可视化凸起的船体和脚部位置。README 还介绍了如何在定制视频上运行该算法。欲了解更多详细信息,请访问 NVIDIA-AI-IOT/deepstream_reference_apps:

https://github.com/NVIDIA-AI-...

或参阅 DeepStream 文档:

https://docs.nvidia.com/metro...

总结

NVIDIA DeepStream SDK 中的单视角 3D 跟踪有助于缓解现实生活中 IVA 应用程序和部署的部分遮挡问题。该功能在 6.4 版本中首次推出,并在 7.0 版本中进行了增强。具体而言,SV3DT 能够在局部遮挡的情况下估计脚部位置,并能够进行更稳健和准确的对象追踪,从而实现 3D 地平面中的准确定位。依赖或利用地理空间分析的企业有望从这项技术中受益。

如要着手,请先查看 DeepStream SDK 发布的最新消息:

https://developer.nvidia.com/...

推荐阅读
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息