DeepStream SDK包包含包含插件、库、应用程序和源代码的存档。源代码目录位于/opt/nvidia/deepstream/deepstream-6.2/sources,用于Debian安装(在Jetson或dGPU上)和SDK管理器安装。对于tar包,源文件在提取的deepstream包中。DeepStream Python绑定和示例应用程序可作为单独的包提供。欲了解更多信息,请参见https://github.com/NVIDIA-AI-IOT/deepstream_python_apps。
使用Graph Composer创建的DeepStream图形在参考图部分列出。有关更多信息,请参阅Graph Composer介绍。
示例源代码详细信息
参考测试应用 | 源目录内的路径 | 描述 |
示例测试应用1 | apps/sample_apps/deepstream-test1 | 如何为单个H.264流使用DeepStream元素示例:filesrc→decode→nvstreammux→nvinfer或nvinferserver(主检测器)→nvdsosd→渲染器。这个应用程序使用resnet10.caffemodel用于检测。 |
示例测试应用2 | apps/sample_apps/deepstream-test2 | 如何为单个H.264流使用DeepStream元素示例:filesrc→decode→nvstreammux→nvinfer或nvinferserver(主检测器)→nvtracker→nvinfer或nvinferserver(二级分类器)→nvdsosd→渲染器。这个应用程序使用了resnet10.caffemodel进行检测和3个分类器模型(即汽车颜色,制造和模型)。 |
示例测试应用3 | apps/sample_apps/deepstream-test3 | 构建在deepstream-test1(简单测试应用程序1)上,演示如何: 在管道中使用多个源。 使用uridecodebin接受任何类型的输入(例如RTSP/File),任何GStreamer支持的容器格式,以及任何编解码器。 配置Gst-nvstreammux生成一批帧并对其进行推断,以更好地利用资源。 提取流元数据,其中包含关于批处理缓冲区中帧的有用信息。 这个应用程序使用resnet10.caffemodel用于检测。 |
示例测试应用4 | apps/sample_apps/deepstream-test4 | 在deepstream-test1上构建一个H.264流:filesrc, decode, nvstreammux, nvinfer或nvinferserver, nvdsosd, renderer,演示如何: 使用管道中的Gst-nvmsgconv和Gst-nvmsgbroker插件。 创建NVDS_META_EVENT_MSG类型元数据并将其附加到缓冲区。 对不同类型的对象使用NVDS_META_EVENT_MSG,例如车辆和人。 如果通过extMsg字段扩展元数据,则实现“复制”和“释放”函数。 这个应用程序使用resnet10.caffemodel用于检测。 |
示例测试应用5 | apps/sample_apps/deepstream-test5 | 构建在deepstream-app之上。说明: 在多流管道中使用Gst-nvmsgconv和Gst-nvmsgbroker插件。 如何从配置文件中将Gst-nvmsgbroker插件配置为接收器插件(适用于KAFKA, Azure等)。 如何处理来自RTSP服务器或摄像机的RTCP发送者报告,并将Gst缓冲区PTS转换为UTC时间戳。 有关更多详细信息,请参阅deepstream_test5_app_main.c中的RTCP发件人报告回调函数test5_rtcp_sender_report_callback()的注册和使用。GStreamer回调注册与rtpmanager元素的" handle-sync "信号被记录在apps-common/src/deepstream_source_bin.c中。 这个应用程序使用resnet10.caffemodel用于检测。 |
AMQP协议测试应用 | libs/amqp_protocol_adaptor | 应用程序测试AMQP协议。这个应用程序使用resnet10.caffemodel用于检测。 |
Azure MQTT测试应用程序 | libs/azure_protocol_adaptor | 测试应用程序以显示使用MQTT的Azure IoT device2edge消息传递和device2cloud消息传递。这个应用程序使用resnet10.caffemodel用于检测。 |
DeepStream参考应用 | 应用程序/ sample_apps / -deepstream-app | DeepStream参考应用程序的源代码。这个应用程序使用了resnet10.caffemodel进行检测和3个分类器模型(即汽车颜色,制造和模型)。 |
UFF SSD探测器 | sources/objectDetector_SSD | SSD检测器模型的配置文件和自定义库实现。 |
Faster RCNN | sources/objectDetector_FasterRCNN | FasterRCNN模型的配置文件和自定义库实现。 |
Yolo探测器 | sources/objectDetector_Yolo | Yolo模型的配置文件和自定义库实现,目前是Yolo v2、v2 tiny、v3和v3 tiny。 |
Dewarper例子 | apps/sample_apps/deepstream-dewarper-test | 演示了单个或多个360度摄像机流的脱翘曲功能。从CSV文件读取相机校准参数,并在显示器上呈现通道和光斑表面。 |
光流示例 | apps/sample_apps/deepstream-nvof-test | 演示光流功能的单一或多个流。这个例子使用了两个GStreamer插件(Gst-nvof和Gst-nvofvisual)。Gst-nvof元素生成MV(运动矢量)数据,并将其作为用户元数据附加。gst - nofvisual元素使用预定义的色轮矩阵可视化MV数据。 |
自定义元数据示例 | apps/sample_apps/deepstream-user-metadata-test | 演示如何将自定义或特定于用户的元数据添加到DeepStream的任何组件。测试代码将一个充满用户数据的16字节数组附加到所选组件。在另一个组件中检索数据。这个应用程序使用resnet10.caffemode用于检测。 |
MJPEG和JPEG解码器及推理实例 | apps/sample_apps/deepstream-image-decode-test | 构建在deepstream-test3上,演示图像解码而不是视频。这个例子使用了一个自定义解码箱,所以MJPEG编解码器可以用作输入。这个应用程序使用resnet10.caffemode用于检测。 |
图像/视频分割示例 | apps/sample_apps/deepstream-segmentation-test | 演示使用语义或工业神经网络分割多流视频或图像,并将输出呈现到显示器。这个应用程序使用unet_output_graph。Uff用于工业和unetres18_v4_pruned0.65_800_data。Uff表示语义用例。 |
在Gst-nvstreammux之前处理元数据 | apps/sample_apps/deepstream-gst-metadata-test | 演示如何在DeepStream管道中的Gst-nvstreammux插件之前设置元数据,以及如何在Gst-nvstreammux插件之后访问元数据。这个应用程序使用resnet10。用于检测的Caffemodel。 |
Gst-nvinfer张量元流的例子 | apps/sample_apps/deepstream-infer-tensor-meta-app | 演示如何流和访问nvinfer张量输出作为元数据。注意:由于OpenCV已弃用,此二进制文件没有打包。这个应用程序需要由用户编译。这个应用程序使用resnet10.caffemodel用于检测和3个分类器模型(即Car Color, Make和Model)。 |
预处理的例子 | apps/sample_apps/deepstream-preprocess-test | 演示对为流配置的预处理ROI的推断。这个应用程序使用resnet10.caffemodel用于检测。 |
3D动作识别参考应用程序 | 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的动作识别。 |
分析例子 | apps/sample_apps/deepstream-nvdsanalytics-test | 演示批处理分析,如ROI过滤,线交叉,方向检测和过度拥挤。这个应用程序使用resnet10.caffemodel用于检测。 |
OpenCV的例子 | apps/sample_apps/deepstream-opencv-test | 演示了OpenCV在dsexample插件中的使用。需要编译带有WITH_OPENCV=1标志的dsexample。这个应用程序使用resnet10.caffemodel用于检测。 |
图像作为元数据示例 | Apps/sample_apps / deepstream-image-meta-test | 演示如何将编码后的图像附加为元数据并以jpeg格式保存图像。这个应用程序使用resnet10.caffemodel用于检测。 |
Appsrc和Appsink的例子 | apps/sample_apps/deepstream-appsrc-test | 演示了AppSrc和AppSink分别从非DeepStream代码中消费和提供数据的用法。这个应用程序使用resnet10.caffemodel用于检测。 |
Cuda Appsrc和Appsink的例子 | apps/sample_apps/deepstream-appsrc-cuda-test | 演示了如何从DeepStream外部获取cuda帧,并将其馈送到DeepStream管道。 |
迁移学习实例 | apps/sample_apps/ deepstream-transfer-learning-app | 演示了一种为可信度较低的对象保存图像的机制,同样可以用于进一步的训练。这个应用程序使用resnet10.caffemodel用于检测。 |
Mask-RCNN例子 | apps/sample_apps/ deepstream-mrcnn-test | 演示了使用Mask-RCNN模型的实例分割。注意:由于OpenCV已弃用,此二进制文件没有打包。这个应用程序需要由用户编译。 |
DeepStream音频参考应用程序 | apps/sample_apps/deepstream-audio | 源代码的DeepStream参考应用程序演示音频分析管道。这个应用程序使用sonic音频模型来分类标签。 |
智能记录示例 | apps/audio_apps/deepstream-asr-app | 应用程序/ sample_apps / deepstream-testsr 演示基于事件的智能记录功能。这个应用程序使用resnet10.caffemodel用于检测。 |
文字到语音转换(Alpha) | apps/audio_apps/deepstream-asr-tts-app | 演示了文本到语音转换功能以及自动语音识别。注:此应用程序需要Riva TTS和ASR服务可用。在运行应用程序之前,请参考README中的先决条件。该应用程序使用CitriNet ASR模型和FastPitch, HiFi-GAN TTS模型。 |
DeepStream NMOS应用 | apps/sample_apps/deepstream-nmos | 这个应用程序演示了如何创建一个作为NMOS节点的DeepStream应用程序。它使用了一个库(nvdssnmos),该库提供了api来创建、销毁和内部管理NMOS节点。NMOS节点可以使用AMWA IS-04注册API自动发现网络上的NMOS注册表并向其注册。 它还展示了如何创建各种视频和音频管道,同时运行它们,并基于NMOS事件(如AMWA IS-05连接API请求来自NMOS控制器)重新配置它们。 |
DeepStream UCX测试1 | apps/sample_apps/deepstream-ucx-test1 | 演示如何使用通信插件gst-nvdsucx通过RDMA发送和接收视频数据,而不需要任何特殊的元数据。 |
DeepStream UCX测试2 | apps/sample_apps/deepstream-ucx-test2 | 演示如何使用通信插件gst-nvdsucx通过RDMA发送和接收视频/元数据,以及通过libnvds_video_metadata_serialization.so库进行自定义序列化和反序列化。 |
DeepStream UCX测试3 | apps/sample_apps/deepstream-ucx-test3 | 演示如何使用通信插件gst-nvdsucx,通过libnvds_audio_metadata_serialization.so库使用自定义音频序列化和反序列化通过RDMA发送和接收音频/元数据。 |
DeepStream 3D深度相机参考应用程序 | apps/sample_apps/deepstream-3d-depth-camera | 演示如何在DS3D接口和DS3D::dataloader、DS3D::datafilter和DS3D::datarender的自定义库上设置深度捕获、深度渲染、3d点云处理和3d点渲染管道。在DeepStream 3D深度相机应用程序中查看更多细节 |
DeepStream激光雷达数据推理参考应用程序 | apps/sample_apps/deepstream-lidar-inference-app | 演示了如何读取点云数据,如何使用Triton点柱三维对象检测模型推断点云数据,如何使用GLES渲染点云数据和三维对象。整个应用程序基于DS3D接口和DS3D::dataloader, DS3D::datafilter和DS3D::datarender的自定义库。详见DeepStream激光雷达推断应用程序(Alpha) |
Triton Onnx YOLO-v3 | sources/TritonOnnxYolo | ONNX YOLO-V3模型的配置文件和自定义库实现。演示如何使用DS-Triton来运行具有动态大小输出张量的模型,以及如何实现自定义库来运行具有多输入张量的ONNX YoloV3模型,以及如何后处理混合批处理张量数据并将它们附加到nvds元数据中 |
Deepstream服务器应用 | apps/sample_apps/deepstream-server | 应用程序/ sample_apps / deepstream-server 演示了REST API支持来实时控制DeepStream管道。 |
DeepStream Can定向示例应用 | apps/sample_apps/deepstream-can-orientation-app | 演示了基于CV的VPI模板匹配算法进行can定向检测。VPI模板匹配使用DeepStream视频模板插件实现。详见apps/sample_apps/deepstream-can-orientation-app/README |
注意
写输出文件的应用程序(例如:deepstream-image-meta-test, deepstream-testsr, deepstream-transfer-learning-app)应该在sudo权限下运行。
插件和库源代码细节
除参考测试应用程序外,source目录的内容如下表所示:
插件和库源代码细节
DsExample GStreamer插件 | gst-plugins/gst-dsexample | 模板插件集成自定义算法到DeepStream SDK图形。 |
GStreamer Gst-nvmsgconv插件 | gst-plugins/gst-nvmsgconv | 用于将元数据转换为模式格式的GStreamer Gst-nvmsgconv插件的源代码。 |
GStreamer Gst-nvmsgbroker插件 | gst-plugins/gst-vmsgbroker | 用于将数据发送到服务器的GStreamer Gst-nvmsgbroker插件的源代码。 |
GStreamer Gst-nvdspreprocess插件 | gst-plugins/gst-nvdspreprocess | 用于对预定义ROI进行预处理的GStreamer Gst-nvdspreprocess插件的源代码。 |
Gst-nvinfer插件 | gst-plugins/gst-nvinfer | 用于推理的GStreamer Gst-nvinfer插件的源代码。 |
GStreamer Gst-nvinferserver插件 | gst-plugins/gst-nvinferserver | GStreamer Gst-nvinferserver插件的源代码,用于使用Triton inference Server进行推理。 |
GStreamer Gst-nvdsosd插件 | gst-plugins/gst-nvdsosd | GStreamer Gst-nvdsosd插件的源代码,用于绘制盒子,文本和其他对象。 |
Gstreamer Gst-nvdewarper插件 | gst-plugins/gst-nvdewarper | GStreamer Gst-nvdewarper插件的源代码,用于解码帧 |
NvDsInfer库 | libs/nvdsinfer | NvDsInfer库的源代码,由Gst-nvinfer GStreamer插件使用。 |
NvDsInferServer库 | libs/nvdsinferserver | NvDsInferServer库的源代码,由Gst-nvinferserver GStreamer插件使用。 |
NvDsNmos库 | libs/nvdsnmos | NvDsNmos库的源代码,由DeepStream NMOS应用程序演示。 |
NvMsgConv库 | libs/nvmsgsconv | NvMsgConv库的源代码,由Gst-nvmsgconv GStreamer插件要求。 |
Kafka协议适配器 | libs/kafka_protocol_adapter | Kafka的协议适配器。 |
nvds_rest_server库 | libs/nvds_rest_server | rest服务器的源代码。 |
nvds_customhelper | libs/gstnvdscustomhelper | rest服务器所需的“nvdsmultiurisrcbin助手”和自定义“gst-事件,gst-消息和公共配置”的源代码。 |
nvdsinfer_customparser | libs/nvdsinfer_customparser | 检测器和分类器的自定义模型输出解析示例。 |
Gst-v4l2 | 见下面的注释1 | v4l2编解码器的源代码。 |
gst-nvdsvideotemplate插件 | gst-plugins/gst-nvdsvideotemplate | 源码模板插件实现视频自定义算法(非基于Gstreamer) |
NvDsVideoTemplate自定义库 | gst-plugins/gst-nvdsvideotemplate/customlib_impl | 源代码自定义库实现视频自定义算法 |
Gstreamer gst-nvdsaudiotemplate插件 | gst-plugins/gst-nvdsaudiotemplate | 源码模板插件tp实现音频自定义算法(非基于Gstreamer) |
Gstreamer gst-nvdsmetautils | gst-plugins/gst-nvdsmetautils | 用于处理元数据的Gstreamer Gst-nvdsmetainsert和Gst-nvdsmetaextract插件的源代码 |
NvDsMetaUtils SEI序列化库 | gst-plugins/gst-nvdsmetautils/sei_serialization | 自定义元反/序列化的源代码,以嵌入到编码的位流作为SEI数据,由Gst-nvdsmetautils插件要求 |
NvDsMetaUtils音频序列化库 | gst-plugins/gst-nvdsmetautils/audio_metadata_serialization | 音频NvDsFrameMeta de/序列化的源代码,由Gst-nvdsmetautils插件要求 |
NvDsMetaUtils视频序列化库 | gst-plugins/gst-nvdsmetautils/video_metadata_serialization | 视频NvDsFrameMeta和NvDsObjectMeta de/序列化的源代码,由Gst-nvdsmetautils插件要求 |
Gstreamer gst-nvvideotestsrc插件 | gst-plugins/gst-nvvideotestsrc | 源代码生成视频测试数据的各种格式和模式,直接写入GPU输出缓冲区 |
gst-nvdsspeech插件 | gst-plugins/gst-nvdsspeech | 自定义低级自动语音识别(ASR)库的接口,可以由Gst-nvdsasr插件加载 |
Gstreamer gst-nvdstexttospeech插件 | gst-plugins/gst-nvdstexttospeech | 自定义低级文本到语音(TTS)库的接口,可以由Gst-nvds_text_to_speech插件加载 |
Gstreamer gst-nvdspostprocess插件 | gst-plugins/gst-nvdspostprocess | 插件和低级库的源代码,为推理插件的张量输出提供了一个自定义库接口(nvinfer/nvinferserver) |
脚注
1
Gst-v4l2源代码不存在于DeepStream包中。按以下步骤下载:
在Search filter字段中,输入L4T
为L4T Release 35.2.1选择适当的项目。
搜索L4T驱动包(BSP)源
下载该文件并解压它,以获得.tbz2文件。
展开.tbz2文件。Gst-v4l2源文件位于gst-nvvideo4linux2_src.tbz2目录下。Libnvv4l2源存在于v4l2_libs_src.tbz2中