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