📺 B站视频讲解(Bilibili):https://www.bilibili.com/video/BV1k1C9BYEAB/
📘 《Yocto项目实战教程》京东购买链接:Yocto项目实战教程
Jetson YOLO:从概念到实战的完整讲解
一、引言:为什么 YOLO 特别适合 Jetson?
YOLO(You Only Look Once)作为当下最流行的目标检测网络之一,以 实时性强、速度快、结构简洁 为核心优势。在 Jetson 系列平台(Nano、Xavier NX、Orin Nano、Orin NX、AGX Orin)上,YOLO 是最常见、最普适的 AI 部署模型之一,广泛应用于:
- 自动驾驶 / 行人检测
- 工业视觉、瑕疵检测
- 安防摄像头智能识别
- 智能机器人导航
- 智能边缘设备、边缘监控摄像头
Jetson 的 GPU(基于 NVIDIA CUDA 架构)、DLA(深度学习加速器)和 TensorRT 推理引擎,使其具备极高的边缘侧推理能力。和其他 ARM SoC 相比,Jetson 最大的优势就是 硬件与软件兼容性极佳,AI 推理可以直接利用 CUDA、TensorRT 的所有能力,而不用做额外的硬件适配。
YOLO 天然偏向 GPU 加速,因此与 Jetson 的结合,成为“小体积 + 边缘算力 + 实时性”的最佳解决方案之一。

二、YOLO 在 Jetson 上的核心执行链路
要在 Jetson 上理解 YOLO 的部署,必须掌握从模型 → TensorRT → 推理 → 输出的完整链路。YOLO 在 Jetson 上运行时,实际会经历以下步骤:
训练模型(PyTorch)
↓
导出 ONNX(推理框架通用格式)
↓
使用 TensorRT 进行优化(FP32 → FP16 → INT8)
↓
部署至 Jetson(用 C++ 或 Python 推理)
↓
采集图像(USB 摄像头 / MIPI CSI 摄像头 / RTSP)
↓
GPU 推理(YOLO)
↓
后处理(NMS、绘制 bbox)
↓
实时显示或返回坐标
可以看出,Jetson 最关键的价值体现在:
1. TensorRT 加速 YOLO 推理
TensorRT 能将普通 YOLO 模型优化为 GPU 极致加速版本:
- FP16 模式通常能提升 30% ~ 50% 推理性能
- INT8 模式最高可节省 一倍显存并提升近 2 倍速度
2. 统一的软件框架
- PyTorch → ONNX → TensorRT 链路无缝工作
- CUDA/CUDNN 加速卷积计算
- JetPack SDK 内置加速库
这些让 Jetson 成为本地部署 YOLO 的理想硬件平台。
三、YOLO 系列模型对比(适用于 Jetson)
YOLO 家族已经很庞大,这里从 Jetson 实际部署角度总结最适合的 YOLO 版本。
| YOLO 版本 | Jetson 最佳匹配度 | 特点 | 是否推荐 |
|---|---|---|---|
| YOLOv3/v4 | 中 | 稳定、速度快、结构经典 | 可以,但不再是 mainstream |
| YOLOv5 | ★★★★★ | PyTorch 友好、训练简单、benchmark 广泛 | 强烈推荐 |
| YOLOv7 | ★★★★★ | 推理速度快、精度高 | 推理优先推荐 |
| YOLOv8 | ★★★★★ | Ultralytics 统一框架、推理易用 | 最推荐的训练方案 |
| YOLO-NAS | ★★★ | 精度更高、体积较大 | 需要强 GPU |
| YOLOv10/YOLO-World/RT-DETR | ★★★ | 需要算力高的 Orin | 可选 |
最佳选择:
- Jetson Nano → YOLOv5n / YOLOv8n
- Xavier NX → YOLOv5s / YOLOv8s
- Orin Nano → YOLOv8s / YOLOv8m
- AGX Orin → 任意 YOLO 系列皆可
四、YOLO 模型的基本结构(Jetson 友好版讲解)
YOLO 本质是一个端到端的 单阶段目标检测网络(Single-stage Detector)。在 Jetson 上,它的计算流程如下:
1. Backbone
提取特征,如:
- CSPDarknet(YOLOv5)
- EfficientRep(YOLOv8)
用途:将图片转化为可识别的高级特征。
2. Neck
- FPN(特征金字塔)
- PAN(自顶向下 + 自底向上特征融合)
作用:融合多尺度特征,使模型同时能检测大物体、小物体。
3. Head
输出最终目标框和类别,例如:
- Decoupled Head(分类与位置回归分离)
Jetson 的 GPU 对卷积非常友好,因此整个 YOLO 计算过程可以较好地映射到 CUDA 上进行加速。
五、Jetson 上部署 YOLO 的三种主要方式
在 Jetson 上运行 YOLO 有多种方式,这里按实际应用进行总结。
方式一:直接使用 PyTorch 推理(开发阶段)
适用于:
- 训练测试
- 模型验证
- Debug
示例(YOLOv8):
from ultralytics import YOLO
model = YOLO("yolov8s.pt")
results = model("test.jpg")
results.show()
优点:
- 快速验证
- 开发容易
缺点:
- PyTorch 推理速度慢
- 无法用于真实部署
- 占用显存大
方式二:ONNX 推理(中间阶段)
将模型导出 ONNX:
yolo export model=yolov8s.pt format=onnx
在 Jetson 上运行:
import onnxruntime as ort
sess = ort.InferenceSession("yolov8s.onnx")
优点:
- 兼容性强
- 可移植
缺点:
- 推理速度不如 TensorRT
方式三:TensorRT 推理(最终部署)
这是 Jetson 上 YOLO 最稳定、最快速 的方式。
流程:
- 将 ONNX 转换为 TensorRT engine:
trtexec --onnx=yolov8s.onnx --saveEngine=yolov8s.engine --fp16
- 使用 TensorRT 推理(Python/C++)
Python 版本:
import tensorrt as trt
# 加载 engine、构建执行上下文、分配 GPU 缓冲区
# 执行推理
优点:
- 速度最快(提升 1.5~3 倍)
- 支持 FP16 / INT8
- 占用显存更低
缺点:
- 开发略复杂
- 需要转换模型
实际部署中,90% Jetson 项目使用 TensorRT 推理 YOLO。
六、Jetson YOLO 实战:从摄像头 → 推理 → 显示
下面进入实战部分,以 YOLOv8 + TensorRT + USB 摄像头 为例,实现一个可以在 Jetson 上实时检测的完整系统。
1. 获取摄像头输入(USB / CSI)
Jetson 常见视频接口:
| 接口 | 说明 | 推荐用途 |
|---|---|---|
| USB 摄像头 | UVC 通用标准 | 快速测试、低成本部署 |
| CSI 摄像头(IMX219/IMX477) | 高性能、低延迟 | 工业摄像头、机器人 |
| RTSP | 网络流 | 安防摄像头 |
读取 USB 摄像头(OpenCV):
import cv2
cap = cv2.VideoCapture(0)
2. 加载 YOLO TensorRT 模型
示例代码结构如下:
engine_file = "yolov8s.engine"
# 加载 engine 构建 runtime
# 创建上下文 context
# 准备输入/输出缓冲区
3. 推理流程(核心步骤)
YOLO 推理包括四步:
① 图像预处理
- resize → 640×640
- BGR→RGB
- normalize
- 转为 float16 / float32
- 拷贝至 GPU 内存
② 执行推理(GPU)
context.execute_v2(buffers)
TensorRT 会完成所有卷积、矩阵运算。
③ 后处理(NMS)
YOLO 输出通常包含:
- x, y, w, h
- confidence
- class
Jetson 可以使用 GPU 加速 NMS。
④ 绘制结果
OpenCV 绘制:
cv2.rectangle(img, ...)
cv2.putText(img, ...)
4. 实时展示效果
cv2.imshow("YOLO", img)
Achieve FPS(不同设备基准):
| 模型 | Jetson Nano | Xavier NX | Orin Nano | AGX Orin |
|---|---|---|---|---|
| YOLOv5n | 8 FPS | 20 FPS | 45 FPS | 120 FPS |
| YOLOv8s | 4 FPS | 12 FPS | 35 FPS | 100 FPS |
| YOLOv8m | X | 6 FPS | 18 FPS | 70 FPS |
七、Jetson YOLO 实战:最完整项目结构示例
下面给出一个真实、可直接用于工程开发的目录结构:
jetson-yolo-project/
│
├── models/
│ └── yolov8s.engine
│
├── src/
│ ├── main.py
│ ├── camera.py
│ ├── trt_yolo.py
│ └── utils.py
│
├── scripts/
│ └── build_engine.sh
│
├── data/
│ └── images
│
└── README.md
这是一个真实的 Jetson YOLO 工程结构,包含转换脚本、推理代码、摄像头、后处理等内容。
八、TensorRT YOLO 优化技巧
要在 Jetson 上达到更高推理速度,必须掌握以下优化技巧。
1. FP16 优化(默认推荐)
trtexec --onnx=model.onnx --fp16 --saveEngine=model.engine
速度更快,精度损失极小。
2. INT8 量化(速度提升最大)
trtexec --onnx=model.onnx --int8 --saveEngine=model.engine --calib=calib.cache
注意:
- 需要校准数据集
- 精度可能略有下降
3. 动态输入尺寸
如果需要处理多种分辨率:
--minShapes=input:1x3x320x320 \
--optShapes=input:1x3x640x640 \
--maxShapes=input:1x3x1280x1280
4. NMS 移到 GPU 上
使用 TensorRT plugin 可以显著加速后处理。
5. 使用 DLA(仅 Xavier/Orin)
DLA 可以分担 GPU 压力:
--useDLACore=0
适用于低功耗设备。
九、Jetson YOLO 实战中的常见问题排查
问题 1:推理速度太慢
解决方法:
- 使用 TensorRT,而不是 PyTorch
- 模型换成 YOLOv5n / YOLOv8n
- 打开 FP16
- 关闭图像显示窗口
- 使用 GStreamer 加速视频输入
问题 2:CUDA out of memory
解决方法:
- 减少 batch size
- 使用 n/s 量级模型(如 YOLOv8n)
- 使用 swap(不推荐)
问题 3:USB 摄像头延迟大
解决方法:
- 使用 GStreamer 管道
- 降低分辨率
- 使用 CSI 摄像头
问题 4:TensorRT 转换失败
常见原因:
- ONNX opset 不兼容
- YOLO 自定义插件未启用
- 模型输入尺寸不统一
十、Jetson YOLO 完整实战案例
本章给出一个真正可运行的 YOLO 实战案例,包括:
- 摄像头读取
- GPU 推理
- 绘制结果
- 实时显示
# main.py
import cv2
from trt_yolo import TensorRTYOLO
model = TensorRTYOLO("models/yolov8s.engine")
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
if not ret:
break
dets = model.detect(frame)
for det in dets:
x1, y1, x2, y2, conf, cls = det
cv2.rectangle(frame, (x1,y1), (x2,y2), (0,255,0), 2)
cv2.imshow("YOLO", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
这个代码可在 Jetson Orin/Xavier 上稳定运行几十 FPS。
十一、YOLO + Jetson 的工程级应用场景
YOLO 在 Jetson 上能支撑非常多的商业级用途:
1. 工业视觉检测
- 缺陷检测
- 表面划痕识别
- 小型零件检测
2. 安防监控
- 人脸检测
- 物体遗留检测
- 禁止区域报警
3. 机器人导航
- 行人检测
- 目标跟踪
4. 智能边缘摄像头
- Jetson + YOLO → 智能监控摄像机
- 本地离线推理 → 隐私更安全
5. 自动驾驶原型车
- 车道线辅助
- 行人/车辆识别
Jetson 始终是“嵌入式 + AI 推理”最平衡的方案。YOLO 则是它最重要的 AI 任务之一。
十二、总结:为什么 YOLO + Jetson 是最佳组合?
结论:YOLO 是 Jetson 上最成熟、最稳定、最高效的目标检测方案。
其根本原因在于:
- YOLO 拥有极强的实时性
- Jetson 的 GPU/CUDA/TensorRT 完美加速 YOLO
- 部署链路完善(PyTorch → ONNX → TensorRT)
- Jetson 平台生态丰富(GStreamer、DeepStream、VPI 等)
- 硬件适合长期运行(热设计、稳定性、功耗)
YOLO 的定位是 实际工程落地的标准目标检测模型,Jetson 则是 边缘 AI 推理的事实标准平台。两者结合,构成了今天绝大多数边缘视觉 AI 设备的基础。
结语
这篇文章从基础理论 → 实战部署 → TensorRT 优化 → 工程案例 → 问题排查,完整讲解了 YOLO 在 Jetson 上的工作方式。内容结构紧凑、实用性强,可以作为你在 Jetson 上部署目标检测模型的完整指南。
📺 B站视频讲解(Bilibili):https://www.bilibili.com/video/BV1k1C9BYEAB/
📘 《Yocto项目实战教程》京东购买链接:Yocto项目实战教程
255

被折叠的 条评论
为什么被折叠?



