📺 B站视频讲解(Bilibili):https://www.bilibili.com/video/BV1k1C9BYEAB/
📘 《Yocto项目实战教程》京东购买链接:Yocto项目实战教程
Ultralytics 核心基础理论:一篇完整、通俗、逻辑清晰的深度讲解
本文面向需要深入理解 YOLO / Ultralytics 框架运行逻辑的工程师、学生与 AI 从业者,用最清晰、最系统的方式讲解 Ultralytics 的核心概念、模型结构、训练与推理逻辑,以及与当下主流 AI 工具(PyTorch、ONNX、TensorRT)之间的关系。本文内容客观、准确、结构清晰、示例合理,并使用流程图和对比方式帮助理解。

目录
- Ultralytics 到底是什么?(框架 vs 模型)
- YOLO 系列模型的基本结构
- Ultralytics 的核心组成:代码结构全图
- 模型加载的本质:结构 + 权重
- 推理流程原理(预处理 → 推理 → 后处理)
- 训练流程原理(数据加载 → 前向 → 梯度 → 更新)
- 模型格式解析:PT / ONNX / TensorRT
- 现代 AI 推理栈:PyTorch、ONNXRuntime、TensorRT 的角色
- YOLO 模型在不同框架中的流动链路
- Ultralytics 在 Jetson / GPU 上的加速机制
- 核心概念总结
1. Ultralytics 到底是什么?(框架 vs 模型)
1.1 很多人误解了“模型”和“框架”
在 AI 中,我们通常会把两个概念混为一谈:
- 模型(Model):模型文件,例如
yolo11n.pt,本质上是「训练好的参数(权重)+ 网络结构」。 - 框架(Framework):运行模型的“软件系统”,例如 PyTorch、Ultralytics、TensorRT。
它们之间对应关系如下:
| 概念 | Ultralytics | 模型文件 |
|---|---|---|
| 本质 | 程序 + 框架 | 权重数据 |
| 类型 | 代码(Python) | 二进制(数字) |
| 功能 | 加载模型、训练、推理、导出 | 不具备执行能力 |
| 能否单独运行 | ❌ 不能 | ❌ 不能 |
| 需要结合 | ✔ PyTorch/ONNX/TensorRT | ✔ Ultralytics 框架 |
所以:模型不是代码,代码不是模型。两者必须结合才能推理。
1.2 Ultralytics 是什么?
Ultralytics 是一个全套 YOLO 运行框架,包含:
- 模型构建(nn modules)
- 模型加载(engine/model.py)
- 推理系统(engine/predictor.py)
- 训练系统(engine/trainer.py)
- 模型导出(engine/exporter.py)
- 实用工具(utils/)
- 应用案例(solutions/)
一句话总结:
Ultralytics 是 YOLO 的大脑(代码),而 .pt 是 YOLO 的记忆(权重)。
2. YOLO 系列模型的基本结构
YOLO(You Only Look Once)是“单阶段检测器”,其架构主要分 3 部分:
输入 → Backbone(特征提取) → Neck(多尺度融合) → Head(预测框 + 分类)
2.1 Backbone(主干网络)
常见结构:
- CSPDarknet(YOLOv4)
- Darknet-53(YOLOv3)
- C2f / ELAN / GELAN(YOLOv5-11)
Backbone 的作用:
把原始图像转换成更高级的特征。
2.2 Neck(特征融合)
常见结构:
- FPN
- PAN
- BiFPN
- ELAN-FPN(YOLOv7)
作用:
把不同分辨率的特征图融合,让模型既看清楚“大物体”又看清楚“小物体”。
2.3 Head(预测头)
YOLO 从 YOLOv8 开始全面 Anchor-Free:
- 预测中心位置
- 预测宽高
- 预测类别
- 预测掩码(分割)
- 预测关键点(姿态估计)
总结:
YOLO 的本质是一个“端到端框架 + 权重”,Ultralytics 是运行框架。
3. Ultralytics 的核心组成:代码结构全图
Ultralytics 的目录结构如下:
ultralytics/
├── cfg # 模型/数据配置 YAML
├── data # 数据加载、数据增强
├── engine # 训练器、预测器、导出器
├── models # YOLO/RT-DETR/SAM 等模型定义
├── nn # 网络层(Conv/C2f/Head 等)
├── trackers # 跟踪器(ByteTrack/BOTSort)
├── solutions # 常见应用(停车管理、计数)
└── utils # 日志、NMS、metrics
3.1 最核心的模块
| 模块 | 作用 |
|---|---|
| models | 定义 YOLO 模型结构(图纸) |
| nn | 网络层定义(积木) |
| engine/model.py | 构造模型 / 加载权重 |
| engine/predictor.py | 推理流程 |
| engine/trainer.py | 训练流程 |
| engine/exporter.py | 导出 ONNX/TensorRT |
所以 Ultralytics 的本质是:
一套训练 + 推理的执行系统。
模型文件(pt/onnx/engine)只是“数据”。
4. 模型加载的本质:结构 + 权重
你需要清楚:模型 = 两部分组成
模型结构(网络拓扑) + 权重(训练得到的数字)
4.1 模型结构是“计算图”
例如 YOLO11 有 C2f、DFL、ELAN、PAFPN 等结构。
nn/modules/*.py
这里定义模型的每一个网络层。
4.2 权重(.pt 文件)是“记忆”
.pt 文件包含:
- 卷积核参数
- BatchNorm 参数
- Head 的回归系数
- 训练超参数(可选)
4.3 加载流程
Ultralytics 会做:
- 读取
yolo11n.pt - 重建网络结构
- 把权重数据一层一层填进去
最终模型变成:
“可用、训练好、有知识”的模型。
5. 推理流程原理(Preprocess → Inference → Postprocess)
YOLO 推理可以分为三大步骤:
输入图像
↓(预处理)
模型推理(前向计算)
↓(后处理)
输出结果(框/类别/掩码)
5.1 预处理(Preprocess)
包括:
- 图像缩放(如 640×640)
- BGR → RGB
- 除以 255
- 转成 Tensor
- 加 Batch 维度
5.2 推理(Model Forward)
本质是矩阵运算:卷积、归一化、激活、上采样、特征融合。
使用 PyTorch/ONNX/TensorRT 计算:
- PyTorch:慢
- ONNXRuntime:中等
- TensorRT:最快(Jetson 必用)
5.3 后处理(Postprocess)
- 解码(Anchor-Free)
- DFL 精细定位
- NMS(或 YOLOv10 的 NMS-Free)
输出:
- 检测框
- 关键点
- 分割掩码
- 旋转框(OBB)
6. 训练流程原理(Data → Model → Loss → Update)
训练与推理不同,它包含“优化(梯度下降)”。
训练流程:
数据加载
↓
前向传播(模型输出)
↓
损失函数(Loss)
↓
反向传播(梯度)
↓
更新权重(优化器)
6.1 数据加载器
位于:
data/loaders.py
处理:
- Mosaic
- HSV 变换
- 随机翻转
- 多尺度训练
6.2 损失函数(Loss)
包括:
- 分类损失
- 回归损失
- IoU 损失
- 掩码损失
6.3 优化器
常见:SGD、AdamW。
6.4 训练目标
让预测框更准、类别更准、掩码更准。
7. 模型格式解析:PT / ONNX / TensorRT
PyTorch (.pt) —— 训练用格式
ONNX (.onnx) —— 通用推理格式
TensorRT (.engine) —— 最快推理格式(Jetson 必用)
7.1 PT(PyTorch 格式)
- 可训练
- 可调试
- 速度较慢
7.2 ONNX(Open Neural Network Exchange)
- 跨框架
- 可送入 TensorRT
- 易于部署
7.3 TensorRT Engine(NVIDIA 加速格式)
- FP16/INT8 加速
- Jetson/RTX 上最快
- 上线部署首选
迁移链路:
.pt → .onnx → .engine
8. 现代 AI 推理栈:PyTorch、ONNXRuntime、TensorRT 的角色
8.1 PyTorch
- 适合训练
- 推理慢
- 主要用于开发
8.2 ONNXRuntime
- 推理速度中等
- 跨平台好用
- 支持 CPU / GPU / NPU
8.3 TensorRT
- NVIDIA GPU 专用加速库
- FP16 / INT8 加速
- YOLO 最终部署的最佳选择
对比图:
| 框架 | 推理速度 | 训练 | 平台 | 场景 |
|---|---|---|---|---|
| PyTorch | 慢 | ✔ | 任何平台 | 开发/训练 |
| ONNXRuntime | 中等 | ❌ | 全平台 | 工程部署 |
| TensorRT | 最快 | ❌ | NVIDIA 设备 | 量产部署 |
9. YOLO 模型在不同框架中的流动链路
这是部署工程师最必须理解的图:
训练(PyTorch) → 导出(ONNX) → 加速(TensorRT) → 部署(Jetson)
示例:
YOLO("yolo11n.pt")
↓ export
→ yolo11n.onnx
↓ build
→ yolo11n.engine
↓ deploy
→ Jetson 推理
这也是为什么:
.pt用于训练.engine用于推理
10. Ultralytics 在 Jetson / GPU 上的加速机制
10.1 使用 TensorRT
Ultralytics 内置 exporter:
model.export(format="engine")
TensorRT 加速包括:
- 层融合(Layer Fusion)
- Kernel Auto-Tuning
- FP16
- INT8 量化
- Memory Plan 优化
10.2 图像预处理加速
- CUDAResize
- GPU Normalize
- Zero-copy 输入
10.3 后处理加速
YOLOv10 支持 NMS-Free,大幅降低后处理开销。
11. 核心概念总结
| 概念 | 定义 |
|---|---|
| 模型结构 | 神经网络拓扑(Conv/C2f/DFL) |
| 模型权重 | 训练好的参数(存于 .pt/.onnx/.engine) |
| Ultralytics | YOLO 推理 + 训练框架 |
| 推理 | 前向传播 + 后处理 |
| 训练 | 前向 + 反向 + 更新 |
| PT | PyTorch 格式(训练) |
| ONNX | 通用格式(跨框架) |
| TensorRT | NVIDIA GPU 推理加速格式 |
最终图:
YOLO = 结构 + 权重
Ultralytics = 运行 YOLO 的框架
TensorRT = 加速 YOLO 的引擎
结语
本文用最系统、客观、通俗的方式解释了 Ultralytics 的核心理论、YOLO 模型本质、推理与训练流程、模型格式、现代 AI 推理栈结构,以及模型从训练到部署的完整链路。
📺 B站视频讲解(Bilibili):https://www.bilibili.com/video/BV1k1C9BYEAB/
📘 《Yocto项目实战教程》京东购买链接:Yocto项目实战教程
1133

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



