目录
一:学习了pytorch一步步从无到有训练创建模型和加载使用自定义模型的过程
观后感:参考该章节其他博文 关于PyTorch与YOLO 库的思考,AI 4问
遗留问题:有待搭建环境验证和知识细节的总结吸收,后面有时间再总结吧
二:学习了调用官方提供的模型,一步步数据准备到数据标注到生成自己的best.pt模型,加载到使用的过程
观后感:参考下面AI提问:
通过YOLO创建模型有几种方式?
基于 Ultralytics YOLO (v8/v9/v10/v11) 创建模型【4 种主流方式】
方式 1:加载官方预训练权重(最常用,迁移学习首选)
方式 2:通过 yaml 配置文件【新建空白网络(随机初始化权重)】
方式 3:yaml + 预训练权重 组合(自定义结构 + 加载预训练权重)
方式 4:从已经训练完成的自定义.pt 权重加载模型
补充区分:4 种方式适用场景对照表
容易踩坑关键知识点
拓展:旧版 YOLOv5(非 ultralytics 统一库)
方式 4:从已经训练完成的自定义.pt 权重加载模型 具体流程是什么
方式 4:加载自己训练好的自定义 best.pt/last.pt 完整流程
前置说明
两大使用场景流程
场景一:加载模型直接推理(预测图片 / 视频 / 摄像头)【最常用】
完整代码流程
场景二:加载模型【增量继续训练】(断点续训、二次微调)
完整流程
⚠️ 关键硬性限制
完整分步标准化流程(文字版,便于你记笔记)
❗高频坑点整理
坑 1:混淆 resume=True 和加载 best.pt
坑 2:想修改类别数量,不能直接加载旧 pt
坑 3:pt 版本不兼容
坑 4:路径中文问题
延伸对比区分(帮你理清和另外两种加载方式差异)
额外工程拓展
best.pt 是怎么生成的,是在已有官方提供的模型生成的新的模型吗
一句话核心结论
一、完整生成链路(标准流程)
二、分步详细解释
1)起点:训练启动时,我们一般执行代码
2)训练过程发生了什么?
3)best.pt/last.pt 如何自动产出?
三、关键概念厘清(解决你的核心疑问)
问题 1:best.pt 是在官方模型基础上生成的新模型?
问题 2:有没有办法不依赖官方模型,从零训练得到 best.pt?
四、极易踩坑的认知误区
五、极简类比帮助记忆
补充延伸
一:学习了pytorch一步步从无到有训练创建模型和加载使用自定义模型的过程
观后感:参考该章节其他博文 关于PyTorch与YOLO 库的思考,AI 4问
遗留问题:有待搭建环境验证和知识细节的总结吸收,后面有时间再总结吧
二:学习了调用官方提供的模型,一步步数据准备到数据标注到生成自己的best.pt模型,加载到使用的过程
注意:最后的课程目前只看了前5个章节
观后感:参考下面AI提问:
通过YOLO创建模型有几种方式?
基于 Ultralytics YOLO (v8/v9/v10/v11) 创建模型【4 种主流方式】
先统一概念:创建模型 = 实例化 YOLO 网络结构,用于训练 / 迁移学习
注意:Darknet 原版 YOLO (v3/v4) 属于另一套体系,下面默认讲现在工业最常用的 Ultralytics YOLO
方式 1:加载官方预训练权重(最常用,迁移学习首选)
python
from ultralytics import YOLO # 自动下载预训练pt权重,构建完整YOLO网络 model = YOLO("yolov8n.pt")✅特点:
- 网络结构 + 预训练参数全部就绪
- 直接拿来训练自己数据集(迁移学习),收敛速度快
- 支持检测 / 分割 / 分类 / 姿态任务
方式 2:通过 yaml 配置文件【新建空白网络(随机初始化权重)】
python
model = YOLO("yolov8n.yaml")✅特点:
- 只搭建网络骨架,没有训练权重,参数全部随机初始化
- 相当于从零开始训练(Train from scratch)
- 可以复制 yaml 文件,自己修改通道数、深度、宽度,自定义 YOLO 结构
重点区分:
.yaml只定义网络结构,没有权重;.pt包含网络 + 权重
方式 3:yaml + 预训练权重 组合(自定义结构 + 加载预训练权重)
python
# 使用自己修改后的网络yaml,同时载入官方预训练权重 model = YOLO("custom_yolov8.yaml").load("yolov8n.pt")✅特点:自己修改网络结构(增加注意力模块、修改 neck 层),同时复用主干预训练权重;模型改造、网络创新开发最常用方案。
方式 4:从已经训练完成的自定义.pt 权重加载模型
python
# 加载你自己训练完毕保存的模型 model = YOLO("runs/train/exp/weights/best.pt")✅特点:
- 载入你训练好的成品模型,一般两种用途:
- 继续二次训练(增量训练)
- 直接推理预测图片、视频
补充区分:4 种方式适用场景对照表
表格
| 创建方式 | 命令写法 | 权重状态 | 使用场景 |
|---|---|---|---|
| 1 | YOLO("yolov8n.pt") | 自带官方预训练权重 | 常规项目、快速训练目标检测 |
| 2 | YOLO("yolov8n.yaml") | 随机初始化(空白模型) | 从零完整训练、学术实验 |
| 3 | YOLO("custom.yaml").load("xx.pt") | 自定义结构 + 载入预训练权重 | 修改网络、创新算法 |
| 4 | YOLO("best.pt") | 载入自己训练完成权重 | 增量续训 / 部署推理 |
容易踩坑关键知识点
YOLO("xxx.yaml")只是创建网络,没有权重,直接推理完全不能用,必须先训练!YOLO("xxx.pt")文件内部同时保存【网络结构 + 参数权重】- 如果你只有权重文件,没有 yaml,依然可以直接加载 pt 文件创建模型;
- 必须依赖 PyTorch 底层! 没有 torch,以上所有写法全部报错。