系列文章目录
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 目标检测文件夹

来源:CSDN
作者:ZONG_XP
链接:https://blog.csdn.net/zong596568821xp/article/details/103919762