【Deepstream学习】TX1 跑demo

news2024/11/26 14:44:14

        大家好,我是虎哥,使用NVIDIA Jeston TX1 也有很长一段时间了,由于这是基本停产的一个模块,其实自己也担心有很多官方的demo无法适配跑起来了,所以花了点时间,进一步研究发挥其GPU性能,使用各种硬件协处理器来加速。这里记录我自己跑通Deepstream 6.0.1 自带的一些demo的过程,以帮助有兴趣的人,可以更顺利的使用类似的模块。

目录

0、什么是Deepstream

1、官方参考资料汇总:

2、刷机安装Deepstream

2.1、查看安装版本

2.2、获取命令帮助

3、Jeston TX1 运行 deepstream-app (参考应用程序)

3.1 环境目录说明

3.2 跑TX1专属测试程序

1、跑默认配置

2、修改默认配置后跑

3.2 修改配置,实时展示

3.3 新建配置,只实现4路视频推理

3.4 新建配置,只实现2路和1路视频推理


0、什么是Deepstream

        全球有数十亿台摄像头和传感器,捕捉到大量数据,可用于生成业务见解、提高流程效率和改善收入流。无论是在交通路口减少车辆拥堵、在医院进行健康和安全监测、调查零售通道以获得更好的客户满意度、体育分析,还是在制造工厂检测组件缺陷,每个应用程序都需要可靠的实时智能视频分析(IVA)。NVIDIA的DeepStream SDK是一个基于GStreamer的完整流分析工具包,用于基于AI的多传感器处理、视频、音频和图像理解。它是视觉AI开发人员、软件合作伙伴、初创公司和OEM构建IVA应用程序和服务的理想选择。开发人员现在可以创建包含神经网络和其他复杂处理任务(如跟踪、视频编码/解码和视频渲染)的流处理管道。DeepStream管道可以对视频、图像和传感器数据进行实时分析。

特性

  • 核心 SDK 由多个硬件加速器插件组成,这些插件使用各种加速器,如 VIC、GPU、DLA、NVDEC 和 NVENC。

  • DeepStream 支持边缘和云之间的安全双向通信,DeepStream 使用用户名/密码和双向 TLS 身份验证等几种开箱即用的安全协议进行验证。

  • DeepStream 建立在 CUDA-X 堆栈(如 CUDA、TensorRT、Triton推理服务器和多媒体库)的多个 NVIDIA 库之上。TensorRT加速了NVIDIA GPU上的人工智能推理。DeepStream 在 DeepStream 插件中抽象了这些库,使开发人员无需学习所有单独的库即可轻松构建视频分析管道。

        开发者可以使用DeepStream为基于AI的视频、音频和图像分析构建无缝流媒体管道。它为开发人员提供了使用C/C++、Python或使用Graph Composer进行低代码开发的选项,从而带来了开发灵活性。DeepStream附带各种硬件加速插件和扩展。DeepStream为开发者和企业打造,为流行的对象检测和分割模型(如最先进的SSD、YOLO、FasterRCNN和MaskRCNN)提供广泛的AI模型支持。您还可以集成自定义函数和库。获得灵活性,从快速原型到完整的生产级解决方案,并选择您的推理路径。与NVIDIA Triton原生集成™ 推理服务器,您可以在本地框架(如PyTorch和TensorFlow)中部署模型进行推理。使用NVIDIA TensorRT™ 对于具有多GPU、多流和批处理支持选项的高通量推理,可帮助您实现最佳性能。除了支持本地推理,DeepStream应用程序还可以使用gRPC与Triton推理服务器的独立/远程实例进行通信,从而实现分布式推理解决方案。

        DeepStream 是使用开源 GStreamer 框架构建的优化图形架构,用于构建具有AI能力的应用程序的流分析工具包。它以流作为输入,即从USB/CSI/RTSP相机中获取流数据,DeepStream SDK 可以作为许多视频分析解决方案的基础层。

        DeepStream 提供不同系统平台下的安装方法,包括:Jetson平台,Ubuntu系统下的dGPU(独立显卡),RedHat系统下的dGPU(独立显卡)。

1、官方参考资料汇总:

DeepStream SDK | NVIDIA Developer

DeepStream SDK 官方文档DeepStream 6.0 Release Notes DeepStream SDK Development Guide DeepStream SDK API Reference DeepStream Plugin Manual DeepStream Python API

2、刷机安装Deepstream

        网上提供了很多手动安装的方法,我自己是使用官方的SDK Manager 刷机工具帮助全部安装的。在EHub_tx1_tx2_E100载板,Jeston TX1 核心模块,JetPack_4.6.3刷机系统后,没有安装其它辅助工具包,在需要的时候选择单独安装了后续的工具包。

         由于我们已经安装了系统,Jeston TX1不用再进入Recover模式,你只需要模块与你的虚拟机再同一个局域网就可以,具体步骤可以参考我之前得文章。jeston TX1&TX2使用sdkmanager 安装cuda等环境_机器人虎哥的博客-CSDN博客

2.1、查看安装版本

$ deepstream-app --version-all 
deepstream-app version 6.0.1
DeepStreamSDK 6.0.1
CUDA Driver Version: 10.2
CUDA Runtime Version: 10.2
TensorRT Version: 8.2
cuDNN Version: 8.2
libNVWarp360 Version: 2.0.1d3

2.2、获取命令帮助

$ deepstream-app --help
Usage:
  deepstream-app [OPTION?] Nvidia DeepStream Demo
​
Help Options:
  -h, --help                        Show help options
  --help-all                        Show all help options
  --help-gst                        Show GStreamer Options
​
Application Options:
  -v, --version                     Print DeepStreamSDK version
  -t, --tiledtext                   Display Bounding box labels in tiled mode
  --version-all                     Print DeepStreamSDK and dependencies version
  -c, --cfg-file                    Set the config file
  -i, --input-uri                   Set the input uri (file://stream or rtsp://stream)
​
​

以上两条命令可以执行,说明已经正确安装。接下来我们可以体验一下参考应用程序。

3、Jeston TX1 运行 deepstream-app (参考应用程序)

        DeepStream SDK与30多个示例应用程序捆绑在一起,旨在帮助用户启动开发工作。大多数示例都有C/C++、Python和Graph Composer版本,并在NVIDIA Jetson上运行™ 和dGPU平台。参考应用程序可用于了解DeepStream插件的功能,或作为开发自定义视觉AI应用程序的模板和起点。

3.1 环境目录说明

转到 samples 目录。我的机器上安装到了 /opt/nvidia/deepstream/deepstream-6.0/samples

 进入 configs目录。

cd /opt/nvidia/deepstream/deepstream-6.0/samples/configs/deepstream-app

config_infer_primary_nano.txt        
config_tracker_NvDCF_accuracy.yml                                   
source30_1080p_dec_infer-resnet_tiled_display_int8.txt
config_infer_primary.txt     #将 nvinfer元素配置为主要检测器。              
config_tracker_NvDCF_max_perf.yml                                   
source30_1080p_dec_preprocess_infer-resnet_tiled_display_int8.txt
config_infer_secondary_carcolor.txt      
config_tracker_NvDCF_perf.yml                                       
source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt
config_infer_secondary_carmake.txt       
source12_1080p_dec_infer-resnet_tracker_tiled_display_fp16_tx2.txt  #演示12个解码+推断+跟踪器;仅适用于Jetson TX2。
source6_csi_dec_infer_resnet_int8.txt #演示六个CSI摄像机作为输入;仅限于Jetson。
config_infer_secondary_vehicletypes.txt  
source1_csi_dec_infer_resnet_int8.txt        #演示一台USB摄像机作为输入。                      
source8_1080p_dec_infer-resnet_tracker_tiled_display_fp16_nano.txt #演示8解码+推断+跟踪器;仅适用于Jetson Nano
config_preprocess.txt                   
source1_usb_dec_infer_resnet_int8.txt    #演示一台USB摄像机作为输入。                            
source8_1080p_dec_infer-resnet_tracker_tiled_display_fp16_tx1.txt #演示8解码+推断+跟踪器;仅适用于Jetson TX1。
config_tracker_DeepSORT.yml              
source2_1080p_dec_infer-resnet_demux_int8.txt
config_tracker_IOU.yml                  
source2_csi_usb_dec_infer_resnet_int8.txt #演示一台CSI摄像机和一台USB摄像机作为输入;仅限于Jetson

截图中有几个是不一样的是,是我自己尝试修改后得,自己建立的,所以初始化安装完是没有得。

         跑示例,都需要图形化界面支持,我使用了nomachine得桌面环境。具体安装参考我之前得文档:jeston TX1_TX2 安装 远程桌面软件 NoMachine_机器人虎哥的博客-CSDN博客_arm64 远程控制软件

3.2 跑TX1专属测试程序

1、跑默认配置

这是TX1专属得测试配置,但是刚开始是跑不通得

#演示8解码+推断+跟踪器;仅适用于Jetson TX1。
source8_1080p_dec_infer-resnet_tracker_tiled_display_fp16_tx1.txt 

方法是:

# 我是在TX1上研究的,deepstream路径在/opt/nvidia下
cd /opt/nvidia/deepstream/deepstream-6.0/samples/configs/deepstream-app
# 首次运行仅仅会生成模型文件,需要二次运行
sudo deepstream-app -c source8_1080p_dec_infer-resnet_tracker_tiled_display_fp16_tx1.txt

  可以看到官方默认配置是跑不出什么可见得结果得。

2、修改默认配置后跑

修改source8_1080p_dec_infer-resnet_tracker_tiled_display_fp16_tx1.txt 文件。

sudo gedit source8_1080p_dec_infer-resnet_tracker_tiled_display_fp16_tx1.txt

 将sink0关闭,打开sink1,这点属实对于新用户,入门级选手不是很友好。

 之后我们在跑,记得,改文件,做备份之类得都在这个目录,因为默认还有一些其他文件得间接引用。

# 我是在TX1上研究的,deepstream路径在/opt/nvidia下
cd /opt/nvidia/deepstream/deepstream-6.0/samples/configs/deepstream-app
#继续跑
sudo deepstream-app -c source8_1080p_dec_infer-resnet_tracker_tiled_display_fp16_tx1.txt

 这个时候,当前跑的目录下会多一个文件。

可以播放这个视频文件看看。

 TX1实现了8路视频得推理加速。

3.2 修改配置,实时展示

        刚才我们已经跑通了测试,但是输出是文件,我们并不能直观得实时看到效果,如何实现实时展示显示呢,其实仔细研究后,也就是改依据配置得事。

继续打开文件:

sudo gedit source8_1080p_dec_infer-resnet_tracker_tiled_display_fp16_tx1.txt

 为了直观一点,我会把之前生成得文件删除。

# 我是在TX1上研究的,deepstream路径在/opt/nvidia下
cd /opt/nvidia/deepstream/deepstream-6.0/samples/configs/deepstream-app
#继续跑
sudo deepstream-app -c source8_1080p_dec_infer-resnet_tracker_tiled_display_fp16_tx1.txt

 结束后会自动关闭。

 也不会再有输出文件生成。

3.3 新建配置,只实现4路视频推理

        刚才我们跑通了默认得8路推理视频,显然有些挑战极限了,我们想能不能只推理4路视频,或者,2路,或者 1路,这个可能才是我们刚开始得时候得常态。我们也可以这么修改:

# 进入deepstream路径在/opt/nvidia下
cd /opt/nvidia/deepstream/deepstream-6.0/samples/configs/deepstream-app
#复制配置文件
sudo cp source8_1080p_dec_infer-resnet_tracker_tiled_display_fp16_tx1.txt source4_1080p_dec_infer-resnet_tracker_tiled_display_fp16_tx1.txt
#修改配置文件
sudo gedit source4_1080p_dec_infer-resnet_tracker_tiled_display_fp16_tx1.txt

 我们使用新的配置文件跑一下:

sudo deepstream-app -c source4_1080p_dec_infer-resnet_tracker_tiled_display_fp16_tx1.txt

  可以看到确实还是有作用得。

3.4 新建配置,只实现2路和1路视频推理

上面我们修改魏4路推荐,同样的方法,我自己又修改了2路和1路得推理,这个方法我就不赘述了,直接看看效果。

sudo deepstream-app -c source2_1080p_dec_infer-resnet_tracker_tiled_display_fp16_tx1.txt

 当然,你可以通过改变窗口格局,调整输出,也需要修改配置文件,你可以自己去尝试。

sudo deepstream-app -c source1_1080p_dec_infer-resnet_tracker_tiled_display_fp16_tx1.txt

 其实,从看效果看,还是一路看的舒服,哈哈。

以上就是我今天要分享的内容。纠错,疑问,交流: 911946883@qq.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/180972.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM8S207时钟管理库函数

STM8S207时钟树 //STM8S207时钟管理库函数 //CLK_DeInit();//将相关的时钟寄存器恢复到默认值 //CLK_HSECmd(ENABLE);//启用外部高速振荡器HSE //CLK_HSECmd(DISABLE);//关闭外部高速振荡器HSE //CLK_HSICmd(ENABLE);//启用内部高速振荡器HSI //CLK_HSICmd(DISABLE)//关闭内部高…

Spring Cloud Sentinel(限流、熔断、降级)、SpringBoot整合Sentinel、Sentinel的使用-60

一:Sentinel简介 Sentinel就是分布式系统的流量防卫兵 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 1.1 官方文档 官方文档&#…

哪里可以找到电子版的大学课本?

第一个:中国高校课件下载网站网址:http://download.cucdc.com/这是一个可以下载各个大学课本的网站,基本上所有的大学课本都能在这里找到PDF版本。可以按学校学科搜。 第二个:淘链客网址:https://www.toplinks.cc/s/PD…

MySQL_存储引擎

存储引擎 MySQL体系结构 连接层 最上层是一些客户端和链接服务,主要完成一些类似于连接处理、授权认证、及相关的安全方案。服务器也会为安全接入的每个客户端验证它所具有的操作权限。 服务层 第二层架构主要完成大多数的核心服务功能,如SQL接口&…

读书:《如何想到又做到》

全书最有用的内容是下面这张图:持久改变的SCIENCE模型。 作者为了方便读者记忆,找了7个单词,首字母拼在一起就是SCIENCE,对应着7种武器: S 阶梯(Stepladders):小而又小的迭代 C 社群…

高性能零售IT系统的建设09-Spring Boot2.4.2+Spring Cloud+Nacos+Feign+Hystrix的生产级应用实例

开篇 通过前面8篇我们已经感受到了我接手时这个项目有多“烂”,当然喽如果只是一味的承认它的烂这不是积极乐观主义。 我在接触管理早期听过一次四大厂的报告,报告中说到:从来没有屎一样的团队只有屎一样的“带队”。 这也符合我们一直接受的…

SpringMVC @RequestHeader @CookieValue 处理获取请求参数的乱码问题

SpringMVC RequestHeader CookieValue 处理获取请求参数的乱码问题RequestHeaderCookieValue什么是cookie通过POJO获取请求参数通过CharacterEncodingFilter处理获取请求参数的乱码问题get请求的乱码post请求乱码处理获取请求参数的乱码问题)RequestHeader 1.RequestHeader是将…

实时计算业务介绍实时日志分析

4.1 实时计算业务介绍 学习目标 目标 了解实时计算的业务需求知道实时计算的作用应用 无 4.1.1 实时计算业务需求 实时(在线)计算: 解决用户冷启动问题实时计算能够根据用户的点击实时反馈,快速跟踪用户的喜好 4.1.2 实时计算…

编译与优化

第10章 前端编译与优化 10.2.1 Javac的源码与调试 从Javac代码的总体结构来看,编译过程大致可以分为1个准备过程和3个处理过程,它们分别如下 所示。 1)准备过程:初始化插入式注解处理器。 2)解析与填充符号表过程&…

【C++】异常

​🌠 作者:阿亮joy. 🎆专栏:《吃透西嘎嘎》 🎇 座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根 目录👉C语言传统…

精神财富 物质财富

今天聊到别的家庭每天都制定好计划的,补习班 party 冬令营什么之类的,这个是我们达不到的。有人提前开启了认知,赚到了人生的第一桶金。懂得付出,和执行输出差了好多数量级。 今天看了杂技表演,男人和女人配合的好好 …

C++ 初阶 :stackqueue

文章目录1 stack的介绍2 stack的模拟实现3 queue的介绍4 queue的模拟实现5 priority_queue(优先级队列)介绍6 priority_queue 模拟实现7 仿函数8 deque的简单介绍8.1 deque与vector list的比较8.2 为什么选择deque作为stack和queue的底层默认容器1 stack的介绍 ①stack是一种容…

Springboot校园食堂外卖点餐系统357

目 录 1 概述 1 1.1课题背景及意义 1 1.2 国内外研究现状 1 1.3 本课题主要工作 2 2 系统开发环境 3 2.1 java简介 3 2.2 Mysql数据库 3 2.3 B/S结构 4 2.4 JSP技术介绍 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2操作…

javaEE 初阶 — Socket 套接字与 UDP 数据报套接字编程

文章目录1. Socket 套接字1.1 有连接与无连接1.2 可靠与不可靠传输1.3 面向字节流与面向数据报1.4 全双工与半双工2. UDP数据报套接字编程2.1 DatagramSocket API2.2 DatagramPacket API2.3 InetSocketAddress API3. UDP 版本的客户端服务器程序3.1 服务器实现3.2 客户端实现3.…

【JUC并发编程】Java内存模型——JMM

【JUC并发编程】Java内存模型——JMM详解 文章目录【JUC并发编程】Java内存模型——JMM详解一:并发编程模型的两个关键问题二:Java内存模型的抽象结构1:从 CPU 缓存模型说起2:JMM3:JMM与Java内存区域划分的区别与联系4…

(考研湖科大教书匠计算机网络)第三章数据链路层-第二节:封装成帧

专栏目录首页:【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一:封装成帧概述二:封装成帧作用(1)帧定界A:概述B:注意(2)透明传输A:字符填充B&…

设置Linux的信任列表

前言 我们在使用普通用户的时候,我们可以对指令提权,需要用到sudo指令,但是我们在使用的时候会报错。 原因就是,我们linux系统不信任你,必须将你放到我们的信任列表中,我们就可以使用我们的指令提权。 下图是我们在不是…

数据库系统概论②——关系数据库基础

本篇文章主要讲解关系数据库基础中的基本概念,包括关系模型概述、关系的完整性约束等等内容。 同时想要了解更多数据库系统概论知识的朋友可以看下我的上一篇文章数据库系统概论①——数据库系统基本概念 文章目录1、关系数据库的基本概念1.1 关系模型概述1.2 关系数…

【26】C语言_数据存储

目录 数据类型的意义 大小端介绍 例题1:设计一个小程序输出存储方式: 例题2:下列程序输出什么,为什么 例题3:下列程序输出什么,为什么 例题4:下列程序输出什么,为什么 例题6&a…

函数知识点总结

函数知识点总结 函数知识点总结 一、平面直角坐标系中点的坐标 1. 各象限内2. 坐标轴上3. 各象限角平分线上4. 与坐标轴平行的直线上的点5. 点到坐标轴及原点的距离6. 平面上两点距离 一、平面直角坐标系中点的坐标 1. 各象限内 象限x,yx,\,yx,y 的关系第一象限x>0,y&…