DeepStream系列之SDK文件夹解析

不羁的心 提交于 2020-01-10 13:58:55

系列文章目录

(一)DeepStream系列之环境配置安装

(二)DeepStream系列之SDK文件夹解析

0 背景

在上一篇文章中,我们对deepstream的安装进行了介绍,本篇对SDK的文件结构进行解析,从而对SDK有更清楚的认识。

1 整体结构

如果使用deb包安装的SDK,则安装目录位于/opt/nvidia/deepstream/deepstream-x.x。如果使用压缩包安装的,则位于我们压缩包解压的位置,利用tree -d指令进行目录分析,输出如下

.
├── samples
│   ├── configs
│   │   └── deepstream-app
│   ├── models
│   │   ├── Primary_Detector
│   │   ├── Primary_Detector_Nano
│   │   ├── Secondary_CarColor
│   │   ├── Secondary_CarMake
│   │   ├── Secondary_VehicleTypes
│   │   └── Segmentation
│   │       ├── industrial
│   │       └── semantic
│   └── streams
└── sources
    ├── apps
    │   ├── apps-common
    │   │   ├── includes
    │   │   └── src
    │   └── sample_apps
    │       ├── deepstream-app
    │       ├── deepstream-dewarper-test
    │       │   └── csv_files
    │       ├── deepstream-gst-metadata-test
    │       ├── deepstream-image-decode-test
    │       ├── deepstream-infer-tensor-meta-test
    │       ├── deepstream-nvof-test
    │       ├── deepstream-perf-demo
    │       ├── deepstream-segmentation-test
    │       ├── deepstream-test1
    │       ├── deepstream-test2
    │       ├── deepstream-test3
    │       ├── deepstream-test4
    │       ├── deepstream-test5
    │       │   └── configs
    │       └── deepstream-user-metadata-test
    ├── gst-plugins
    │   ├── gst-dsexample
    │   │   └── dsexample_lib
    │   ├── gst-nvinfer
    │   ├── gst-nvmsgbroker
    │   └── gst-nvmsgconv
    ├── includes
    ├── libs
    │   ├── amqp_protocol_adaptor
    │   ├── azure_protocol_adaptor
    │   │   ├── device_client
    │   │   └── module_client
    │   ├── kafka_protocol_adaptor
    │   ├── nvdsinfer
    │   ├── nvdsinfer_customparser
    │   └── nvmsgconv
    ├── objectDetector_FasterRCNN
    │   └── nvdsinfer_custom_impl_fasterRCNN
    ├── objectDetector_SSD
    │   └── nvdsinfer_custom_impl_ssd
    ├── objectDetector_Yolo
    │   └── nvdsinfer_custom_impl_Yolo
    └── tools
        └── nvds_logger

接下来对每个文件夹中的内容进行介绍

2 samples文件夹

samples文件夹中含有三个子文件夹,分别是configs、models、streams文件夹,分别表示示例配置文件、运行示例应用程序的模型及流媒体文件目录

2.1 configs子文件夹

configs文件夹下是deepstream-app的各种配置文件,

.
├── configs
│   └── deepstream-app
│       ├── config_infer_primary_nano.txt(在nano上将 nvinfer 元素配置为主要检测器)
│       ├── config_infer_primary.txt(将 nvinfer 元素配置为主要检测器)
│       ├── config_infer_secondary_carcolor.txt(将 nvinfer元素配置为辅助分类器)
│       ├── config_infer_secondary_carmake.txt(将 nvinfer元素配置为辅助分类器)
│       ├── config_infer_secondary_vehicletypes.txt(将 nvinfer元素配置为辅助分类器)
│       ├── iou_config.txt(配置一个低级的IOU(联合上的交集)跟踪器)
│       ├── source1_usb_dec_infer_resnet_int8.txt(演示一个USB摄像机作为输入)
│       ├── source30_1080p_dec_infer-resnet_tiled_display_int8.txt    
│       │  (演示30路1080P视频输入解码、推理、显示)
│       ├── source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8_gpu1.txt
│       │  (演示在gpu1上4路1080P视频输入解码、推理、跟踪、显示)                                      
│       ├── source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt
│       │  (演示4路1080P视频输入解码、推理、跟踪、显示)
│       └── tracker_config.yml

2.2 models子文件夹

├── models
│   ├── Primary_Detector(一级检测器)
│   │   ├── cal_trt.bin
│   │   ├── labels.txt
│   │   ├── resnet10.caffemodel
│   │   └── resnet10.prototxt
│   ├── Primary_Detector_Nano(二级检测器,适用于nano)
│   │   ├── labels.txt
│   │   ├── resnet10.caffemodel
│   │   └── resnet10.prototxt
│   ├── Secondary_CarColor(二级检测器,车辆颜色分类)
│   │   ├── cal_trt.bin
│   │   ├── labels.txt
│   │   ├── mean.ppm
│   │   ├── resnet18.caffemodel
│   │   └── resnet18.prototxt
│   ├── Secondary_CarMake(二级检测器,车辆颜色分类)
│   │   ├── cal_trt.bin
│   │   ├── labels.txt
│   │   ├── mean.ppm
│   │   ├── resnet18.caffemodel
│   │   └── resnet18.prototxt
│   ├── Secondary_VehicleTypes(二级检测器,车辆种类分类)
│   │   ├── cal_trt.bin
│   │   ├── labels.txt
│   │   ├── mean.ppm
│   │   ├── resnet18.caffemodel
│   │   └── resnet18.prototxt
│   └── Segmentation(分割模型)
│       ├── industrial
│       │   └── unet_output_graph.uff
│       └── semantic
│           └── unetres18_v4_pruned0.65_800_data.uff

模型的具体参数如下

 

2.3 streams子文件夹

该文件夹主要包含一些测试文件,文件对应的类型如图所示

3 sources文件夹

该文件夹中包含各种示例程序和插件的源代码,主要有以下几个文件夹

.
├── apps(deepstream-app的测试代码)
├── gst-plugins(gstreamer插件)
├── includes(各种头文件)
├── libs(各种库)
├── objectDetector_FasterRCNN(faster rcnn目标检测器)
├── objectDetector_SSD(SSD目标检测器)
├── objectDetector_Yolo(yolo目标检测器)
└── tools(日志工具)

我们能用到的主要是apps中的sample_app示例代码以及下边三种目标检测器

3.1 apps子文件夹

sample_apps
├── deepstream-app
├   DeepStream参考应用程序的源代码。
├── deepstream-dewarper-test
├   演示单个或多个360度摄像机流的扭曲功能。从CSV文件读取相机校准参数,
├   并在显示屏上渲染过道和斑点表面。
├── deepstream-gst-metadata-test
├   演示如何在DeepStream管道中的Gst-nvstreammux插件之前设置元数据,
├   以及如何在Gst-nvstreammux之后访问元数据。
├── deepstream-image-decode-test
├   建立在deepstream-test3上,以演示图像解码而不是视频。本示例使用自定义解码箱,
├   因此可以将MJPEG编解码器用作输入。
├── deepstream-infer-tensor-meta-test
├   演示如何将nvinfer张量输出作为元数据传递和访问。
├── deepstream-nvof-test
├   演示单个或多个流的光流功能。本示例使用两个GStreamer插件(Gst-nvof和Gst-nvofvisual)。
├   Gst-nvof元素生成MV(运动矢量)数据并将其作为用户元数据附加。Gst-nvofvisual元素使用
├   预定义的色轮矩阵可视化MV数据。
├── deepstream-perf-demo
├   对目录中的所有流顺序执行单通道级联推理和对象跟踪。
├── deepstream-segmentation-test
├   演示使用语义或工业神经网络对多流视频或图像进行分段,并将输出呈现到显示器。
├── deepstream-test1
├   有关如何对单个H.264流使用DeepStream元素的简单示例:filesrc→解码→nvstreammux→nvinfer
├   (主检测器)→nvosd→渲染器。
├── deepstream-test2
├    如何对单个H.264流使用DeepStream元素的简单示例:filesrc→解码→nvstreammux→nvinfer(主检测 
├    器)→nvtracker→nvinfer(辅助分类器)→nvosd→渲染器。
├── deepstream-test3
├    基于deepstream-test1(简单测试应用程序1)构建,以演示如何:
├    •在管道中使用多个来源
├    •使用uridecodebin接受任何类型的输入(例如RTSP /文件),任何GStreamer支持的容器格式以及
├     任何编解码器
├    •配置Gst-nvstreammux生成一批帧并推断出这些帧以提高资源利用率
├    •提取流元数据,其中包含有关批处理缓冲区中的帧的有用信息
├── deepstream-test4
├    基于deepstream-test1 构建单个H.264流:filesrc,decode,nvstreammux,nvinfer,nvosd, 
├    renderer演示如何:
├    •在管道中使用Gst-nvmsgconv和Gst-nvmsgbroker插件
├    •创建NVDS_META_EVENT_MSG类型的元数据并将其附加到缓冲区
├    •将 NVDS_META_EVENT_MSG用于不同类型的对象,例如车辆和人
├    •实现元数据通过extMsg字段扩展的“复制”和“免费”功能
├── deepstream-test5
├   建立在deepstream-app之上。展示:
├   •在管道中将Gst-nvmsgconv和Gst-nvmsgbroker插件用于多流
├   •如何从配置文件中将Gst-nvmsgbroker插件配置为接收器插件(适用于KAFKA,Azure等)
├   •如何处理来自RTSP服务器或摄像机的RTCP发送者报告,以及如何将Gst Buffer PTS转换为UTC
├    时间戳。欲了解更多详情,请参阅该RTCP发送者报告回调函数test5_rtcp_sender_report_callback()注册和使用的deepstream_test5_app_main.c。
├     使用rtpmanager元素的“ handle-sync”信号进行GStreamer回调注册的过程记录在apps-common /src / deepstream_source_bin.c中。
├ 
├──deepstream-user-metadata-test
├  演示如何向DeepStream的任何组件中添加自定义或用户特定的元数据。测试代码将一个填充有用户
├  数据的16字节数组附加到所选组件。数据在另一个组件中检索。
└── 

3.2 目标检测文件夹

 

 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!