NVIDIA Deepstream C和C++示例应用程序源详细信息
DeepStream SDK 包包括包含插件、库、应用程序和源代码的档案。 对于 Debian 安装(在 Jetson 或 dGPU 上)和 SDK Manager 安装,源目录位于 /opt/nvidia/deepstream/deepstream-6.1/sources
。 对于 tar 包,源文件位于提取的 deepstream 包中。 DeepStream Python 绑定和示例应用程序可作为单独的包提供。 有关更多信息,请参阅 https://github.com/NVIDIA-AI-IOT/deepstream_python_apps。
使用 Graph Composer 创建的 DeepStream 图列在参考图部分下。 有关详细信息,请参阅 Graph Composer 简介。
参考测试应用 | 源目录中的路径 | 描述 |
---|---|---|
Sample test application 1 | apps/sample_apps/deepstream-test1 | 如何将 DeepStream 元素用于单个 H.264 流的示例:filesrc → decode → nvstreammux → nvinfer(primary detector) → nvdsosd → renderer。 这个应用程序使用 resnet10.caffemodel 进行检测。 |
Sample test application 2 | apps/sample_apps/deepstream-test2 | 如何将 DeepStream 元素用于单个 H.264 流的示例: filesrc → decode → nvstreammux → nvinfer (primary detector) → nvtracker → nvinfer (secondary classifier) → nvdsosd → renderer. 这个应用程序使用 resnet10.caffemodel 进行检测和 3 个分类器模型(即 Car Color、Make 和 Model). |
Sample test application 3 | apps/sample_apps/deepstream-test3 | 基于 deepstream-test1(简单测试应用程序 1)构建,演示如何:
这个应用程序使用 resnet10.caffemodel 进行检测。 |
Sample test application 4 | apps/sample_apps/deepstream-test4 | 基于 deepstream-test1 构建单个 H.264 流:filesrc、decode、nvstreammux、nvinfer、nvdsosd、renderer 以演示如何:
这个应用程序使用 resnet10.caffemodel 进行检测。 |
Sample test application 5 | apps/sample_apps/deepstream-test5 | 构建在 deepstream-app 之上。 证明:
有关详细信息,请参阅 deepstream_test5_app_main.c 中的 RTCP Sender Report 回调函数 test5_rtcp_sender_report_callback() 注册和使用。 使用 rtpmanager 元素的“handle-sync”信号注册 GStreamer 回调记录在 apps-common/src/deepstream_source_bin.c 中。 这个应用程序使用 resnet10.caffemodel 进行检测。 |
AMQP protocol test application | libs/amqp_protocol_adaptor | 用于测试 AMQP 协议的应用程序。 这个应用程序使用 resnet10.caffemodel 进行检测。 |
Azure MQTT test application | libs/azure_protocol_adaptor | 测试应用程序以使用 MQTT 显示 Azure IoT device2edge 消息传递和 device2cloud 消息传递。 这个应用程序使用 resnet10.caffemodel 进行检测。 |
DeepStream reference application | apps/sample_apps/deepstream-app | DeepStream 参考应用程序的源代码。 这个应用程序使用 resnet10.caffemodel 进行检测和 3 个分类器模型(即 Car Color、Make 和 Model)。 |
UFF SSD detector | sources/objectDetector_SSD | SSD 检测器模型的配置文件和自定义库实现。 |
Faster RCNN detector | sources/objectDetector_FasterRCNN | FasterRCNN 模型的配置文件和自定义库实现。 |
Yolo detector | sources/objectDetector_Yolo | Yolo 模型的配置文件和自定义库实现,目前是 Yolo v2、v2 tiny、v3 和 v3 tiny。 |
Dewarper example | apps/sample_apps/deepstream-dewarper-test | 演示单个或多个 360 度摄像机流的 dewarper 功能。 从 CSV 文件中读取相机校准参数,并在显示屏上渲染通道和光斑表面。 |
Optical flow example | apps/sample_apps/deepstream-nvof-test | 演示单个或多个流的光流功能。 此示例使用两个 GStreamer 插件(Gst-nvof 和 Gst-nvofvisual)。 Gst-nvof 元素生成 MV(运动矢量)数据并将其作为用户元数据附加。 Gst-nvofvisual 元素使用预定义的色轮矩阵可视化 MV 数据。 |
Custom meta data example | apps/sample_apps/deepstream-user-metadata-test | 演示如何将自定义或用户特定的元数据添加到 DeepStream 的任何组件。 测试代码将一个填充了用户数据的 16 字节数组附加到所选组件。 数据在另一个组件中检索。 这个应用程序使用 resnet10.caffemodel 进行检测。 |
MJPEG and JPEG decoder and inferencing example | apps/sample_apps/deepstream-image-decode-test | 建立在 deepstream-test3 上,以演示图像解码而不是视频。 此示例使用自定义解码箱,因此 MJPEG 编解码器可用作输入。 这个应用程序使用 resnet10.caffemodel 进行检测。 |
Image/Video segmentation example | apps/sample_apps/deepstream-segmentation-test | 演示使用语义或工业神经网络对多流视频或图像进行分割并将输出渲染到显示器。 此应用程序将 unet_output_graph.uff 用于工业用例,将 unetres18_v4_pruned0.65_800_data.uff 用于语义用例。 |
Handling metadata before Gst-nvstreammux | apps/sample_apps/deepstream-gst-metadata-test | 演示如何在 DeepStream 流程中的 Gst-nvstreammux 插件之前设置元数据,以及如何在 Gst-nvstreammux 之后访问它。 这个应用程序使用 resnet10.caffemodel 进行检测。 |
Gst-nvinfer tensor meta flow example | apps/sample_apps/deepstream-infer-tensor-meta-app | 演示如何将 nvinfer 张量输出作为元数据进行流动和访问。 注意:由于 OpenCV 已弃用,此二进制文件未打包。 此应用程序需要由用户编译。 这个应用程序使用 resnet10.caffemodel 进行检测和 3 个分类器模型(即 Car Color、Make 和 Model)。 |
Preprocess example | apps/sample_apps/deepstream-preprocess-test | 演示对为流配置的预处理 ROI 的推断。 这个应用程序使用 resnet10.caffemodel 进行检测。 |
3D action recognition Reference app | apps/sample_apps/deepstream-3d-action-recognition | 演示用于动作识别的基于序列批处理的 3D 或 2D 模型推理流程。 它还包括一个用于 NCSHW 时间批处理的基于序列的预处理自定义库。 在运行应用程序之前,请参阅 README 中的先决条件。 此应用程序使用 resnet18_2d_rgb_hmdb5_32.etlt 进行 2D 和 resnet18_3d_rgb_hmdb5_32.etlt 进行 3D 动作识别。 |
Analytics example | apps/sample_apps/deepstream-nvdsanalytics-test | 演示批量分析,如 ROI 过滤、线交叉、方向检测和过度拥挤。 这个应用程序使用 resnet10.caffemodel 进行检测。 |
OpenCV example | apps/sample_apps/deepstream-opencv-test | 演示在 dsexample 插件中使用 OpenCV。 需要使用 WITH_OPENCV=1 标志编译 dsexample。 这个应用程序使用 resnet10.caffemodel 进行检测。 |
Image as Metadata example | Apps/sample_apps / deepstream-image-meta-test | 演示如何将编码图像附加为元数据并将图像保存为 jpeg 格式。 这个应用程序使用 resnet10.caffemodel 进行检测。 |
Appsrc and Appsink example | apps/sample_apps/deepstream-appsrc-test | 演示 AppSrc 和 AppSink 分别用于使用和提供来自非 DeepStream 代码的数据。 这个应用程序使用 resnet10.caffemodel 进行检测。 |
Transfer learning example | apps/sample_apps/ deepstream-transfer-learning-app | 演示了一种机制,可以为置信度较低的对象保存图像,并且可以将其用于进一步训练。 这个应用程序使用 resnet10.caffemodel 进行检测。 |
Mask-RCNN example | apps/sample_apps/ deepstream-mrcnn-test | 使用 Mask-RCNN 模型演示实例分割。 注意:由于 OpenCV 已弃用,此二进制文件未打包。 此应用程序需要由用户编译。 |
DeepStream Audio Reference Application | apps/sample_apps/deepstream-audio | 演示音频分析流程的 DeepStream 参考应用程序的源代码。 这个应用程序使用 SONYC 音频模型对标签进行分类。 |
Smart Record example | apps/sample_apps/deepstream-testsr | 演示基于事件的智能记录功能。 这个应用程序使用 resnet10.caffemodel 进行检测。 |
Automatic Speech Recognition | apps/audio_apps/deepstream-asr-app | 演示自动语音识别功能。 注意:此应用程序需要 Riva ASR 服务可用。 在运行应用程序之前,请参阅 README 中的先决条件。 此应用程序的默认模型是 Jasper,其他选项是 CitriNet 和 QuartzNet。 |
Text To Speech Conversion (Alpha) | apps/audio_apps/deepstream-asr-tts-app | 演示文本到语音的转换功能以及自动语音识别。 注意:此应用程序需要 Riva TTS 和 ASR 服务可用。 在运行应用程序之前,请参阅自述文件中的先决条件。 此应用程序使用 CitriNet 模型进行 ASR 和 FastPitch,HiFi-GAN 模型用于 TTS。 |
Audio+video+Text Synchronization (Alpha) | apps/sample_apps/deepstream-avsync-app | 演示 DeepStream 流程中来自 nvdsasr 的音频、视频和文本输出的同步。 注意:此应用程序需要 Riva ASR 服务可用。 在运行应用程序之前,请参阅自述文件中的先决条件。 这个应用程序使用 Jasper 模型进行语音识别。 |
DeepStream NMOS Application | apps/sample_apps/deepstream-nmos | 此应用程序演示了如何将 DeepStream 应用程序创建为 NMOS 节点。 它使用一个库 (NvDsNmos),该库提供 API 来创建、销毁和内部管理 NMOS 节点。 NMOS 节点可以使用 AMWA IS-04 注册 API 自动发现和注册网络上的 NMOS 注册。 它还展示了如何创建各种视频和音频流程,同时运行它们并根据 NMOS 事件(例如来自 NMOS 控制器的 AMWA IS-05 连接 API 请求)重新配置它们。 |
DeepStream UCX test 1 | apps/sample_apps/deepstream-ucx-test1 | 演示如何使用通信插件 gst-nvdsucx 通过 RDMA 发送和接收视频数据,无需任何特殊元数据。 |
DeepStream UCX test 2 | apps/sample_apps/deepstream-ucx-test2 | 演示如何使用通信插件 gst-nvdsucx 通过 RDMA 发送和接收视频/元数据数据,以及通过 libnvds_video_metadata_serialization.so 库进行自定义序列化和反序列化。 |
DeepStream UCX test 3 | apps/sample_apps/deepstream-ucx-test3 | 演示如何使用通信插件 gst-nvdsucx 通过 libnvds_audio_metadata_serialization.so 库使用自定义音频序列化和反序列化通过 RDMA 发送和接收音频/元数据数据。 |
DeepStream 3D Depth Camera Reference App | apps/sample_apps/deepstream-3d-depth-camera | 演示如何通过 DS3D 接口和 ds3d::dataloader、ds3d::datafilter 和 ds3d::datarender 的自定义库设置深度捕获、深度渲染、3D 点云处理和 3D 点渲染流程。 在 DeepStream 3D Depth Camera App中查看更多详细信息 |
组件和库细节¶
下表描述了除参考测试应用程序之外的源目录的内容:
插件和库详细信息 ¶ 插件或库
源目录中的路径
描述
DsExample GStreamer plugin
gst-plugins/gst-dsexample
用于将自定义算法集成到 DeepStream SDK 图形中的模板插件。
GStreamer Gst-nvmsgconv plugin
gst-plugins/gst-nvmsgconv
GStreamer Gst-nvmsgconv 插件的源代码,用于将元数据转换为模式格式。
GStreamer Gst-nvmsgbroker plugin
gst-plugins/gst-nvmsgbroker
GStreamer Gst-nvmsgbroker 插件的源代码,用于向服务器发送数据。
GStreamer Gst-nvdspreprocess plugin
gst-plugins/gst-nvdspreprocess
GStreamer Gst-nvdspreprocess 插件的源代码,用于对预定义的 ROI 进行预处理。
GStreamer Gst-nvinfer plugin
gst-plugins/gst-nvinfer
用于推理的 GStreamer Gst-nvinfer 插件的源代码。
GStreamer Gst-nvdsosd plugin
gst-plugins/gst-nvdsosd
GStreamer Gst-nvdsosd 插件的源代码,用于绘制 bbox、文本和其他对象。
NvDsInfer library
libs/nvdsinfer
NvDsInfer 库的源代码,由 Gst-nvinfer GStreamer 插件使用。
NvDsNmos library
libs/nvdsnmos
NvDsNmos 库的源代码,由 DeepStream NMOS 应用程序演示。
NvMsgConv library
libs/nvmsgsconv
Gst-nvmsgconv GStreamer 插件所需的 NvMsgConv 库的源代码。
Kafka protocol adapter
libs/kafka_protocol_adapter
Kafka 协议适配器。
nvdsinfer_customparser
libs/nvdsinfer_customparser
检测器和分类器的自定义模型输出解析示例。
Gst-v4l2
See the note below 1
v4l2 编解码器的源代码。
Gstreamer gst-nvdsvideotemplate plugin
gst-plugins/gst-nvdsvideotemplate
用于实现视频自定义算法的模板插件源代码(非基于 Gstreamer)
NvDsVideoTemplate custom library
gst-plugins/gst-nvdsvideotemplate/customlib_impl
自定义库源码实现视频自定义算法
Gstreamer gst-nvdsaudiotemplate plugin
gst-plugins/gst-nvdsaudiotemplate
模板插件 tp 的源代码实现音频自定义算法(非基于 Gstreamer)
NvDsVideoTemplate custom library
gst-plugins/gst-nvdsaudiotemplate/customlib_impl
自定义库实现音频自定义算法的源代码
Gstreamer gst-nvdsmetautils
gst-plugins/gst-nvdsmetautils
Gstreamer Gst-nvdsmetainsert 和 Gst-nvdsmetaextract 插件处理元数据的源代码
NvDsMetaUtils SEI serialization library
gst-plugins/gst-nvdsmetautils/sei_serialization
Gst-nvdsmetautils 插件所需的自定义元反序列化源代码以作为 SEI 数据嵌入到编码比特流中
NvDsMetaUtils Audio serialization library
gst-plugins/gst-nvdsmetautils/audio_metadata_serialization
音频 NvDsFrameMeta 反序列化的源代码,Gst-nvdsmetautils 插件需要
NvDsMetaUtils Video serialization library
gst-plugins/gst-nvdsmetautils/video_metadata_serialization
Video NvDsFrameMeta & 的源代码 Gst-nvdsmetautils 插件需要的 NvDsObjectMeta 反序列化/序列化