学习pytorch框架和YOLO笔记(重要)
目录一:学习了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:加载官方预训练权重(最常用,迁移学习首选)pythonfrom ultralytics import YOLO # 自动下载预训练pt权重,构建完整YOLO网络 model = YOLO("yolov8n.pt")✅特点:网络结构 + 预训练参数全部就绪直接拿来训练自己数据集(迁移学习),收敛速度快支持检测 / 分割 / 分类 / 姿态任务方式 2:通过 yaml 配置文件【新建空白网络(随机初始化权重)】pythonmodel = 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 种方式适用场景对照表表格创建方式命令写法权重状态使用场景1YOLO("yolov8n.pt")自带官方预训练权重常规项目、快速训练目标检测2YOLO("yolov8n.yaml")随机初始化(空白模型)从零完整训练、学术实验3YOLO("custom.yaml").load("xx.pt")自定义结构 + 载入预训练权重修改网络、创新算法4YOLO("best.pt")载入自己训练完成权重增量续训 / 部署推理容易踩坑关键知识点YOLO("xxx.yaml")只是创建网络,没有权重,直接推理完全不能用,必须先训练!YOLO("xxx.pt")文件内部同时保存【网络结构 + 参数权重】如果你只有权重文件,没有 yaml,依然可以直接加载 pt 文件创建模型;必须依赖 PyTorch 底层!没有 torch,以上所有写法全部报错。