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 source details
参考测试应用
源目录中的路径
描述
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)构建,演示如何:
-
在流程中使用多个来源。
-
使用 uridecodebin 接受任何类型的输入(例如 RTSP/文件)、任何 GStreamer 支持的容器格式和任何编解码器。
-
配置 Gst-nvstreammux 以生成一批帧并对其进行推断以更好地利用资源。
-
提取流元数据,其中包含有关批处理缓冲区中帧的有用信息。
这个应用程序使用 resnet10.caffemodel 进行检测。
Sample test application 4
apps/sample_apps/deepstream-test4
基于 deepstream-test1 构建单个 H.264 流:filesrc、decode、nvstreammux、nvinfer、nvdsosd、renderer 以演示如何:
-
在流程中使用 Gst-nvmsgconv 和 Gst-nvmsgbroker 插件。
-
创建 NVDS_META_EVENT_MSG 类型元数据并将其附加到缓冲区。
-
将 NVDS_META_EVENT_MSG 用于不同类型的对象,例如 车辆和人。
-
如果元数据通过 extMsg 字段扩展,则实现“复制”和“释放”功能以供使用。
这个应用程序使用 resnet10.caffemodel 进行检测。
Sample test application 5
apps/sample_apps/deepstream-test5
构建在 deepstream-app 之上。 证明:
-
在多流流程中使用 Gst-nvmsgconv 和 Gst-nvmsgbroker 插件。
-
如何将配置文件中的 Gst-nvmsgbroker 插件配置为接收器插件(用于 KAFKA、Azure 等)。
-
如何处理来自 RTSP 服务器或摄像头的 RTCP 发送方报告,并将 Gst Buffer PTS 转换为 UTC 时间戳。
有关详细信息,请参阅 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
中查看更多详细信息
注意 写入输出文件的应用程序(例如:deepstream-image-meta-test、deepstream-testsr、deepstream-transfer-learning-app)应在 sudo 权限下运行。
组件和库细节
下表描述了除参考测试应用程序之外的源目录的内容:
插件和库详细信息
插件或库
源目录中的路径
描述
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
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 反序列化/序列化
Kafka库的安装见我另外一篇文章:
英伟达
Deep
Stream
学习笔记33——Xavier上
Deep
Stream
实现Kafka协议通信
安装成功后最终头文件和库文件会分别安装在
二、调用librdkafka库接收kafka发出的消息
consumer.cpp
rdkafkacpp.h从你安装的库复制一个。链接到就行。
测试ok!
https://www.jianshu.com/p/0a0d566c7773https://github.com/yanxicheung/daydayup
之前介绍了在
deep
stream
中使用 yolov3、yolov4 的方法,现在已经有 yolov5 了,在性能上有了很大的提升,本文对
deep
stream
中使用 yolov5 的方法做一介绍
一、参考资料
Deep
Stream
SDK 官方文档
Deep
Stream
6.0 Release Notes
Deep
Stream
SDK Development Guide
Deep
Stream
SDK API Reference
Deep
Stream
Plugin Manual
Deep
Stream
Python API
二、相关介绍
NVIDIA
Deep
Stream
概述
Deep
Stream
是使用开
源
G
Stream
er 框架构建的优化图形架构,用于构建具有AI能力的
应用程序
的流分析工具包。它以流
docker pull nvcr.io/
nvidia
/
deep
stream
:5.1-21.02-devel (这里一定要下载-devel 后缀的,因为这个包含了
开发
sdk)
安装vscode(vscode可以直接在docker远程
开发
非常方便,直接在Ubuntu软件中搜索 vscode就有了)
===================== docker 安装 =======
安装
nvidia
-docker
在使用带有 cuda ...
0. 背景介绍
当使用
deep
stream
进行模型推理,经常需要配置nvinfer的参数,但是参数含义却难以记住,因此按照,一级目标检测,二级目标检测和二级目标分类这三个场景编写了一个参数模板,之后只需复制这个模板对其中的参数进行修改即可。
参考链接:Gst-nvinfer —
Deep
Stream
6.0 Release documentation (
nvidia
.com)
1. primary detector之nvinfer config参数模板
[property]
# 1. image
来
源
于官网翻译资料Welcome to the
Deep
Stream
Documentation —
Deep
Stream
5.1 Release documentation
1.
Deep
Stream
简介
1.1
Deep
Stream
概览
Deep
Stream
是一个流分析工具包,用于构建 AI 驱动的
应用程序
。它将流数据作为输入——来自 USB/CSI 摄像头、来自文件的视频或通过 RTSP 的流,并使用
人工智能
和计算机视觉从像素中生成洞察力,以便更好地了解环境。
Deep
Stream
SDK 可以成.
* Permission is hereby granted, free of charge, to any person obtaining a
前言rtmp即Real Time Messaging Protocol(实时消息传输协议)的首字母缩写,它是由Adobe公司提出的一种应用层的协议,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题。
目前现在流行的是直播技术, 大部分都是采用该协议;本文档重点用
C++
开发
实现了RTMP直播推流sdk部分,并使之跨平台通用。
简单的结构如下:主要