使用 DeepStream SDK 和 TensorRT 在 NVIDIA Jetson 上运行 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 平台上的推理性能。
本指南将介绍 YOLO26 的 DeepStream 配置、INT8 校准、多流设置和基准测试结果。

本指南已在运行最新稳定版 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 的 DeepStream SDK 是一套基于 GStreamer 的完整流式分析工具包,用于基于 AI 的多传感器处理,以及视频、音频和图像理解。它非常适合构建 IVA(智能视频分析)应用和服务的视觉 AI 开发者、软件合作伙伴、初创公司和 OEM。现在,你可以创建包含神经网络以及跟踪、视频编码/解码和视频渲染等复杂处理任务的流处理管道。这些管道支持对视频、图像和传感器数据进行实时分析。DeepStream 的多平台支持让你能够更快速、更轻松地在本地、边缘和云端开发视觉 AI 应用和服务。
前置条件#
开始阅读本指南前:
- 访问我们的文档 快速入门指南:使用 Ultralytics YOLO26 配置 NVIDIA Jetson,以设置你的 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
在本指南中,我们使用 Debian 软件包方式将 DeepStream SDK 安装到 Jetson 设备上。你也可以访问 Jetson 上的 DeepStream SDK(已归档)以获取旧版 DeepStream。
YOLO26 的 DeepStream 配置#
这里我们使用 marcoslucianops/DeepStream-Yolo GitHub 仓库,该仓库包含对 YOLO 模型的 NVIDIA DeepStream SDK 支持。感谢 marcoslucianops 的贡献!
-
安装 Ultralytics 及必要的依赖项
pip install ultralytics onnx onnxslim -
克隆 DeepStream-Yolo 仓库
cd ~ git clone https://github.com/marcoslucianops/DeepStream-Yolo -
从 YOLO26 项目下载你选择的 Ultralytics YOLO26 检测模型(.pt)。这里我们使用 yolo26s.pt。
wget https://github.com/ultralytics/assets/releases/download/v8.4.0/yolo26s.pt
你也可以使用自定义训练的 YOLO26 模型。
-
将模型转换为ONNX并写入DeepStream从中读取类名的
labels.txt文件from ultralytics import YOLO model = YOLO("yolo26s.pt") model.export(format="onnx", nms=False, agnostic_nms=True) # creates 'yolo26s.onnx' with open("labels.txt", "w") as f: f.write("\n".join(model.names.values()))
nms=False 导出无NMS头部,而 agnostic_nms=True 保持每个检测只有一个类别,以便DeepStream配置中的 cluster-mode=4 (无聚类)不会重复绘制边界框。添加 imgsz=1280 来更改推理尺寸(默认:640),添加 batch=4 来设置批大小为4(导出的批大小是静态的,因此它必须与DeepStream配置中的 batch-size 匹配),并添加 opset=12 以支持TensorRT 8.2或更旧版本(DeepStream 6.0.1及更早版本)。查看export arguments获取完整列表。
-
将生成的
.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对于 JetPack 7.1:
export CUDA_VER=13.0 -
编译库
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 的情况下运行。为了获得最佳精度,请将以下内容添加到 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/图像) |
|---|---|---|
| TensorRT (FP32) | ✅ | 8.64 |
| TensorRT (FP16) | ✅ | 5.27 |
| TensorRT (INT8) | ✅ | 4.54 |
致谢#
本指南最初由我们的朋友 Seeed Studio 的 Lakshantha 和 Elaine 创建。
常见问题#
要在 NVIDIA Jetson 设备上设置 Ultralytics YOLO26,你首先需要安装与你的 JetPack 版本兼容的 DeepStream SDK。请按照我们的快速入门指南中的分步说明,为 YOLO26 部署配置 NVIDIA Jetson。
将 TensorRT 与 YOLO26 配合使用可以优化模型推理,显著降低 NVIDIA Jetson 设备上的延迟并提高吞吐量。TensorRT 通过层融合、精度校准和内核自动调优,提供高性能、低延迟的深度学习推理。这能带来更快速、更高效的执行,尤其适用于视频分析和自主机器等实时应用。
可以,本指南介绍的搭配 DeepStream SDK 和 TensorRT 部署 Ultralytics YOLO26 的方法兼容整个 NVIDIA Jetson 产品线。其中包括搭配 JetPack 5.1.3 的 Jetson Orin NX 16GB,以及搭配 JetPack 4.6.4 的 Jetson Nano 4GB。详细步骤请参阅 YOLO26 的 DeepStream 配置部分。
使用Ultralytics导出器导出带有无NMS头部的模型,并写入DeepStream从中读取类名的
labels.txt文件:from ultralytics import YOLO model = YOLO("yolo26s.pt") model.export(format="onnx", nms=False, agnostic_nms=True) # creates 'yolo26s.onnx' with open("labels.txt", "w") as f: f.write("\n".join(model.names.values()))为TensorRT 8.2或更旧版本(DeepStream 6.0.1及更早版本)添加
opset=12。有关模型转换的更多详情,请查看我们的model export section。要运行 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 校准部分。目前,INT8 需要 TensorRT 8.x。要在单个 DeepStream 应用中处理多个流,请编辑
deepstream_app_config.txt文件,添加平铺显示网格并列出每个源 URI。在[tiled-display]下设置rows和columns以构建网格;为每个流添加单独的[sourceN]组,并为其配置各自的uri和num-sources=1;同时调整网格以适应流的数量。完整示例请参阅多流设置部分。YOLO11 模型在 NVIDIA Jetson Orin NX 16GB 上的性能取决于 TensorRT 精度级别。例如,YOLO11s 模型达到:
- FP32 精度:14.53 ms/im,68.8 FPS
- FP16 精度:7.91 ms/im,126 FPS
- INT8 精度:6.05 ms/im,165 FPS
这些基准测试凸显了在 NVIDIA Jetson 硬件上使用 TensorRT 优化的 YOLO11 模型的高效性和能力。更多详情请参阅我们的基准测试结果部分。