在 NVIDIA Jetson 上使用 DeepStream SDK 和 TensorRT 运行 Ultralytics YOLO26#
Watch: How to use Ultralytics YOLO26 models with NVIDIA Deepstream on Jetson Orin NX 🚀
这份综合指南详细介绍了如何使用 DeepStream SDK 和 TensorRT 在 NVIDIA Jetson 设备上部署 Ultralytics YOLO26。这里我们使用 TensorRT 来最大化 Jetson 平台上的推理性能。
本指南介绍了 DeepStream configuration for YOLO26、INT8 calibration、multi-stream setup 以及 benchmark results。

本指南已在运行最新稳定版 JetPack JP6.1 的 NVIDIA Jetson Orin Nano Super Developer Kit、基于 NVIDIA Jetson Orin NX 16GB 且运行 JetPack JP5.1.3 的 Seeed Studio reComputer J4012 以及基于 NVIDIA Jetson Nano 4GB 且运行 JetPack JP4.6.4 的 Seeed Studio reComputer J1020 v2 上进行了测试。预计它适用于包括最新和旧版在内的所有 NVIDIA Jetson 硬件系列。
什么是 NVIDIA DeepStream?#
NVIDIA's DeepStream SDK 是一个基于 GStreamer 的完整流式分析工具包,用于基于 AI 的多传感器处理、视频、音频和图像理解。它是构建 IVA(智能视频分析)应用程序和服务的视觉 AI 开发者、软件合作伙伴、初创公司和 OEM 的理想选择。你现在可以创建包含神经网络以及诸如跟踪、视频编码/解码和视频渲染等其他复杂处理任务的流处理管道。这些管道能够对视频、图像和传感器数据进行实时分析。DeepStream 的多平台支持为你提供了一种在本地、边缘和云端更快、更轻松地开发视觉 AI 应用程序和服务的方法。
前提条件#
在开始学习本指南之前:
- 访问我们的文档Quick Start Guide: NVIDIA Jetson with Ultralytics YOLO26,以在你的 NVIDIA Jetson 设备上设置 Ultralytics YOLO26
- 根据 JetPack 版本安装 DeepStream SDK
- 对于 JetPack 4.6.4,安装 DeepStream 6.0.1
- 对于 JetPack 5.1.3,安装 DeepStream 6.3
- 对于 JetPack 6.1,安装 DeepStream 7.1
- 对于 JetPack 7.1,安装 DeepStream 9.0
在本指南中,我们使用了将 DeepStream SDK 安装到 Jetson 设备的 Debian 软件包方法。你还可以访问 DeepStream SDK on Jetson (Archived) 来访问旧版本的 DeepStream。
YOLO26 的 DeepStream 配置#
这里我们使用的是包含对 YOLO 模型 NVIDIA DeepStream SDK 支持的 marcoslucianops/DeepStream-Yolo GitHub 仓库。感谢 marcoslucianops 的贡献!
-
安装 Ultralytics 及其必要的依赖项
cd ~ pip install -U pip git clone https://github.com/ultralytics/ultralytics cd ultralytics pip install -e ".[export]" onnxslim -
克隆 DeepStream-Yolo 仓库
cd ~ git clone https://github.com/marcoslucianops/DeepStream-Yolo -
将
export_yolo26.py文件从DeepStream-Yolo/utils目录复制到ultralytics文件夹cp ~/DeepStream-Yolo/utils/export_yolo26.py ~/ultralytics cd ultralytics -
从 YOLO26 project 下载你选择的 Ultralytics YOLO26 检测模型 (.pt)。这里我们使用 yolo26s.pt。
wget https://github.com/ultralytics/assets/releases/download/v8.4.0/yolo26s.pt
你也可以使用自定义训练的 YOLO26 模型。
-
将模型转换为 ONNX
python3 export_yolo26.py -w yolo26s.pt
对于 DeepStream 5.1,请删除 --dynamic 参数并使用 opset 12 或更低版本。默认的 opset 是 17。
--opset 12要更改推理尺寸(默认:640)
-s SIZE
--size SIZE
-s HEIGHT WIDTH
--size HEIGHT WIDTH1280 的示例:
-s 1280
or
-s 1280 1280简化 ONNX 模型(适用于 DeepStream >= 6.0)
--simplify使用动态批处理大小(适用于 DeepStream >= 6.1)
--dynamic使用静态批处理大小(以批处理大小 = 4 为例)
--batch 4-
将生成的
.onnx模型文件和labels.txt文件复制到DeepStream-Yolo文件夹cp yolo26s.onnx labels.txt ~/DeepStream-Yolo cd ~/DeepStream-Yolo -
根据已安装的 JetPack 版本设置 CUDA 版本
对于 JetPack 4.6.4:
export CUDA_VER=10.2对于 JetPack 5.1.3:
export CUDA_VER=11.4对于 JetPack 6.1:
export CUDA_VER=12.6 -
编译库
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo -
根据你的模型编辑
config_infer_primary_yolo26.txt文件(对于具有 80 个类别的 YOLO26s)[property] ... onnx-file=yolo26s.onnx ... num-detected-classes=80 ... parse-bbox-func-name=NvDsInferParseYolo ...
YOLO26 使用居中填充对输入进行大小调整,并在没有 NMS 的情况下运行。为了获得最佳 accuracy,请将以下内容添加到 config_infer_primary_yolo26.txt 的 [property] 部分:
[property]
...
maintain-aspect-ratio=1
symmetric-padding=1
cluster-mode=4
...-
编辑
deepstream_app_config文件... [primary-gie] ... config-file=config_infer_primary_yolo26.txt -
你还可以更改
deepstream_app_config文件中的视频源。在此处加载默认视频文件... [source0] ... uri=file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4
运行推理#
deepstream-app -c deepstream_app_config.txt在开始推理之前,生成 TensorRT 引擎文件需要较长时间,请耐心等待。

如果你想将模型转换为 FP16 精度,只需在 config_infer_primary_yolo26.txt 内部设置 model-engine-file=model_b1_gpu0_fp16.engine 和 network-mode=2
INT8 校准#
如果你想使用 INT8 精度进行推理,需要遵循以下步骤:
目前 INT8 无法在 TensorRT 10.x 上工作。本节指南已在 TensorRT 8.x 上进行了测试,预计可以正常工作。
-
设置
OPENCV环境变量export OPENCV=1 -
编译库
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo -
对于 COCO 数据集,下载 val2017,解压并移动到
DeepStream-Yolo文件夹 -
为校准图像创建一个新目录
mkdir calibration -
运行以下命令从 COCO 数据集中随机选择 1000 张图像进行校准
for jpg in $(ls -1 val2017/*.jpg | sort -R | head -1000); do cp ${jpg} calibration/ done
NVIDIA 建议至少准备 500 张图像以获得良好的准确率。在本示例中,选择了 1000 张图像以获得更好的准确率(图像越多 = 准确率越高)。你可以通过 head -1000 进行设置。例如,对于 2000 张图像,使用 head -2000。此过程可能需要很长时间。
-
使用所有选定的图像创建
calibration.txt文件realpath calibration/*jpg > calibration.txt -
设置环境变量
export INT8_CALIB_IMG_PATH=calibration.txt export INT8_CALIB_BATCH_SIZE=1
较高的 INT8_CALIB_BATCH_SIZE 值将带来更高的精度和更快的校准速度。请根据你的 GPU 内存进行设置。
-
更新
config_infer_primary_yolo26.txt文件从
... model-engine-file=model_b1_gpu0_fp32.engine #int8-calib-file=calib.table ... network-mode=0 ...到
... model-engine-file=model_b1_gpu0_int8.engine int8-calib-file=calib.table ... network-mode=1 ...
运行 INT8 推理#
运行相同的命令来构建 INT8 引擎并开始推理:
deepstream-app -c deepstream_app_config.txt多流设置#
Watch: How to Run Multi-Stream Inference with Ultralytics YOLO26 using NVIDIA DeepStream on Jetson Orin 🚀
要在单个 DeepStream 应用程序下设置多个流,请对 deepstream_app_config.txt 文件进行以下更改:
-
更改行数和列数以根据你想要的流数量构建网格显示。例如,对于 4 个流,我们可以添加 2 行和 2 列。
[tiled-display] rows=2 columns=2 -
为每个流添加一个单独的
[sourceN]组,每个组都有自己的uri和num-sources=1。[source0] enable=1 type=3 uri=file:///path/to/video1.mp4 num-sources=1 [source1] enable=1 type=3 uri=file:///path/to/video2.mp4 num-sources=1 [source2] enable=1 type=3 uri=file:///path/to/video3.mp4 num-sources=1 [source3] enable=1 type=3 uri=file:///path/to/video4.mp4 num-sources=1
运行多路流推理#
运行相同的命令以在平铺显示器中启动所有流:
deepstream-app -c deepstream_app_config.txt
基准测试结果#
以下基准测试总结了 YOLO11 模型在 NVIDIA Jetson Orin NX 16GB 上以 640x640 输入尺寸在不同 TensorRT 精度水平下的性能。YOLO26 使用上面描述的相同 DeepStream 导出和推理工作流。
对比图#

详细对比表#
| 格式 | 状态 | 推理时间 (ms/im) |
|---|---|---|
| TensorRT (FP32) | ✅ | 8.64 |
| TensorRT (FP16) | ✅ | 5.27 |
| TensorRT (INT8) | ✅ | 4.54 |
致谢#
本指南最初由 Seeed Studio 的朋友 Lakshantha 和 Elaine 创建。
常见问题解答#
我该如何在 NVIDIA Jetson 设备上设置 Ultralytics YOLO26?#
要在NVIDIA Jetson 设备上设置 Ultralytics YOLO26,你需要首先安装与你的 JetPack 版本兼容的 DeepStream SDK。按照我们的快速入门指南中的逐步指南配置你的 NVIDIA Jetson 以进行 YOLO26 部署。
在 NVIDIA Jetson 上将 TensorRT 与 YOLO26 一起使用有什么好处?#
将 TensorRT 与 YOLO26 配合使用可针对推理优化模型,显著降低 NVIDIA Jetson 设备上的延迟并提高吞吐量。TensorRT 通过层融合、精度校准和内核自动调优提供高性能、低延迟的深度学习推理。这带来更快、更高效的执行,对视频分析和自主机器等实时应用程序特别有用。
我可以跨不同的 NVIDIA Jetson 硬件运行带有 DeepStream SDK 的 Ultralytics YOLO26 吗?#
是的,使用 DeepStream SDK 和 TensorRT 部署 Ultralytics YOLO26 的指南在整个 NVIDIA Jetson 系列中都是兼容的。这包括诸如带有 JetPack 5.1.3 的 Jetson Orin NX 16GB 和带有 JetPack 4.6.4 的 Jetson Nano 4GB 等设备。有关详细步骤,请参阅针对 YOLO26 的 DeepStream 配置部分。
我该如何将 YOLO26 模型转换为 ONNX 以供 DeepStream 使用?#
要将 YOLO26 模型转换为 ONNX 格式以便与 DeepStream 一起部署,请使用 DeepStream-Yolo 仓库中的 utils/export_yolo26.py 脚本。
以下是一个命令示例:
python3 utils/export_yolo26.py -w yolo26s.pt --opset 12 --simplify有关模型转换的更多详细信息,请查看我们的模型导出部分。
如何在 DeepStream 上使用 YOLO26 运行 INT8 推理?#
要运行 INT8 推理,请在具有代表性的图像集上对模型进行校准,并将 DeepStream 配置切换为 INT8 模式。下载 COCO val2017 图像,选择大约 1000 张校准图像,设置 INT8_CALIB_IMG_PATH 和 INT8_CALIB_BATCH_SIZE 环境变量,然后用 model-engine-file=model_b1_gpu0_int8.engine、int8-calib-file=calib.table 和 network-mode=1 更新 config_infer_primary_yolo26.txt。有关完整步骤,请参阅INT8 Calibration部分。INT8 目前需要 TensorRT 8.x。
如何在 Jetson 上使用 DeepStream 运行多摄像头流?#
要在单个 DeepStream 应用程序中处理多个流,请编辑 deepstream_app_config.txt 文件以添加平铺显示网格并列出每个源 URI。在 [tiled-display] 下设置 rows 和 columns 来构建网格,为每个流添加一个带有其专属 uri 和 num-sources=1 的独立 [sourceN] 组,并调整网格以适应流的数量。有关完整示例,请参阅MultiStream Setup部分。
NVIDIA Jetson Orin NX 上的 YOLO 性能基准测试结果如何?#
YOLO11 模型在 NVIDIA Jetson Orin NX 16GB 上的性能会根据 TensorRT 精度级别而有所不同。例如,YOLO11s 模型可达到:
- FP32 精度:14.53 毫秒/图像,68.8 FPS
- FP16 精度:7.91 毫秒/图像,126 FPS
- INT8 精度:6.05 毫秒/图像,165 FPS
这些基准测试凸显了在 NVIDIA Jetson 硬件上使用 TensorRT 优化的 YOLO11 模型的效率和能力。有关更多详细信息,请参阅我们的基准测试结果部分。