使用 DeepStream SDK 与 TensorRT 在 NVIDIA Jetson 上部署 Ultralytics YOLO26【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics本文面向需要在 NVIDIA Jetson 嵌入式平台Jetson Orin 系列、Jetson Nano 等上构建实时视频分析IVA管线的开发者系统讲解如何结合 NVIDIA DeepStream SDK 与 TensorRT 完成 Ultralytics YOLO26 的模型转换、引擎编译、FP32/FP16/INT8 精度推理、多路视频流接入与性能基准测试。阅读并实操本文后你将能够从零搭建一套基于 GStreamer 的 YOLO26 端到端推理应用并根据 Jetson 硬件内存与算力特点选择合适的精度与部署配置。本文内容经过 NVIDIA Jetson Orin Nano Super Developer KitJetPack 6.1、Seeed Studio reComputer J4012基于 Jetson Orin NX 16GBJetPack 5.1.3以及 Seeed Studio reComputer J1020 v2基于 Jetson Nano 4GBJetPack 4.6.4实测验证并预期可覆盖 NVIDIA Jetson 全系新旧硬件。核心思路是先通过 TensorRT 集成把 YOLO26 的推理性能在 Jetson 上压榨到极致再借助 DeepStream 的流处理框架接入多传感器、多路视频流。若你尚未完成 Jetson 基础环境搭建请先阅读仓库内的 Jetson 快速上手指南。什么是 NVIDIA DeepStreamNVIDIA DeepStream SDK 是一套基于 GStreamer 的完整流式分析工具包专为 AI 驱动的多传感器处理、视频、音频与图像理解而设计是构建 IVAIntelligent Video Analytics智能视频分析应用与服务的理想选择适合视觉 AI 开发者、软件合作伙伴、初创公司与 OEM 厂商。借助 DeepStream你可以搭建将神经网络以及跟踪、视频编解码、视频渲染等复杂处理任务整合在一起的流式处理管线从而对视频、图像与传感器数据进行实时分析。其多平台支持能力让开发者可以在本地、边缘与云端以更快、更简单的方式开发视觉 AI 应用与服务。在 Jetson 平台上DeepStream 通常配合 TensorRT 使用——TensortRT 优化后的引擎.engine既能被 DeepStream 的推理组件如nvinfer/primary GIE直接加载又能让模型充分发挥 Jetson GPU 的算力。!!! note 本指南使用 Debian 包方式将 DeepStream SDK 安装到 Jetson 设备上。若要获取旧版 DeepStream也可访问 NVIDIA 的 DeepStream on Jetson存档下载页。前置条件动手前需要依次完成两项准备完成 Jetson 上的 Ultralytics 环境搭建请参考仓库内的 Quick Start Guide: NVIDIA Jetson with Ultralytics YOLO26。其中会讲解如何在对应 JetPack 上安装 Ultralytics 包、ARM64 架构的 PyTorch/Torchvision 以及onnxruntime-gpuPyPI 上没有 Jetson 的 aarch64 二进制需要按 JetPack 版本手动安装并完成 TensorRT 导出与推理验证。按 JetPack 版本安装匹配的 DeepStream SDK版本对应关系如下JetPack 版本推荐 DeepStream 版本JetPack 4.6.4DeepStream 6.0.1JetPack 5.1.3DeepStream 6.3JetPack 6.1DeepStream 7.1JetPack 7.1DeepStream 9.0!!! tip 各 DeepStream 与 JetPack 的精确配对以 NVIDIA 官方安装说明为准安装完成后可以在终端执行deepstream-app --version验证 DeepStream 是否就绪。DeepStream 配置与 YOLO26 模型接入与直接用 Ultralytics Python 包导出 TensorRT 引擎 不同DeepStream 部署需要先把 YOLO26 的.pt权重导出为 ONNX再由 DeepStream 的nvdsinfer自定义解析插件custom parser完成边界框解析。此处使用社区仓库 marcoslucianops/DeepStream-Yolo它为 YOLO 系列模型提供了 DeepStream SDK 支持其中包含本指南所需的export_yolo26.py导出脚本。1. 安装 Ultralytics 及导出依赖cd ~ pip install -U pip git clone https://github.com/ultralytics/ultralytics cd ultralytics pip install -e . onnx onnxslimonnx与onnxslim分别用于 ONNX 图生成与图简化从 ultralytics/cfg/default.yaml 的默认配置可以看到simplify: True默认开启意味着 ONNX 导出阶段就会尝试用onnxslim简化中间图。2. 克隆 DeepStream-Yolo 仓库cd ~ git clone https://github.com/marcoslucianops/DeepStream-Yolo3. 拷贝 YOLO26 专用导出脚本cp ~/DeepStream-Yolo/utils/export_yolo26.py ~/ultralytics cd ultralytics4. 下载检测模型权重在 ultralytics 仓库目录下执行wget https://github.com/ultralytics/assets/releases/download/v8.4.0/yolo26s.pt这里以yolo26s.pt为例80 个 COCO 类别。也可以换用其他官方 YOLO26 检测权重或使用你通过 Train 模式 训练得到的自定义 YOLO26 模型。!!! note 自定义模型请务必保证训练时的类别数量与后续config_infer_primary_yolo26.txt中的num-detected-classes一致。5. 导出 ONNX 模型python3 export_yolo26.py -w yolo26s.pt该脚本会生成对应的.onnx模型与类别标签文件labels.txt。不同 DeepStream / TensorRT 版本对导出参数有不同要求可向上述命令追加以下参数参数含义适用前提--opset 12指定 ONNX opset 版本DeepStream 5.1 必须使用 12 或更低默认 opset 为 17-s SIZE/--size SIZE正方形输入尺寸如-s 1280改变推理分辨率默认 640-s HEIGHT WIDTH/--size HEIGHT WIDTH非正方形输入尺寸如-s 1280 1280指定高宽--simplify简化 ONNX 图DeepStream 6.0--dynamic启用动态 batchDeepStream 6.1--batch 4静态 batch 大小示例为 batch46. 拷贝 ONNX 与标签文件到 DeepStream-Yolo 目录cp yolo26s.onnx labels.txt ~/DeepStream-Yolo cd ~/DeepStream-Yolo7. 设置 CUDA 版本环境变量自定义 GIE 插件nvdsinfer_custom_impl_Yolo编译时需要用到 CUDA 头文件因此必须把CUDA_VER设置为与当前 JetPack 中 CUDA 一致的版本JetPackCUDA_VERJetPack 4.6.4export CUDA_VER10.2JetPack 5.1.3export CUDA_VER11.4JetPack 6.1export CUDA_VER12.68. 编译自定义解析库make -C nvdsinfer_custom_impl_Yolo clean make -C nvdsinfer_custom_impl_Yolo该库负责把 DeepStream 推理引擎输出的原始张量解析为检测框即parse-bbox-func-name指向的NvDsInferParseYolo函数实现所在。9. 编辑推理配置文件根据模型实际情况YOLO26s 80 类修改config_infer_primary_yolo26.txt[property] ... onnx-fileyolo26s.onnx ... num-detected-classes80 ... parse-bbox-func-nameNvDsInferParseYolo ...YOLO26 精度关键设置与多数 YOLO 版本不同YOLO26 在预处理时采用居中填充center padding保持纵横比并且默认是端到端、无 NMS的推理路径——这一点与 YOLO26 架构中默认的一对一one-to-one检测头设计一致见 ultralytics/cfg/models/26/yolo26.yaml 中end2end: True的配置。为了让输入处理与推理输出保持一致并取得最佳精度请在[property]段添加[property] ... maintain-aspect-ratio1 symmetric-padding1 cluster-mode4 ...各参数作用如下maintain-aspect-ratio1输入缩放保持原始纵横比避免图像被拉伸变形symmetric-padding1在两侧对称填充模拟 YOLO26 的 letterbox 居中预处理cluster-mode4以聚类方式对同一目标重叠的候选框进行合并替代传统 NMS符合 YOLO26 端到端输出的解码需求。10. 编辑 DeepStream 应用配置在deepstream_app_config.txt中把主推理组件指向上述模型配置... [primary-gie] ... config-fileconfig_infer_primary_yolo26.txt11. 可选修改视频源默认加载 DeepStream 自带的示例视频... [source0] ... urifile:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4也可以替换为 RTSP 摄像头地址或本地其他视频文件。运行推理deepstream-app -c deepstream_app_config.txt!!! note 首次运行需要较长的时间构建 TensorRT 引擎文件model_b1_gpu0_fp32.engine随后才开始推理请耐心等待。引擎只会构建一次后续启动会直接复用缓存的.engine文件。切换 FP16 精度如果希望把模型转换为 FP16 精度推理只需在config_infer_primary_yolo26.txt内设置[property] model-engine-filemodel_b1_gpu0_fp16.engine network-mode2其中network-mode是 DeepStream 推理引擎的精度模式开关0 对应 FP321 对应 INT82 对应 FP16。FP16 相比 FP32 通常能获得约 2 倍的推理加速非常适合实时场景。INT8 量化校准INT8 可以把模型体积与推理延迟进一步压缩。注意INT8 目前不兼容 TensorRT 10.x本节内容基于 TensorRT 8.x 验证在切换到新版 TensorRT 的 JetPack如 6.1 对应的 DeepStream 7.1时请确认底层 TensorRT 版本后再启用。校准步骤开启 OPENCV 支持校准图像读取依赖 OpenCVexport OPENCV1重新编译自定义解析库make -C nvdsinfer_custom_impl_Yolo clean make -C nvdsinfer_custom_impl_Yolo准备校准数据集下载 COCO 数据集val2017解压并移动到DeepStream-Yolo文件夹。新建校准图片目录mkdir calibration随机抽取 1000 张校准图片for jpg in $(ls -1 val2017/*.jpg | sort -R | head -1000); do cp ${jpg} calibration/ done!!! note NVIDIA 建议至少使用 500 张代表性图片以保证校准精度。示例抽取 1000 张图片越多精度通常越高但校准耗时也越长。修改head -1000中的数值即可调整数量例如 2000 张则改为head -2000。生成校准图片清单realpath calibration/*jpg calibration.txt设置校准环境变量export INT8_CALIB_IMG_PATHcalibration.txt export INT8_CALIB_BATCH_SIZE1!!! note 提高INT8_CALIB_BATCH_SIZE通常能获得更高精度并加快校准速度请依据设备 GPU 显存大小调整。切换配置文件到 INT8 模式把config_infer_primary_yolo26.txt从 FP32 配置... model-engine-filemodel_b1_gpu0_fp32.engine #int8-calib-filecalib.table ... network-mode0 ...改为 INT8 配置... model-engine-filemodel_b1_gpu0_int8.engine int8-calib-filecalib.table ... network-mode1 ...当network-mode1INT8且int8-calib-file指定的校准表calib.table尚不存在时DeepStream 会在首次启动时用INT8_CALIB_IMG_PATH指向的图片执行校准并生成该表之后再次启动会直接复用。运行 INT8 推理构建 INT8 引擎并启动推理的命令与之前一致deepstream-app -c deepstream_app_config.txt首轮会先完成 INT8 校准与引擎构建耗时明显长于普通启动属正常现象。多路视频流配置DeepStream 的核心优势之一就是在单个应用进程内承载多路输入流。以 4 路视频为例只需修改deepstream_app_config.txt设置平铺显示的网格行列数[tiled-display] rows2 columns2为每路流添加独立的[sourceN]组各自指定uri与num-sources1[source0] enable1 type3 urifile:///path/to/video1.mp4 num-sources1 [source1] enable1 type3 urifile:///path/to/video2.mp4 num-sources1 [source2] enable1 type3 urifile:///path/to/video3.mp4 num-sources1 [source3] enable1 type3 urifile:///path/to/video4.mp4 num-sources1网格行列数应与流数量匹配如 4 路用 2×26 路可用 3×2 或 2×39 路可用 3×3。type3表示文件/网络 URI 流媒体源接入 RTSP 摄像头时把uri换成rtsp://...即可。运行多路推理deepstream-app -c deepstream_app_config.txt所有视频流会在 tiled-display 平铺窗口中同时解码、推理并渲染。需要注意的是多路并发时显存与编解码器资源占用会随路数线性增长Jetson Orin NX 等带硬件 NVDEC 的模块可以显著分担 CPU 解码压力。Benchmark 基准结果以下基准汇总了 YOLO11 系列模型在NVIDIA Jetson Orin NX 16GB、输入尺寸 640×640下、不同 TensorRT 精度FP32/FP16/INT8的单图推理耗时。YOLO26 与 YOLO11 采用完全相同的 DeepStream 导出与推理流程因此可作为 DeepStream 部署 YOLO26 的性能参考。完整的基准测试方法论见 Benchmark 模式。模型TensorRT (FP32)TensorRT (FP16)TensorRT (INT8)YOLO11n8.64 ms/im5.27 ms/im4.54 ms/imYOLO11s14.53 ms/im7.91 ms/im6.05 ms/imYOLO11m32.05 ms/im15.55 ms/im10.43 ms/imYOLO11l39.68 ms/im19.88 ms/im13.64 ms/imYOLO11x80.65 ms/im39.06 ms/im22.83 ms/im以上所有格式在 DeepStream 下均验证通过状态 ✅。以 YOLO11s 为例将精度从 FP32 降到 INT8 后单图推理耗时从 14.53 ms 降至 6.05 ms对应约 68.8 FPS → 165 FPS 的吞吐提升在 Jetson 这种功耗与算力受限的平台上收益非常明显。从数据中还可以总结出几条通用规律FP16 是性价比最高的默认选择相对 FP32 通常能带来近乎翻倍的加速且几乎不损失精度也不需要像 INT8 那样准备校准数据集INT8 进一步压缩延迟与模型体积适合对延迟极度敏感且能接受小幅精度下降的应用但需要额外完成校准流程且受 TensorRT 版本约束模型越大量化收益越显著YOLO11x 从 FP32 的 80.65 ms 降至 INT8 的 22.83 ms加速比接近 3.5 倍。精度选择建议与常见问题FP32 / FP16 / INT8 如何取舍追求最高精度、不在意延迟使用默认 FP32实时视频分析的主流选择FP16设置network-mode2即可改动最小极致吞吐与低功耗、显存吃紧INT8但必须做校准且需使用 TensorRT 8.x。YOLO26 在 Jetson 上部署时为什么必须用 TensorRT从 TensorRT 集成指南 可以看到TensorRT 通过层融合layer fusion、精度校准INT8/FP16、动态张量内存管理、kernel 自动调优四大手段显著降低推理延迟并提升吞吐。在 Jetson 这类嵌入式设备上TensorRT 引擎是 GPU 利用率最高的部署格式。在 Jetson 的完整安装与配置流程包括 ARM64 PyTorch、onnxruntime-gpu 的安装与各 JetPack 版本差异请参考 Jetson 快速上手指南。跨 Jetson 硬件兼容性本指南的方法覆盖整个 Jetson 产品线。引擎文件与目标设备强相关——TensorRT 会根据构建时所在 GPU 架构对引擎进行调优跨架构复制的.engine文件并不可靠。建议始终在目标部署设备本机上完成引擎的首次构建与缓存。如何把自定义数据集训练的 YOLO26 接入 DeepStream自定义模型训练见 Train 模式文档。导出 ONNX 后把config_infer_primary_yolo26.txt中的onnx-file指向你的模型、num-detected-classes改为自定义类别数并确保labels.txt与你的类别名一一对应。若使用非 640 输入尺寸可用-s参数在导出阶段指定。总结本文完整覆盖了在 NVIDIA Jetson 上通过 DeepStream SDK TensorRT 部署 Ultralytics YOLO26 的全部关键链路环境就绪按 JetPack 版本安装匹配的 DeepStream并完成 Ultralytics 基础环境配置模型接入通过export_yolo26.py把 YOLO26 导出为 ONNX编译自定义解析库并针对 YOLO26 的居中填充与端到端输出特性配置maintain-aspect-ratio、symmetric-padding、cluster-mode等精度关键参数精度深化从默认 FP32到一行配置切 FP16再到完整的 INT8 校准流程COCO 图片抽样、校准表生成、network-mode1切换多路并发通过[tiled-display]网格与多个[sourceN]组把单一 DeepStream 应用扩展为多摄像头实时分析服务性能评估参考 Orin NX 16GB 上 YOLO11 系列在三种精度下的实测基准YOLO26 共用同一流程可作为选型依据。在此基础上你还可以结合仓库内 Jetson 上手指南 中的 Jetson 硬件对比、JetPack 支持矩阵、DLA 加速器使用以及内存优化技巧进一步针对具体设备做性能与内存的调优。若需要了解 ONNX、TensorRT 等其他导出格式的通用参数与 INT8 量化细节可继续阅读 Export 模式 与 TensorRT 集成指南。【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考