仓库、工厂、体育场和机场等大片区域通常由数百个摄像头进行监控,以提高安全性并优化运营。通过这些摄像头准确跟踪物体和测量活动称为多摄像头跟踪,可让您有效地监控和管理空间。
例如,零售商店可以使用多摄像头跟踪来了解客户如何在通道中导航,并改善商店布局,以获得更好的购物体验。仓库可以监控设备、材料和人员的移动,以提高安全性、提高交付速度并降低成本。机场可以跟踪人员流动,以增强安全性和出行体验。
然而,实施多摄像头追踪系统可能具有挑战性。
首先,从不同的角度和视图在多个摄像头源中匹配受试者需要先进的算法和 AI 模型,准确训练可能需要数月时间。特别是,真值训练数据集很少,因为标记需要一个人或多达一个小组审查来自多个摄像头的所有流,以实现一致的识别和跟踪,从而延迟 AI 模型训练。
其次,实时多摄像头跟踪需要构建用于实时数据流、多流融合、行为分析和异常检测的专用模块,以提供亚秒级延迟和高吞吐量。
第三,扩展到工厂或机场等更大的空间需要分布式计算和可以处理数千个摄像头和主题的云原生架构。
因此,我们宣布推出新的多摄像头追踪参考工作流程,以加速下一波视觉 AI 的开发,该浪潮可测量并帮助管理大型空间的基础设施和运营。
NVIDIA 多摄像头追踪
NVIDIA 多摄像头追踪是一种可定制的工作流程,可为您提供一个坚实的起点,让您无需从头开始即可顺利进行开发,从而节省数月的开发时间。
该工作流程还提供了经过验证的生产路径。它包括基于真实和合成数据集预训练的先进 AI 模型,您可以根据用例自定义这些模型。它配备了实时视频流模块。
- 基础层:生产就绪型功能,可以融合多个摄像头源,为对象创建全球唯一标识符及其全球和本地坐标。
- 分析层:独特的物体计数和局部轨迹。
- 可视化和用户界面:对可以进一步构建的热图、直方图和路径进行采样。
借助工作流程的这些组件,您可以对业务逻辑进行编码,并构建端到端视觉 AI 应用,以优化和管理空间。
无需支付额外费用,仅需基础架构和工具许可证。此外, NVIDIA AI Enterprise 还可为多摄像头追踪工作流程提供专家支持和最新产品更新。
开始使用多摄像头追踪工作流程
首先,请参阅 多摄像头追踪快速入门指南 并了解如何在本地开发或云端部署参考工作流程。有关针对您的用例进行仿真和微调的更多信息,请参阅 端到端 Sim2Deploy 配方。
在以下各节中,我们将为您介绍工作流的应用程序架构以及开发、配置和部署工作流的分步流程。
用于多摄像头追踪的端到端工作流程
多摄像头跟踪参考工作流程 (图 1) 从 Media Management 微服务中获取实时或录制的流,并在多摄像头视图中输出物体的行为和全局 IDs 行为可以定义为物体在任何给定时间的位置、方向、速度或轨迹。
对象元数据 (例如边界框、跟踪 ID 和带时间的行为数据) 存储在 Elasticsearch 索引中。行为数据也进行排序并存储在 Milvus 向量数据库中。Web UI 微服务在工作流程结束时运行,使您能够可视化行为,并单击任何对象以查找其随时所处的位置 (时间)。来自 ELK 或 Milvus 的数据通过 Web API 微服务获取。
在 视频 1中,右侧窗格显示了覆盖物体的全局 ID 及其行为的建筑贴图。左侧的摄像头视图显示了物体的当前位置。在此窗口中,您可以使用其全局 ID 查询物体,以查看其在给定周期内的位置。例如,如果您使用 global 查询物体:id-2
,您可以从平面图上可用的所有摄像头中获取与此物体 ID 相关的元数据。
构建块
该应用程序使用 NVIDIA 都市微服务:
它还包括第三方微服务:
- 消息代理(Kafka)
- 弹性搜索日志存储分析堆栈 (ELK)
- 矢量数据库 (Milvus)
使用了多种 NVIDIA Metropolis 工具:
使用以下感知模型:
从模拟到部署的方法
在本文中,我们将探索开发这些先进 AI 功能的可扩展方法,从使用数字孪生进行模拟和合成数据生成,到部署到云端进行推理。
模拟和训练
要构建更高效、更准确的 AI 工作流程,使用先进的 NVIDIA 技术至关重要。这包括创建 3D 数字孪生、生成合成数据,以及使用以下工具简化模型开发:
- NVIDIA Omniverse:构建真实环境的三维数字副本,定位虚拟摄像头以捕获各种合成数据,生成真值标注,并在实际部署之前验证应用程序。
- NVIDIA Isaac Sim:使用 Omni.Replicator.Agent 模拟智能体(包括人员和机器人),以简化场景中的合成数据生成。有关更多信息,请参阅 借助 NVIDIA Metropolis 微服务,将多摄像头跟踪工作流部署到公有云。
- NVIDIA TAO 工具套件:使用真实数据和合成数据简化模型训练和优化,通过量化和剪枝提高模型的推理性能。
这些工具共同促进 AI 模型的稳健训练、验证和优化,确保在真实应用中实现高性能。
构建和部署多摄像头追踪工作流程
对于多摄像头追踪应用,NVIDIA 提供了多种构建和部署应用的选项。
使用 docker-compose 快速部署
任何人都可以开始使用多摄像头跟踪应用程序。NVIDIA 提供了一些示例视频流,您可以在默认情况下使用这些视频流,并且可以在 nvstreamer 微服务中进行配置。
然后,您可以配置这些 RTSP 流或将真实摄像头 RTSP 端点添加到 VST。除了这些流之外, NVIDIA 还提供了使用 deepstream-app 供任何人查看多摄像头数据流。您可以按照如下所示部署整个端到端工作流程:
$ docker compose -f foundational/mdx-foundational.yml -f mtmc-app/mdx-mtmc-app.yml --profile e2e up -d --pull always --build --force-recreate
在这里,mdx-foundational.yaml
文件是一个 Docker.Compose 文件,其中包含基本服务,如 Elasticsearch 和 Kafka。mdx-mtmc-app.yaml
文件包含多个微服务,例如感知、媒体管理和行为分析等。
要尝试使用现有感知数据的多摄像头应用,请运行 docker compose
命令,带有播放配置文件参数:
$ docker compose -f foundational/mdx-foundational.yml -f mtmc-app/mdx-mtmc-app.yml --profile playback up -d --pull always --build --force-recreate
使用 Helm 图表在 Kubernetes 中的生产环境中部署
要在 Kubernetes 中部署多摄像头跟踪应用程序,请先创建 Kubernetes 服务器。有关更多信息,请参阅硬件和软件 先决条件。应用程序资源在 NGC 中。本文其余部分假设您已设置 Kubernetes 服务器,并已 获得 NGC 团队的访问权限。
下载部署包:
ngc registry resource download-version "nfgnkvuikvjm/mdx-v2-0/metropolis-apps-k8s-deployment:-"
此软件包具有 Helm,基于 values.yaml
文件的基础服务,例如存储和监控服务,以及应用程序的 Helm 配置。
值文件是应用的配置文件,您可以在其中定义特定服务的镜像、服务副本数量、服务类型、端口、入口、卷、存储等。
应用程序 Helm 配置的每个微服务都有一个值文件,例如感知 (wdm-deepstream-mtmc-values.yaml
) 和多摄像头融合 (mtmc-app-override-values.yaml
)。
有关更多信息,请参阅 配置值文件。
部署基础服务
helm install mdx-foundation-sys-svcs --wait https://helm.ngc.nvidia.com/nfgnkvuikvjm/mdx-v2-0/charts/mdx-foundation-sys-svcs-v1.3.tgz --username='$oauthtoken' --password=YOUR_API_KEY -f application-helm-configs/foundational-sys/foundational-sys-monitoring-override-values.yaml
在这里,foundational-sys-monitoring-override-values.yaml
文件将替换为 override values.yaml 文件,您可以在其中定义任何更新的应用程序设置,例如为 Grafana 用户界面添加密码。
部署微服务
对于每个微服务:容器单元,GPU 可以共享,但感知微服务除外。GPU 共享通过 NVIDIA _VISIBLE_DEVICES 启用。每个微服务都有一个 override value.yaml
文件,可用于自定义任何配置。我们稍后将讨论自定义。
与基础服务类似,您可以单独部署每个微服务。例如,要部署运行的 Multi-Camera Fusion 微服务,请使用以下代码:
helm install mdx-mtmc-app https://helm.ngc.nvidia.com/nfgnkvuikvjm/mdx-v2-0/charts/mdx-mtmc-app-1.0.37.tgz --username='$oauthtoken' --password= -f application-helm-configs/MTMC/mtmc-app-override-values.yaml
有关如何部署其他微服务的更多信息,请参阅 用户手册。
访问多摄像头追踪 UI
部署完成后,您可以在http://:31080/ui/mtmc/。
为在多个摄像头视图中有效跟踪物体、最大限度地减少遮挡并提高空间理解, NVIDIA 在 Multi-Camera Fusion 和 Behavior Analytics 微服务中采用了摄像头校正。这包括提供示例视频流以及 calibration.json 文件和建筑物地图图像。calibration.json 包含图像坐标和全局坐标,用于将每个摄像头的视图与常见的自上而下地图视图对齐。
使用一键部署脚本在云端部署
要在云端部署 Metropolis 应用,NVIDIA 向 Microsoft Azure、Google Cloud Platform 和 Amazon Web Services (AWS) 等多个云服务提供商(CSP)提供了一键脚本。有关更多信息,请参阅 使用 NVIDIA Metropolis 微服务将多摄像头跟踪工作流部署到公有云(视频) 和 云设置 主题NVIDIA Metropolis 用户指南。
针对您的用例进行配置
如果您已遵循所有构建和部署说明,则可以在随版本打包的示例流上运行多摄像头追踪工作流并将结果可视化。
为了将应用程序扩展到您的用例,NVIDIA 为每个微服务级别和工具提供了一些配置选项。在 override-values.yaml
文件中。
helm install vst-app https://helm.ngc.nvidia.com/rxczgrvsg8nx//charts/-.tgz --username='$oauthtoken' --password= -f application-helm-configs/MTMC/override-values.yaml
在 Media Management 微服务中使用 Video Storage Toolkit 配置摄像头
在此微服务中,您可以设置 配置 用于视频流。如果您有实时摄像头,则可以使用 视频存储工具包(Video Storage Toolkit,VST)。VST 提供了多种配置,您可以根据需求进行设置:
vst_config.json:
notifications:
enable_notification: true
use_message_broker: "kafka"
security:
use_https: false
use_http_digest_authentication: false
vst_storage.json:
total_video_storage_size_MB: 100000
现在,您可以使用 override-values.yaml 文件来进行更新:
- 访问 VST 控制面板 http://IP 地址:30000。
- 添加摄像头。
在 Perception 微服务中集成微调模型和自定义跟踪器
Perception 微服务提供多个配置选项。例如,多摄像头追踪应用程序随附用于检测人员的默认模型。如果您有自定义模型,并且必须更新模型参数,则可以更新 模型配置文件。
感知微服务基于 NVIDIA DeepStream,它提供了多种类型的 跟踪器,用于追踪单个摄像头视图中的物体。您可以选择任何跟踪器并更新 配置。
典型的感知微服务流程包括一个检测器和一个多物体追踪器,每个都在各自的配置文件中列出了大量参数。针对不同的应用程序手动调整这些参数会使实现最佳准确性变得非常困难,因此 NVIDIA 提供了 管道调整工具,该工具可帮助您针对特定用例获得最佳参数并实现最佳准确性。
使用 Camera Calibration Toolkit 创建校正文件
对于新添加的摄像头流,您必须创建 calibration.json 文件,才能使用 多摄像头融合和行为分析微服务。为了实现高效且可扩展的摄像头校正, NVIDIA 提供了基于用户界面的摄像头 校准工具包。
监控和记录
在多摄像头追踪应用程序中, NVIDIA 将 Kibana 控制面板与基础服务集成,您可以使用这些服务来监控和可视化应用程序。
在http://<host_ip>/5601
。
从左上角可以看到,在给定的输入流中共检测到 34 个物体。但在 34 个物体中,只有 6 个独特的人物。图像底部是多摄像头追踪工作流程直方图。
立即开始使用工作流程
开发者预览版现已正式支持多摄像头追踪参考工作流。立即开始使用 快速入门指南 并按照分步说明下载工作流组件。然后,在本地或云端环境中部署工作流。
要使用 NVIDIA 工具自定义并进一步构建工作流,涵盖从模拟到微调和部署的整个视觉 AI 生命周期,请参阅 Metropolis 多摄像头模拟到部署快速入门指南。
请尝试并通过以下方式向我们发送您的反馈:开发者论坛 或您的 NVIDIA 企业支持团队。我们非常期待看到您使用多摄像头跟踪构建的内容,以将物理空间的安全性和可用性提升到更高水平!