快速入门指南:NVIDIA Jetson 与Ultralytics YOLO11
本综合指南提供了在NVIDIA Jetson 设备上部署 Ultralytics YOLO11 的详细步骤。此外,它还展示了性能基准,以证明YOLO11 在这些小巧而功能强大的设备上的性能。
观看: 如何用NVIDIA Jetson 设置Ultralytics YOLO11
备注
本指南已在基于NVIDIA Jetson Orin NX 16GB 的Seeed Studio reComputer J4012和基于NVIDIA Jetson Nano 4GB 的Seeed Studio reComputer J1020 v2上进行了测试,前者运行最新稳定版 JetPackJP6.0、JetPackJP5.1.3,后者运行 JetPackJP4.6.1。预计它将适用于所有NVIDIA Jetson 硬件产品线,包括最新产品和传统产品。
NVIDIA Jetson 是什么?
NVIDIA Jetson 是一系列嵌入式计算板,旨在为边缘设备带来加速 AI(人工智能)计算。这些小巧且功能强大的设备围绕NVIDIA 的GPU 架构构建,能够直接在设备上运行复杂的人工智能算法和深度学习模型,而无需依赖云计算资源。Jetson 板通常用于机器人、自动驾驶汽车、工业自动化和其他需要在本地以低延迟和高效率执行人工智能推理的应用。此外,这些板卡基于 ARM64 架构,与传统的GPU 计算设备相比,运行功耗更低。
NVIDIA Jetson 系列比较
Jetson Orin是NVIDIA Jetson 系列的最新迭代产品,基于NVIDIA Ampere 架构,与前几代产品相比,人工智能性能大幅提升。下表比较了生态系统中的几款 Jetson 设备。
Jetson AGX Orin 64GB | Jetson Orin NX 16GB | Jetson Orin Nano 8GB | Jetson AGX Xavier | Jetson Xavier NX | Jetson Nano | |
---|---|---|---|---|---|---|
人工智能性能 | 275 TOPS | 100 TOPS | 40 TOPs | 32 TOPS | 21 TOPS | 472 GFLOPS |
GPU | 2048 核NVIDIA 安培架构GPU 配备 64 个Tensor 核 | 1024 核NVIDIA 安培架构GPU 带 32Tensor 核 | 1024 核NVIDIA 安培架构GPU 带 32Tensor 核 | 512 核NVIDIA Volta 架构GPU 配备 64Tensor 核 | 384 核NVIDIA Volta™ 架构GPU 配备 48 个Tensor 核 | 128 核NVIDIA Maxwell™ 架构GPU |
GPU 最大频率 | 1.3 千兆赫 | 918 兆赫 | 625 兆赫 | 1377 兆赫 | 1100 兆赫 | 921MHz |
CPU | 12 核NVIDIA Arm® Cortex A78AE v8.2 64 位CPU 3MB L2 + 6MB L3 | 8 核NVIDIA Arm® Cortex A78AE v8.2 64 位CPU 2MB L2 + 4MB L3 | 6 核 Arm® Cortex®-A78AE v8.2 64 位CPU 1.5MB L2 + 4MB L3 | 8 核NVIDIA Carmel Arm®v8.2 64 位CPU 8MB L2 + 4MB L3 | 6 核NVIDIA Carmel Arm®v8.2 64 位CPU 6MB L2 + 4MB L3 | 四核 Arm® Cortex®-A57 MPCore 处理器 |
CPU 最大频率 | 2.2 千兆赫 | 2.0 千兆赫 | 1.5 千兆赫 | 2.2 千兆赫 | 1.9 千兆赫 | 1.43GHz |
内存 | 64GB 256 位 LPDDR5 204.8GB/s | 16GB 128 位 LPDDR5 102.4GB/s | 8GB 128 位 LPDDR5 68 GB/s | 32GB 256 位 LPDDR4x 136.5GB/s | 8GB 128 位 LPDDR4x 59.7GB/s | 4GB 64 位 LPDDR4 25.6GB/s" |
如需更详细的比较表,请访问 NVIDIA Jetson 官方网页的技术规格部分。
NVIDIA JetPack 是什么?
NVIDIA 支持 Jetson 模块的 JetPack SDK是最全面的解决方案,为构建端到端加速人工智能应用提供了完整的开发环境,缩短了产品上市时间。JetPack 包括带有引导加载器的 Jetson Linux、Linux 内核、Ubuntu 桌面环境以及一整套用于加速GPU 计算、多媒体、图形和计算机视觉的库。它还包括用于主机和开发人员工具包的示例、文档和开发人员工具,并支持更高级别的 SDK,如用于流媒体视频分析的 DeepStream、用于机器人技术的 Isaac 和用于对话式人工智能的 Riva。
Flash JetPack 至NVIDIA Jetson
拿到NVIDIA Jetson 设备后,第一步是将NVIDIA JetPack 闪存到设备上。闪存NVIDIA Jetson 设备有几种不同的方法。
- 如果您拥有NVIDIA 官方开发套件(如 Jetson Orin Nano Developer Kit),您可以下载镜像,并用 JetPack 准备 SD 卡以启动设备。
- 如果您拥有其他NVIDIA 开发工具包,可以使用 SDK 管理器将 JetPack 闪存到设备上。
- 如果你拥有Seeed Studio reComputer J4012设备,你可以将JetPack闪存到附带的固态硬盘上;如果你拥有Seeed Studio reComputer J1020 v2设备,你可以将JetPack闪存到eMMC/固态硬盘上。
- 如果您拥有由NVIDIA Jetson 模块驱动的任何其他第三方设备,建议使用命令行闪存。
备注
对于上述方法 3 和 4,在刷新系统并启动设备后,请在设备终端输入 "sudo apt update && sudo apt installnvidia-jetpack -y",以安装所需的所有剩余 JetPack 组件。
基于 Jetson 设备的 JetPack 支持
下表重点介绍了不同NVIDIA Jetson 设备支持的NVIDIA JetPack 版本。
JetPack 4 | JetPack 5 | JetPack 6 | |
---|---|---|---|
Jetson Nano | ✅ | ❌ | ❌ |
捷信 TX2 | ✅ | ❌ | ❌ |
Jetson Xavier NX | ✅ | ✅ | ❌ |
Jetson AGX Xavier | ✅ | ✅ | ❌ |
Jetson AGX Orin | ❌ | ✅ | ✅ |
Jetson Orin NX | ❌ | ✅ | ✅ |
Jetson Orin Nano | ❌ | ✅ | ✅ |
Docker 快速入门
在NVIDIA Jetson 上开始使用Ultralytics YOLO11 的最快方法是使用为 Jetson 预制的 docker 镜像。请参考上表,根据你拥有的 Jetson 设备选择 JetPack 版本。
完成此操作后,跳至 NVIDIA Jetson 上的使用TensorRT 部分。
从本地安装开始
如需在不使用 Docker 的情况下进行本地安装,请参考以下步骤。
在 JetPack 6.x 上运行
安装Ultralytics 软件包
在此,我们将在 Jetson 上安装Ultralytics 软件包及可选依赖项,以便导出 PyTorch模型导出为其他不同格式。我们将主要关注NVIDIA TensorRT 导出,因为TensorRT 将确保我们能最大限度地发挥 Jetson 设备的性能。
-
更新软件包列表,安装 pip 并升级到最新版本
-
安装
ultralytics
pip 软件包与可选依赖项 -
重启设备
安装PyTorch 和 Torchvision
上述ultralytics 安装程序将安装Torch 和 Torchvision。但是,通过 pip 安装的这两个软件包无法兼容在基于 ARM64 架构的 Jetson 平台上运行。因此,我们需要手动安装预编译的PyTorch pip wheel,并从源代码编译/安装 Torchvision。
安装 torch 2.3.0
和 torchvision 0.18
根据 JP6.0
sudo apt-get install libopenmpi-dev libopenblas-base libomp-dev -y
pip install https://github.com/ultralytics/assets/releases/download/v0.0.0/torch-2.3.0-cp310-cp310-linux_aarch64.whl
pip install https://github.com/ultralytics/assets/releases/download/v0.0.0/torchvision-0.18.0a0+6043bc2-cp310-cp310-linux_aarch64.whl
请访问PyTorch for Jetson 页面,访问针对不同 JetPack 版本的所有不同版本的PyTorch 。有关PyTorch和 Torchvision 兼容性的更详细列表,请访问PyTorch 和 Torchvision 兼容性页面。
安装 onnxruntime-gpu
"(《世界人权宣言》) onnxruntime-gpu 在 PyPI 中托管的软件包没有 aarch64
二进制文件。因此,我们需要手动安装这个软件包。有些输出需要这个软件包。
所有不同 onnxruntime-gpu
列出了不同 JetPack 和Python 版本对应的软件包 这里.不过,在这里我们将下载并安装 onnxruntime-gpu 1.18.0
与 Python3.10
支持。
wget https://nvidia.box.com/shared/static/48dtuob7meiw6ebgfsfqakc9vse62sg4.whl -O onnxruntime_gpu-1.18.0-cp310-cp310-linux_aarch64.whl
pip install onnxruntime_gpu-1.18.0-cp310-cp310-linux_aarch64.whl
备注
onnxruntime-gpu
会自动将 numpy 恢复到最新版本。因此,我们需要重新安装 numpy 到 1.23.5
通过执行
pip install numpy==1.23.5
在 JetPack 5.x 上运行
安装Ultralytics 软件包
在此,我们将在 Jetson 上安装Ultralytics 软件包和可选依赖项,以便将PyTorch 模型导出为其他不同格式。我们将主要关注NVIDIA TensorRT 导出,因为TensorRT 将确保我们能最大限度地发挥 Jetson 设备的性能。
-
更新软件包列表,安装 pip 并升级到最新版本
-
安装
ultralytics
pip 软件包与可选依赖项 -
重启设备
安装PyTorch 和 Torchvision
上述ultralytics 安装程序将安装Torch 和 Torchvision。但是,通过 pip 安装的这两个软件包无法兼容在基于 ARM64 架构的 Jetson 平台上运行。因此,我们需要手动安装预编译的PyTorch pip wheel,并从源代码编译/安装 Torchvision。
-
卸载当前安装的PyTorch 和 Torchvision
-
根据 JP5.1.3 安装PyTorch 2.1.0
sudo apt-get install -y libopenblas-base libopenmpi-dev wget https://developer.download.nvidia.com/compute/redist/jp/v512/pytorch/torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl -O torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl pip install torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl
-
根据PyTorch v2.1.0 安装 Torchvision v0.16.2
请访问PyTorch for Jetson 页面,访问针对不同 JetPack 版本的所有不同版本的PyTorch 。有关PyTorch和 Torchvision 兼容性的更详细列表,请访问PyTorch 和 Torchvision 兼容性页面。
安装 onnxruntime-gpu
"(《世界人权宣言》) onnxruntime-gpu 在 PyPI 中托管的软件包没有 aarch64
二进制文件。因此,我们需要手动安装这个软件包。有些输出需要这个软件包。
所有不同 onnxruntime-gpu
列出了不同 JetPack 和Python 版本对应的软件包 这里.不过,在这里我们将下载并安装 onnxruntime-gpu 1.17.0
与 Python3.8
支持。
wget https://nvidia.box.com/shared/static/zostg6agm00fb6t5uisw51qi6kpcuwzd.whl -O onnxruntime_gpu-1.17.0-cp38-cp38-linux_aarch64.whl
pip install onnxruntime_gpu-1.17.0-cp38-cp38-linux_aarch64.whl
备注
onnxruntime-gpu
会自动将 numpy 恢复到最新版本。因此,我们需要重新安装 numpy 到 1.23.5
通过执行
pip install numpy==1.23.5
在NVIDIA Jetson 上使用TensorRT
在Ultralytics 支持的所有模型导出格式中,TensorRT 在使用NVIDIA Jetson 设备时推理性能最佳,我们建议在使用 Jetson 时使用TensorRT 。我们还在此处提供了有关TensorRT 的详细文档。
将模型转换为TensorRT 并运行推理
PyTorch 格式的 YOLO11n 模型被转换为TensorRT ,以便使用导出的模型进行推理。
示例
from ultralytics import YOLO
# Load a YOLO11n PyTorch model
model = YOLO("yolo11n.pt")
# Export the model to TensorRT
model.export(format="engine") # creates 'yolo11n.engine'
# Load the exported TensorRT model
trt_model = YOLO("yolo11n.engine")
# Run inference
results = trt_model("https://ultralytics.com/images/bus.jpg")
备注
访问导出页面,获取将模型导出为不同模型格式时的其他参数
使用NVIDIA 深度学习加速器 (DLA)
NVIDIA 深度学习加速器(DLA)是一种内置在NVIDIA Jetson 设备中的专用硬件组件,可优化深度学习推理的能效和性能。通过卸载GPU 的任务(将其释放给更密集的进程),DLA 可使模型以更低的功耗运行,同时保持高吞吐量,是嵌入式系统和实时人工智能应用的理想选择。
以下 Jetson 设备配备了 DLA 硬件:
- Jetson Orin NX 16GB
- Jetson AGX Orin 系列
- Jetson AGX Xavier 系列
- Jetson Xavier NX 系列
示例
from ultralytics import YOLO
# Load a YOLO11n PyTorch model
model = YOLO("yolo11n.pt")
# Export the model to TensorRT with DLA enabled (only works with FP16 or INT8)
model.export(format="engine", device="dla:0", half=True) # dla:0 or dla:1 corresponds to the DLA cores
# Load the exported TensorRT model
trt_model = YOLO("yolo11n.engine")
# Run inference
results = trt_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to TensorRT format with DLA enabled (only works with FP16 or INT8)
yolo export model=yolo11n.pt format=engine device="dla:0" half=True # dla:0 or dla:1 corresponds to the DLA cores
# Run inference with the exported model on the DLA
yolo predict model=yolo11n.engine source='https://ultralytics.com/images/bus.jpg'
备注
在使用 DLA 导出时,某些层可能不支持在 DLA 上运行,而会回退到GPU 上执行。这种回退会带来额外的延迟,影响整体推理性能。因此,与完全在GPU 上运行的TensorRT 相比,DLA 的主要目的不是减少推理延迟,而是提高吞吐量和能效。
NVIDIA Jetson OrinYOLO11 基准测试
YOLO11 Ultralytics 团队在 10 种不同的模型格式上运行了基准测试,测量速度和精度: , , , , , , , Lite, , 。基准测试在搭载 Jetson Orin NX 16GB 设备的 Seeed Studio reComputer J4012 上运行,PyTorch TorchScript ONNX OpenVINO TensorRT TF SavedModel TF GraphDef TF PaddlePaddle NCNN精度为 FP32,默认输入图像大小为 640。
对比图表
尽管所有导出模型都使用NVIDIA Jetson,但我们只将PyTorch, TorchScript, TensorRT 列入下面的比较图中,因为它们使用了 Jetson 上的 GPU ,并保证产生最佳效果。其他所有导出都只使用CPU ,性能不如上述三个。你可以在本图表后的部分找到所有输出的基准。
详细对照表
下表列出了五种不同模型(YOLO11n、YOLO11s、YOLO11m、YOLO11l、YOLO11x)在十种不同格式(PyTorch,TorchScript,ONNX,OpenVINO,TensorRT,TF SavedModel ,TF GraphDef ,TF Lite,PaddlePaddle,NCNN )下的基准结果,给出了每种组合的状态、大小、mAP50-95(B) 指标和推理时间。
性能
格式 | 现状 | 磁盘大小(MB) | mAP50-95(B) | 推理时间(毫秒/分钟) |
---|---|---|---|---|
PyTorch | ✅ | 5.4 | 0.6176 | 19.80 |
TorchScript | ✅ | 10.5 | 0.6100 | 13.30 |
ONNX | ✅ | 10.2 | 0.6082 | 67.92 |
OpenVINO | ✅ | 10.4 | 0.6082 | 118.21 |
TensorRT (FP32) | ✅ | 14.1 | 0.6100 | 7.94 |
TensorRT (FP16) | ✅ | 8.3 | 0.6082 | 4.80 |
TensorRT (INT8) | ✅ | 6.6 | 0.3256 | 4.17 |
TF SavedModel | ✅ | 25.8 | 0.6082 | 185.88 |
TF GraphDef | ✅ | 10.3 | 0.6082 | 256.66 |
TF 轻型 | ✅ | 10.3 | 0.6082 | 284.64 |
PaddlePaddle | ✅ | 20.4 | 0.6082 | 477.41 |
NCNN | ✅ | 10.2 | 0.6106 | 32.18 |
格式 | 现状 | 磁盘大小(MB) | mAP50-95(B) | 推理时间(毫秒/分钟) |
---|---|---|---|---|
PyTorch | ✅ | 18.4 | 0.7526 | 20.20 |
TorchScript | ✅ | 36.5 | 0.7416 | 23.42 |
ONNX | ✅ | 36.3 | 0.7416 | 162.01 |
OpenVINO | ✅ | 36.4 | 0.7416 | 159.61 |
TensorRT (FP32) | ✅ | 40.3 | 0.7416 | 13.93 |
TensorRT (FP16) | ✅ | 21.7 | 0.7416 | 7.47 |
TensorRT (INT8) | ✅ | 13.6 | 0.3179 | 5.66 |
TF SavedModel | ✅ | 91.1 | 0.7416 | 316.46 |
TF GraphDef | ✅ | 36.4 | 0.7416 | 506.71 |
TF 轻型 | ✅ | 36.4 | 0.7416 | 842.97 |
PaddlePaddle | ✅ | 72.5 | 0.7416 | 1172.57 |
NCNN | ✅ | 36.2 | 0.7419 | 66.00 |
格式 | 现状 | 磁盘大小(MB) | mAP50-95(B) | 推理时间(毫秒/分钟) |
---|---|---|---|---|
PyTorch | ✅ | 38.8 | 0.7595 | 36.70 |
TorchScript | ✅ | 77.3 | 0.7643 | 50.95 |
ONNX | ✅ | 76.9 | 0.7643 | 416.34 |
OpenVINO | ✅ | 77.1 | 0.7643 | 370.99 |
TensorRT (FP32) | ✅ | 81.5 | 0.7640 | 30.49 |
TensorRT (FP16) | ✅ | 42.2 | 0.7658 | 14.93 |
TensorRT (INT8) | ✅ | 24.3 | 0.4118 | 10.32 |
TF SavedModel | ✅ | 192.7 | 0.7643 | 597.08 |
TF GraphDef | ✅ | 77.0 | 0.7643 | 1016.12 |
TF 轻型 | ✅ | 77.0 | 0.7643 | 2494.60 |
PaddlePaddle | ✅ | 153.8 | 0.7643 | 3218.99 |
NCNN | ✅ | 76.8 | 0.7691 | 192.77 |
格式 | 现状 | 磁盘大小(MB) | mAP50-95(B) | 推理时间(毫秒/分钟) |
---|---|---|---|---|
PyTorch | ✅ | 49.0 | 0.7475 | 47.6 |
TorchScript | ✅ | 97.6 | 0.7250 | 66.36 |
ONNX | ✅ | 97.0 | 0.7250 | 532.58 |
OpenVINO | ✅ | 97.3 | 0.7250 | 477.55 |
TensorRT (FP32) | ✅ | 101.6 | 0.7250 | 38.71 |
TensorRT (FP16) | ✅ | 52.6 | 0.7265 | 19.35 |
TensorRT (INT8) | ✅ | 31.6 | 0.3856 | 13.50 |
TF SavedModel | ✅ | 243.3 | 0.7250 | 895.24 |
TF GraphDef | ✅ | 97.2 | 0.7250 | 1301.19 |
TF 轻型 | ✅ | 97.2 | 0.7250 | 3202.93 |
PaddlePaddle | ✅ | 193.9 | 0.7250 | 4206.98 |
NCNN | ✅ | 96.9 | 0.7252 | 225.75 |
格式 | 现状 | 磁盘大小(MB) | mAP50-95(B) | 推理时间(毫秒/分钟) |
---|---|---|---|---|
PyTorch | ✅ | 109.3 | 0.8288 | 85.60 |
TorchScript | ✅ | 218.1 | 0.8308 | 121.67 |
ONNX | ✅ | 217.5 | 0.8308 | 1073.14 |
OpenVINO | ✅ | 217.8 | 0.8308 | 955.60 |
TensorRT (FP32) | ✅ | 221.6 | 0.8307 | 75.84 |
TensorRT (FP16) | ✅ | 113.1 | 0.8295 | 35.75 |
TensorRT (INT8) | ✅ | 62.2 | 0.4783 | 22.23 |
TF SavedModel | ✅ | 545.0 | 0.8308 | 1497.40 |
TF GraphDef | ✅ | 217.8 | 0.8308 | 2552.42 |
TF 轻型 | ✅ | 217.8 | 0.8308 | 7044.58 |
PaddlePaddle | ✅ | 434.9 | 0.8308 | 8386.73 |
NCNN | ✅ | 217.3 | 0.8304 | 486.36 |
探索 Seeed Studio在不同版本的NVIDIA Jetson 硬件上运行的更多基准测试工作。
复制我们的结果
要在所有导出格式上重现上述Ultralytics 基准,请运行此代码:
示例
请注意,基准测试结果可能会因系统的具体硬件和软件配置以及运行基准测试时系统的当前工作量而有所不同。为了获得最可靠的结果,请使用包含大量图像的数据集,即 data='coco8.yaml' (4 val images), or
data='coco.yaml'` (5000 val images)。
使用NVIDIA Jetson 时的最佳做法
在使用NVIDIA Jetson 时,有几个最佳实践需要遵循,以便在运行YOLO11 的NVIDIA Jetson 上实现最高性能。
-
启用 MAX 功率模式
在 Jetson 上启用 MAX Power Mode(最大功率模式)将确保打开所有CPU 、GPU 内核。
-
启用 Jetson 时钟
启用 Jetson Clocks 将确保所有CPU,GPU 内核都以最大频率运行。
-
安装 Jetson Stats 应用程序
我们可以使用 jetson stats 应用程序监控系统组件的温度,并检查其他系统细节,如查看CPU,GPU, 内存利用率、更改电源模式、设置为最大时钟、检查 JetPack 信息等。
下一步工作
恭喜您在NVIDIA Jetson 上成功设置YOLO11 !如需进一步学习和支持,请访问Ultralytics YOLO11 Docs 获取更多指南!
常见问题
如何在NVIDIA Jetson 设备上部署Ultralytics YOLO11 ?
在NVIDIA Jetson 设备上部署Ultralytics YOLO11 的过程非常简单。首先,使用NVIDIA JetPack SDK 闪存 Jetson 设备。然后,使用预置的 Docker 镜像进行快速设置,或者手动安装所需的软件包。每种方法的详细步骤可在 "使用 Docker 快速入门 "和 "开始本地安装"两节中找到。
YOLO11 型号在NVIDIA Jetson 设备上的性能基准是什么?
YOLO11 模型在各种NVIDIA Jetson 设备上进行了基准测试,显示性能有了显著提高。例如,TensorRT 格式的推理性能最佳。详细对比表部分的表格全面展示了不同模型格式的 mAP50-95 和推理时间等性能指标。
为什么要使用TensorRT 在NVIDIA Jetson 上部署YOLO11 ?
TensorRT 由于其最佳性能,强烈推荐在NVIDIA Jetson 上部署YOLO11 模型。它利用 Jetson 的GPU 功能加速推理,确保最高效率和速度。有关如何转换为TensorRT 并在 NVIDIA Jetson 上使用TensorRT 部分运行推理的更多信息,请参阅。
如何在NVIDIA Jetson 上安装PyTorch 和 Torchvision?
要在NVIDIA Jetson 上安装PyTorch 和 Torchvision,首先要卸载可能已通过 pip 安装的任何现有版本。然后,针对 Jetson 的 ARM64 架构手动安装兼容的PyTorch 和 Torchvision 版本。安装PyTorch 和 Torchvision部分提供了此过程的详细说明。
在NVIDIA Jetson 上使用YOLO11 时,最大限度提高性能的最佳做法是什么?
要在NVIDIA Jetson 上最大限度地提高性能,YOLO11 ,请遵循以下最佳实践:
- 启用 MAX Power 模式,以利用所有CPU 和GPU 内核。
- 启用 Jetson Clocks,以最大频率运行所有内核。
- 安装用于监控系统指标的 Jetson Stats 应用程序。
有关命令和其他详细信息,请参阅使用NVIDIA Jetson时的最佳实践部分。