DeepStream

这篇文章主要是结合官方文档,自己的实际验证来讲DeepStream到底是个啥,我开始写的时候我也不知道这是个啥,一步步探索,以一个菜鸟的看法来写这个,如有错误还望大家指点一下。然后所有的操作都是在TX2或Jetson AGX Xavier上完成的。

一、刷机、安装DeepStream

在英伟达的板子上,TX2、Xavier这些上面,建议是使用jetson sdk直接刷机,刷机的时候选择DeepStream一并刷入可以减少很多的工作量。参考链接:https://blog.csdn.net/weixin_42743099/article/details/107231462

二、DeepStream

1、DeepStream概述

放图 ↓ :DeepStream可以加速不同的模型,高效、实时分析来自相机、传感器、IoT网关等的数据。DeepStream的关键功能之一是边缘和云之间的安全双向通信(图示的Bi-Directional IoT Messaging,这部分我还没了解,挂个官方说明)。
第一排和最后一排比较好理解,第一排就是DeepStream支持Python,C/C++,最后一排就是适用于的几种平台。
来点官方点的说明:deepstream是nvidia官方推出的一个数据流处理工具包,可以很方便的实现对视频的解码、推理等工作,高效的完成图像分类、目标检测、识别和跟踪等任务。
deepstream是在gstreamer的基础上开发的,因此使用deepstream需要一定的c语言基础和gstreamer基础。deepstream可以看成是一个壳,里面集成了gstreamer和tensorrt等工具,我们可以使用deepstream完成视频的解码、传输、神经网络推理、结果的渲染等工作。

2、DeepStream-app

放图 ↓ :DeepStream-app是基于GStreamer的解决方案,它由封装了低级API的GStreamer插件集组成,以形成完整的图形。该参考应用程序具有接受来自各种来源(如摄像机,RTSP输入,编码文件输入)的输入的能力,并且还支持多流/源功能。由NVIDIA实现并作为DeepStream SDK的一部分提供的GStreamer插件列表包括:

  • Stream Muxer插件(Gst-nvstreammux)从多个输入源组成一批缓冲区。

  • 基于NVIDIA TensorRT™的插件(Gst-nvinfer)分别用于主要和次要(主要对象的属性分类)检测和分类。

  • 基于OpenCV的跟踪器插件(Gst-nvtracker),用于具有唯一ID的对象跟踪。

  • Multi Stream Tiler插件(Gst-nvmultistreamtiler)用于形成2D帧数组。

  • 屏幕显示(OSD)插件(Gst-nvdsosd)使用生成的元数据在合成框架上绘制阴影框,矩形和文本。

  • 消息转换器(Gst-nvmsgconv)和消息代理(Gst-nvmsgbroker)插件结合使用,可以将分析数据发送到云中的服务器。

3、运行demo

两步搞定

$ cd /opt/nvidia/deepstream/deepstream-5.0/samples/configs/deepstream-app
$ deepstream-app -c source8_1080p_dec_infer-resnet_tracker_tiled_display_fp16_nano.txt  //可以尝试运行不同配置文件


deepstream-app文件夹下主要配置文件的描述:(虽然有些官方标注了适用的板子,但是我试了一下感觉都可以用的)


2021.07.15 更新:xavier都可以使用,其他的谨慎,nano运行其他几个直接卡到死机


  • source30_1080p_resnet_dec_infer_tiled_display_int8.txt:演示30个具有主要推理功能的流解码。(仅适用于dGPU和Jetson AGX Xavier平台。)
  • source4_1080p_resnet_dec_infer_tiled_display_int8.txt:演示具有主推论,对象跟踪和三个不同的辅助分类器的四个流解码。(仅适用于dGPU和Jetson AGX Xavier平台。)
  • source4_1080p_resnet_dec_infer_tracker_sgie_tiled_display_int8_gpu1.txt:在GPU 1上针对主要推理,对象跟踪和三个不同的二级分类器演示四个流解码(对于具有多个GPU卡的系统)。仅适用于dGPU平台。
  • config_infer_primary.txt:将nvinfer元素配置为主要检测器。
  • config_infer_secondary_carcolor.txt,config_infer_secondary_carmake.txt,config_infer_secondary_vehicletypes.txt:将nvinfer元素配置为辅助分类器。
  • iou_config.txt:配置一个低级的IOU(联合上的交集)跟踪器。
  • tracker_config.yml:配置NvDCF跟踪器。
  • source1_usb_dec_infer_resnet_int8.txt:演示一台USB摄像机作为输入。
  • source1_csi_dec_infer_resnet_int8.txt:演示一个CSI摄像机作为输入;仅适用于Jetson。
  • source2_csi_usb_dec_infer_resnet_int8.txt:演示一台CSI摄像机和一台USB摄像机作为输入;仅适用于Jetson。
  • source6_csi_dec_infer_resnet_int8.txt:演示了六个CSI摄像机作为输入;仅适用于Jetson。
  • source8_1080p_dec_infer-resnet_tracker_tiled_display_fp16_nano.txt:演示8解码+推断+跟踪器;仅适用于Jetson Nano。
  • source8_1080p_dec_infer-resnet_tracker_tiled_display_fp16_tx1.txt:演示8解码+推断+跟踪器;仅适用于Jetson TX1。
  • source12_1080p_dec_infer-resnet_tracker_tiled_display_fp16_tx2.txt:演示12个解码+推断+跟踪器;仅适用于Jetson TX2。
  • samples / configs / deepstream-app-trtis:用于使用Triton Inference Server进行推理的参考应用程序的配置文件
  • source30_1080p_dec_infer-resnet_tiled_display_int8.txt(30解码+推断)
  • source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt(4解码+推断+ SGIE +跟踪器)
  • source1_primary_classifier.txt(单源+全帧分类)

2021.07.15 更新:
1、DeepStream Sample App /sources/apps/sample_apps/deepstream-app
端到端示例演示了4级联神经网络(1个一级检测器和3个二级分类器)的多相机流,并显示平铺输出。
2、DeepStream Test 1 /sources/apps/sample_apps/deepstream-t
DeepStream Test 2 /sources/apps/sample_apps/deepstream-test2
简单的应用程序,建立在test1之上,显示额外的属性,如跟踪和二级分类属性。
3、DeepStream Test 3 /sources/apps/sample_apps/deepstream-test3
简单的应用程序,建立在test1的基础上,显示多个输入源和批处理使用nvstreammuxer。
4、DeepStream Test 4 /sources/apps/sample_apps/deepstream-test4
这是在Test1示例的基础上构建的,演示了“nvmsgconv”和“nvmsgbroker”插件在物联网连接管道中的使用。对于test4,用户必须修改kafka代理连接字符串才能成功连接。需要安装分析服务器docker之前运行test4。DeepStream分析文档有关于设置分析服务器的更多信息。
5、FasterRCNN Object Detector /sources/objectDetector_FasterRCNN
FasterRCNN物体探测器实例。
6、SSD Object Detector /sources/objectDetector_SSD
SSD目标探测器实例。


4、优化


2021.07.15 更新:
在优化前先看看配置文件中的内容,文件中都是有备注的
文件中主要的几个信息,需要更改的地方前面都会有标注
[tiled-display] 视频输出
[source0] 视频输入,多路视频就多写几个source,即[source1]、[source2]…
[sink0] 屏幕
[sink1] 视频文件
[sink2] 媒体流
[primary-gie] 物体检测
[tracker] 物体追踪


设置上的优化,原来的配置文件上都是deepstream根据提供的几个demo写的配置,总结一下自己的学到的一些,可以用到自己的模型上。
配置文件位置,以四路1080p的为例子

//此路径下存放的就是demo的配置信息文件
cd /opt/nvidia/deepstream/deepstream-5.0/samples/configs/deepstream-app
sudo gedit source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt

三、DeepStream加速yolov3

  • 下载yolo配置和权重文件,prebuild.sh下载yolov2和yolov3配置和权重文件,可以用编辑器打开把yolov2的注释掉
./prebuild.sh

如果上面这个方法不行的,可以直接去github上下载(yolo)。下载完后解压,在cfg文件夹下,用到的是yolov3.cfg和yoloc3-tiny.cfg。权重文件:

wget https://pjreddie.com/media/files/yolov3.weights
wget https://pjreddie.com/media/files/yolov3-tiny.weights
  • 设置配置和权重文件路径
cd /opt/nvidia/deepstream/deepstream-5.0/sources/objectDetector_Yolo
sudo gedit config_infer_primary_yoloV3.txt
//找到下面两处位置,更改配置和权重文件路径,就是上面个两个文件的路径
custom-network-config=
model-file=

Makefile更改CUDA版本,CUDA_VER=10.2

cd nvdsinfer_custom_impl_Yolo
sudo gedit Makefile

编译工程

cd /opt/nvidia/deepstream/deepstream-5.0/sources/objectDetector_Yolo
make -C nvdsinfer_custom_impl_Yolo

运行例程

deepstream-app -c deepstream_app_config_yoloV3.txt

如果要运行tiny,按照上面的过程更改一下config_infer_primary_yoloV3_tiny.txt文件下的配置和权重文件的路径,编译后运行即可
放两张帧率图,在跑yolov3_tiny.weight的时候有60帧,但是在跑yolov3.weight的时候只有9帧,括号中的是五秒内的平均帧率

Jetson-DeepStream相关推荐

  1. Nvidia Jetson deepstream配置多路RTSP视频源

    DeepStream实现多 RTSP源 DeepStream实现多 RTSP源,其实很简单 Nvidia Jetson deepstream 使用 DeepStream实现多 RTSP源,其实很简单 ...

  2. 19、Jetson Xavier NX使用yolov5对比GPU模型下的pt、onnx、engine 、 DeepStream 加速性能

    基本思想:手中有块Jetson Xavier NX开发板,难得对比一下yolov5在相同模型下,不同形式下的加速性能 一.在ubuntu20.04的基础上,简单做一下对比实验,然后在使用 Jetson ...

  3. Jetson Nano 使用教程、yolo、DeepStream

    Jetson Nano 文章目录 Jetson Nano 一.Jetson Nano系统安装及基础环境配置 1.系统安装 2.换源 3.添加cuda路径 4.安装conda.pip (1):安装con ...

  4. Jetson Nano v4.6.3:安装系统、U盘启动、安装SDK、安装PyTorch GPU、YOLOv5+DeepStream部署

    一.写在前面 本教程为个人创作,截止发布日仅在CSDN平台刊登,转载请附本文链接. 本教程直接面向YOLOv5用户,提供四个文件供下载,简单说明如下表,详细说明和下载链接在文末. 文件名称 文件类型 ...

  5. 带你玩转Jetson之Deepstream简明教程(四)DeepstreamApp如何使用以及用于工程验证。

    1.DeepstreamApp是什么? 如果你安装完毕deepstream整体框架,会在你的系统执行目录内有可执行文件,文件名字是deepstream-app.这是一个可执行脚本文件,通过deepst ...

  6. NVIDIA中文车牌识别系列-1” 在Jetson上用DeepStream识别中文车牌

    前言 这是NVIDIA在2021年初公布的一个开源项目,用NVIDA Jetson设备上的DeepStream视频分析套件实现"车牌识别"的功能,这是个实用性非常高的应用,能应用在 ...

  7. NVIDIA DeepStream 5.0构建智能视频分析应用程序

    NVIDIA DeepStream 5.0构建智能视频分析应用程序 无论是要平衡产品分配和优化流量的仓库,工厂流水线检查还是医院管理,要确保员工和护理人员在照顾病人的同时使用个人保护设备(PPE),就 ...

  8. DeepStream: 新一代智能城市视频分析

    在Jetson TX2上试用TensorRT https://jkjung-avt.github.io/tensorrt-cats-dogs/ NVIDIA提供了一个名为TensorRT的高性能深度学 ...

  9. NVIDIA Jetson 系列产品开发相关文档,TAO、TLT、NGC

    1 Jetson nano推理性能 jetson-nano-dl-inference-benchmarks 1.Jetson nano在模型精度 FP16 和 batch_size=1是模型的推理性能 ...

  10. 线下报名 | NVIDIA JETSON 开发者交流会,走进哈工大!

    5 月 16 日,NVIDIA Jetson 开发者交流会将走进哈工大.在会上,来自 NVIDIA 的专家和生态内精英合作伙伴为您介绍最新技术包括 Jetpack 新功能解析,包含 DeepStrea ...

最新文章

  1. Tensorflow会话
  2. Multiple substitutions specified in non-positional format; did you mean to add the formatted=”false”
  3. FlashFTP工具的自动缓存服务器目录的功能
  4. 微信小程序分析送积分功能如何实现_微信小程序如何做出一个积分系统?
  5. 改善ASP.NET2.0性能的五件法宝
  6. BeanDefinition的载入和解析
  7. Python控制台英汉-汉英电子词典
  8. 简述UTF-8编码原理及其文本文件的读写技术 【转】
  9. bash的快捷键、特殊参数、历史命令、相关文件
  10. 拨号720错误解决记.txt
  11. Spring MVC 第一个HelloWorld程序
  12. 《metapath2vec: Scalable Representation Learning for Heterogeneous Networks》
  13. 腾讯与360继续争,受益的是谁?
  14. linux学习(跟着b站尚硅谷老师学习)
  15. 北京新版城市总体规划解读
  16. 追寻缺失的大学精神 一个民族需要关注天空的人
  17. deadmau5 《光之塔》 NFT 系列来袭!
  18. 简明扼要理解YOLOX
  19. python调用bitly api出错
  20. Lake Shore低温探针台的晶圆安装方法

热门文章

  1. 中国Linux公社校园联络员第四次全体大会会议记录
  2. 525、Java工程师的进阶之路 -【 RocketMQ (二)】 2022.01.06
  3. ChatGPT办公应用:制作PPT大纲
  4. WIN7 64位 安装ANACONDA3 报错:FAILED TO CREATE MENUS
  5. “金三银四“,敢不敢“试”?
  6. 不积小流,无以成江海;不积跬步,无以至千里
  7. 微信小程序入门与实战之阅读列表与setData数据的绑定
  8. 神器 | 教你去除视频马赛克
  9. Alexa, Stop Spying on Me!“: Speech Privacy Protection Against Voice Assistants
  10. 2019年私域流量的演变历程剖析:定义、演变、成因、改变企业营销决策!