DeepStream Python 应用程序
本仓库包含 DeepStream SDK 的 Python 绑定和示例应用程序。
支持的 SDK 版本:7.0
此版本仅支持 Ubuntu 22.04 上的 DeepStreamSDK 7.0,搭配 Python 3.10 和 gst-python 1.20.3!Ubuntu 20.04 上的 DeepStreamSDK 6.3 与 Python 3.8 支持现已过时
绑定源代码及构建说明可在 bindings 目录下找到!我们提供了一份指南用于绑定开发贡献,以及另一份指南用于高级用例,如为自定义数据结构编写绑定。
请在 DeepStream SDK 论坛 上报告任何问题或 bug。这使 DeepStream 社区能够在一个中心位置寻求帮助。
设置
一旦您安装了 DeepStreamSDK 的先决条件和 DeepStreamSDK 本身,请导航到 <DS_ROOT>/sources/ 目录(即 /opt/nvidia/deepstream/deepstream/sources/),并在此处克隆 deepstream_python_apps 仓库。
最新的绑定可以从发布部分安装。 如有需要,您也可以使用 bindings readme 中的说明从源代码构建绑定。
Python 绑定
DeepStream 管道可以使用 Gst Python(GStreamer 框架的 Python 绑定)构建。为了访问 DeepStream 元数据, 本仓库提供了 Python 绑定。该模块使用 Pybind11 生成。
这些绑定为元数据结构和函数提供了 Python 接口。该接口的使用在 HOW-TO 指南 中有详细说明,并在示例应用程序中进行了演示。
Python 绑定重大 API 变更
alloc_nvds_event_msg_meta() 函数的绑定现在需要一个与 NvDsEventMsgMeta 关联的 NvDsUserMeta 指针。请参考 deepstream-test4 和 bindschema.cpp 以了解详情。
示例应用程序
这里提供的示例应用程序演示了如何使用 Python 处理 DeepStream 管道。 示例应用程序需要 元数据绑定 才能运行。
要运行示例应用程序或编写自己的应用程序,请参阅 HOW-TO 指南
我们目前提供以下示例应用程序:
- deepstream-test1 -- 4 类物体检测管道,同时演示了对新 nvstreammux 的支持
- deepstream-test2 -- 4 类物体检测、跟踪和属性分类管道
- deepstream-test3 -- 执行 4 类物体检测的多流管道,还支持 triton 推理服务器、无显示模式、文件循环和静默模式
- deepstream-test4 -- 用于将分析结果发送到云端的消息代理
- deepstream-imagedata-multistream -- 可访问图像缓冲区的多流管道
- deepstream-ssd-parser -- 通过 Triton 服务器进行 SSD 模型推理,并在 Python 中解析输出
- deepstream-test1-usbcam -- 使用 USB 摄像头输入的 deepstream-test1 管道
- deepstream-test1-rtsp-out -- 带有 RTSP 输出的 deepstream-test1 管道,演示了如何添加软件编码器选项以支持 Jetson Orin Nano
- deepstream-opticalflow -- 光流和可视化管道,流向量以 NumPy 数组形式返回
- deepstream-segmentation -- 分割和可视化管道,分割掩码以 NumPy 数组形式返回
- deepstream-nvdsanalytics -- 带有分析插件的多流管道
- runtime_source_add_delete -- 运行时添加/删除源流
- deepstream-imagedata-multistream-redaction -- 带有人脸检测和遮蔽的多流管道
- deepstream-rtsp-in-rtsp-out -- 具有 RTSP 输入/输出的多流管道 - 包含命令行选项 "--rtsp-ts" 用于配置 RTSP 源以附加时间戳而不是使用 streammux
- deepstream-preprocess-test -- 使用 nvdspreprocess 插件和自定义 ROI 的多流管道
- deepstream-demux-multi-in-multi-out -- 使用 nvstreamdemux 插件生成单独缓冲区输出的多流管道
- deepstream-imagedata-multistream-cupy -- 以 CuPy 数组形式从 GPU 访问多流源的图像数据缓冲区 - 仅支持 x86
- deepstream-segmask -- 访问和解释来自 NvOSD_MaskParams 的分割掩码信息
- deepstream-custom-binding-test -- 演示如何使用 NvDsUserMeta 附加自定义数据结构 - 另请参阅 自定义用户元数据指南
每个应用程序的详细信息可在 apps 下的相应子目录中找到。