【Deepstream学习】TX1 跑demo

        大家好,我是虎哥,使用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

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

以上就是我今天要分享的内容。纠错,疑问,交流: [email protected]

猜你喜欢

转载自blog.csdn.net/cau_weiyuhu/article/details/128771990