使用DeepStream SDK和TensorRT在NVIDIA Jetson上部署Ultralytics YOLO11
观看: 如何在Jetson Nano上使用DeepStream SDK运行多个流,使用Ultralytics YOLO11
本综合指南提供了详细的步骤,指导您如何使用DeepStream SDK和TensorRT在NVIDIA Jetson设备上部署Ultralytics YOLO11。在这里,我们使用TensorRT来最大化Jetson平台上的推理性能。
Note
本指南已在Seeed Studio reComputer J4012(基于NVIDIA Jetson Orin NX 16GB,运行JetPack版本JP5.1.3)和Seeed Studio reComputer J1020 v2(基于NVIDIA Jetson Nano 4GB,运行JetPack版本JP4.6.4)上进行了测试。预计在所有NVIDIA Jetson硬件系列中,包括最新和旧版,都能正常工作。
什么是NVIDIA DeepStream?
NVIDIA的DeepStream SDK 是一个基于GStreamer的完整流分析工具包,用于基于AI的多传感器处理、视频、音频和图像理解。它非常适合视觉AI开发者、软件合作伙伴、初创公司和OEM厂商构建IVA(智能视频分析)应用和服务。您现在可以创建包含神经网络和其他复杂处理任务(如跟踪、视频编码/解码和视频渲染)的流处理管道。这些管道能够在视频、图像和传感器数据上实现实时分析。DeepStream的多平台支持为您提供了更快、更简便的方式,在本地、边缘和云端开发视觉AI应用和服务。
前提条件
在开始遵循本指南之前:
- 访问我们的文档,快速入门指南:使用Ultralytics YOLO11的NVIDIA Jetson,以设置您的NVIDIA Jetson设备
-
根据JetPack版本安装DeepStream SDK
- 对于JetPack 4.6.4,安装DeepStream 6.0.1
- 对于JetPack 5.1.3,安装DeepStream 6.3
Tip
在本指南中,我们使用了将DeepStream SDK安装到Jetson设备的Debian包方法。您还可以访问DeepStream SDK on Jetson (Archived)以访问旧版本的DeepStream。
为YOLO11配置DeepStream
在这里,我们使用marcoslucianops/DeepStream-Yolo GitHub仓库,该仓库包含了对YOLO模型的NVIDIA DeepStream SDK支持。我们感谢marcoslucianops的贡献!
-
安装依赖项
-
克隆以下仓库
-
从YOLO11发布下载您选择的Ultralytics YOLO11检测模型(.pt)。这里我们使用yolov8s.pt。
Note
您也可以使用自定义训练的YOLO11模型。
-
将模型转换为ONNX
更改推理尺寸(默认:640)
```bash -s SIZE --size SIZE -s HEIGHT WIDTH --size HEIGHT WIDTH ``` 1280 示例: ```bash -s 1280 或 -s 1280 1280 ``` 简化 ONNX 模型(DeepStream >= 6.0) ```bash --simplify ``` 使用动态批量大小(DeepStream >= 6.1) ```bash --dynamic ``` 使用静态批量大小(例如批量大小 = 4) ```bash --batch 4 ```
-
根据安装的 JetPack 版本设置 CUDA 版本
对于 JetPack 4.6.4:
对于 JetPack 5.1.3:
-
编译库
-
根据您的模型编辑
config_infer_primary_yoloV8.txt
文件(适用于具有 80 个类别的 YOLOv8s) -
编辑
deepstream_app_config
文件 -
您还可以在
deepstream_app_config
文件中更改视频源。这里加载了一个默认的视频文件
运行推理
注意
在开始推理之前,生成 TensorRT 引擎文件需要很长时间。所以请耐心等待。
![YOLO11 with deepstream](https://github.com/ultralytics/docs/releases/download/0/yolov8-with-deepstream.avif)
提示
如果您想将模型转换为 FP16 精度,只需在 config_infer_primary_yoloV8.txt
中设置 model-engine-file=model_b1_gpu0_fp16.engine
和 network-mode=2
INT8 校准
如果您想使用 INT8 精度进行推理,您需要按照以下步骤操作
-
设置
OPENCV
环境变量 -
编译库
-
对于 COCO 数据集,下载 val2017,解压并移动到
DeepStream-Yolo
文件夹 -
为校准图像创建一个新目录
-
运行以下命令从 COCO 数据集中选择 1000 张随机图像进行校准
注意
NVIDIA 建议至少使用 500 张图像以获得良好的 准确性。在此示例中,选择了 1000 张图像以获得更好的准确性(更多图像 = 更高准确性)。您可以从 head -1000 设置。例如,对于 2000 张图像,head -2000。此过程可能需要很长时间。
-
创建包含所有选定图像的
calibration.txt
文件 -
设置环境变量
注意
更高的 INT8_CALIB_BATCH_SIZE 值将导致更高的准确性和更快的校准速度。根据您的 GPU 内存设置。
-
更新
config_infer_primary_yoloV8.txt
文件从
到
运行推理
多流设置
要在单个 deepstream 应用程序下设置多个流,您可以对 deepstream_app_config.txt
文件进行以下更改
-
根据您想要的流数量更改行和列以构建网格显示。例如,对于 4 个流,我们可以添加 2 行和 2 列。
-
设置
num-sources=4
并添加所有 4 个流的uri
运行推理
![Multistream setup](https://github.com/ultralytics/docs/releases/download/0/multistream-setup.avif)
基准测试结果
以下表格总结了在NVIDIA Jetson Orin NX 16GB上,输入尺寸为640x640时,YOLOv8s模型在不同TensorRT精度级别下的表现。
模型名称 | 精度 | 推理时间(毫秒/图像) | FPS |
---|---|---|---|
YOLOv8s | FP32 | 15.63 | 64 |
FP16 | 7.94 | 126 | |
INT8 | 5.53 | 181 |
致谢
本指南最初由Seeed Studio的Lakshantha和Elaine创建。
常见问题
如何在NVIDIA Jetson设备上设置Ultralytics YOLO11?
要在NVIDIA Jetson设备上设置Ultralytics YOLO11,首先需要安装与您的JetPack版本兼容的DeepStream SDK。请按照我们的快速入门指南中的逐步指南,为YOLO11部署配置您的NVIDIA Jetson。
在NVIDIA Jetson上使用TensorRT与YOLO11有什么好处?
在NVIDIA Jetson上使用TensorRT与YOLO11优化了模型的推理性能,显著减少了延迟并提高了吞吐量。TensorRT通过层融合、精度校准和内核自动调优,提供了高性能、低延迟的深度学习推理。这导致了更快和更高效的执行,特别适用于视频分析和自主机器等实时应用。
我可以在不同的NVIDIA Jetson硬件上使用DeepStream SDK运行Ultralytics YOLO11吗?
是的,使用DeepStream SDK和TensorRT部署Ultralytics YOLO11的指南适用于整个NVIDIA Jetson系列。这包括像配备JetPack 5.1.3的Jetson Orin NX 16GB和配备JetPack 4.6.4的Jetson Nano 4GB等设备。请参阅YOLO11的DeepStream配置部分获取详细步骤。
如何将YOLO11模型转换为ONNX格式以用于DeepStream?
要将YOLO11模型转换为ONNX格式以用于DeepStream部署,请使用DeepStream-Yolo仓库中的utils/export_yoloV8.py
脚本。
以下是一个示例命令:
有关模型转换的更多详细信息,请查看我们的模型导出部分。
YOLO在NVIDIA Jetson Orin NX上的性能基准是什么?
YOLO11模型在NVIDIA Jetson Orin NX 16GB上的性能因TensorRT精度级别而异。例如,YOLOv8s模型达到:
- FP32精度:15.63毫秒/图像,64 FPS
- FP16精度:7.94毫秒/图像,126 FPS
- INT8精度:5.53毫秒/图像,181 FPS
这些基准突显了在NVIDIA Jetson硬件上使用TensorRT优化的YOLO11模型的效率和能力。有关进一步详情,请参阅我们的基准测试结果部分。