Jetson-DeepStream
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相关推荐
- Nvidia Jetson deepstream配置多路RTSP视频源
DeepStream实现多 RTSP源 DeepStream实现多 RTSP源,其实很简单 Nvidia Jetson deepstream 使用 DeepStream实现多 RTSP源,其实很简单 ...
- 19、Jetson Xavier NX使用yolov5对比GPU模型下的pt、onnx、engine 、 DeepStream 加速性能
基本思想:手中有块Jetson Xavier NX开发板,难得对比一下yolov5在相同模型下,不同形式下的加速性能 一.在ubuntu20.04的基础上,简单做一下对比实验,然后在使用 Jetson ...
- Jetson Nano 使用教程、yolo、DeepStream
Jetson Nano 文章目录 Jetson Nano 一.Jetson Nano系统安装及基础环境配置 1.系统安装 2.换源 3.添加cuda路径 4.安装conda.pip (1):安装con ...
- Jetson Nano v4.6.3:安装系统、U盘启动、安装SDK、安装PyTorch GPU、YOLOv5+DeepStream部署
一.写在前面 本教程为个人创作,截止发布日仅在CSDN平台刊登,转载请附本文链接. 本教程直接面向YOLOv5用户,提供四个文件供下载,简单说明如下表,详细说明和下载链接在文末. 文件名称 文件类型 ...
- 带你玩转Jetson之Deepstream简明教程(四)DeepstreamApp如何使用以及用于工程验证。
1.DeepstreamApp是什么? 如果你安装完毕deepstream整体框架,会在你的系统执行目录内有可执行文件,文件名字是deepstream-app.这是一个可执行脚本文件,通过deepst ...
- NVIDIA中文车牌识别系列-1” 在Jetson上用DeepStream识别中文车牌
前言 这是NVIDIA在2021年初公布的一个开源项目,用NVIDA Jetson设备上的DeepStream视频分析套件实现"车牌识别"的功能,这是个实用性非常高的应用,能应用在 ...
- NVIDIA DeepStream 5.0构建智能视频分析应用程序
NVIDIA DeepStream 5.0构建智能视频分析应用程序 无论是要平衡产品分配和优化流量的仓库,工厂流水线检查还是医院管理,要确保员工和护理人员在照顾病人的同时使用个人保护设备(PPE),就 ...
- DeepStream: 新一代智能城市视频分析
在Jetson TX2上试用TensorRT https://jkjung-avt.github.io/tensorrt-cats-dogs/ NVIDIA提供了一个名为TensorRT的高性能深度学 ...
- NVIDIA Jetson 系列产品开发相关文档,TAO、TLT、NGC
1 Jetson nano推理性能 jetson-nano-dl-inference-benchmarks 1.Jetson nano在模型精度 FP16 和 batch_size=1是模型的推理性能 ...
- 线下报名 | NVIDIA JETSON 开发者交流会,走进哈工大!
5 月 16 日,NVIDIA Jetson 开发者交流会将走进哈工大.在会上,来自 NVIDIA 的专家和生态内精英合作伙伴为您介绍最新技术包括 Jetpack 新功能解析,包含 DeepStrea ...
最新文章
- Tensorflow会话
- Multiple substitutions specified in non-positional format; did you mean to add the formatted=”false”
- FlashFTP工具的自动缓存服务器目录的功能
- 微信小程序分析送积分功能如何实现_微信小程序如何做出一个积分系统?
- 改善ASP.NET2.0性能的五件法宝
- BeanDefinition的载入和解析
- Python控制台英汉-汉英电子词典
- 简述UTF-8编码原理及其文本文件的读写技术 【转】
- bash的快捷键、特殊参数、历史命令、相关文件
- 拨号720错误解决记.txt
- Spring MVC 第一个HelloWorld程序
- 《metapath2vec: Scalable Representation Learning for Heterogeneous Networks》
- 腾讯与360继续争,受益的是谁?
- linux学习(跟着b站尚硅谷老师学习)
- 北京新版城市总体规划解读
- 追寻缺失的大学精神 一个民族需要关注天空的人
- deadmau5 《光之塔》 NFT 系列来袭!
- 简明扼要理解YOLOX
- python调用bitly api出错
- Lake Shore低温探针台的晶圆安装方法
热门文章
- 中国Linux公社校园联络员第四次全体大会会议记录
- 525、Java工程师的进阶之路 -【 RocketMQ (二)】 2022.01.06
- ChatGPT办公应用:制作PPT大纲
- WIN7 64位 安装ANACONDA3 报错:FAILED TO CREATE MENUS
- “金三银四“,敢不敢“试”?
- 不积小流,无以成江海;不积跬步,无以至千里
- 微信小程序入门与实战之阅读列表与setData数据的绑定
- 神器 | 教你去除视频马赛克
- Alexa, Stop Spying on Me!“: Speech Privacy Protection Against Voice Assistants
- 2019年私域流量的演变历程剖析:定义、演变、成因、改变企业营销决策!