《YOLOv11 实战:从入门到深度优化》004、模型训练入门:使用官方脚本训练你的第一个YOLOv11模型

张开发
2026/4/15 12:19:49 15 分钟阅读

分享文章

《YOLOv11 实战:从入门到深度优化》004、模型训练入门:使用官方脚本训练你的第一个YOLOv11模型
004、模型训练入门使用官方脚本训练你的第一个YOLOv11模型昨天深夜收到同事一条消息“训练跑了三小时loss还是NaN显卡白烤三小时鸡翅了。” 我回了个苦笑的表情——这场景太熟悉了。很多新手拿到官方代码后直接python train.py结果不是显存炸了就是loss飘了最后对着命令行输出干瞪眼。今天咱们就踏踏实实走一遍训练流程把那些容易栽跟头的地方标出来。环境配置那点事儿官方仓库的requirements.txt看着简单实际配起来处处是坑。PyTorch版本别追最新用他们验证过的版本最稳妥。我习惯先创建虚拟环境再装依赖conda create-nyolov11python3.9conda activate yolov11# 这里踩过坑官网给的pip install torch可能带的是CUDA 12服务器是CUDA 11.7就崩了pipinstalltorch1.13.1cu117torchvision0.14.1cu117 --extra-index-url https://download.pytorch.org/whl/cu117 pipinstall-rrequirements.txt装完别急着跑先python -c import torch; print(torch.cuda.is_available())验证下。见过有人卡了半天发现是驱动版本太低torch根本没认到GPU。数据准备别马虎YOLO格式的数据集结构老手都懂但新手容易在路径上翻车。目录树长这样datasets/ └── coco128/ ├── images/ │ ├── train2017/ │ └── val2017/ └── labels/ ├── train2017/ └── val2017/重点来了yaml文件里的路径写法有两种。如果你用绝对路径Windows下得写成D:/datasets/coco128/images/train2017反斜杠会出问题。相对路径的话得确保工作目录在项目根目录。我习惯加个检查脚本importyaml cfgyaml.safe_load(open(data/coco128.yaml))print(图片路径示例:,cfg[train][0][:100])# 跑之前先看看前100个字符路径不对立马能发现改配置文件的讲究官方给的默认参数是针对8卡V100的咱单卡消费级显卡得动几处。打开models/yolov11n.yaml假设你用nano版本# 改这里batch_size别硬撑显存不够就调小batch_size:16# 3080Ti跑32会爆从16开始试workers:4# Windows上经常卡在0%改成0试试# 学习率跟着batch_size变按线性缩放规则来lr0:0.01# bs16时用0.01如果bs32就调到0.02有个隐藏坑点accumulate参数。如果你设了batch_size4, accumulate4效果约等于batch_size16但显存占用小很多。适合小显存玩大模型。启动训练时的骚操作直接跑train.py可能看不到进度条加几个参数体验好很多python train.py\--datacoco128.yaml\--cfgyolov11n.yaml\--weights\--epochs100\--imgsz640\--device0# 指定GPU多卡用0,1,2,3--verbose# 这个让输出信息更详细--exist-ok# 覆盖已有的输出目录不用手动删训练开始后盯紧前几个batch。正常情况应该是loss从高往下降如果出现剧烈震荡或NaN马上停掉。常见原因数据有损坏的图片、学习率设太高、数据归一化出问题。监控训练状态别光等训练结束再看结果TensorBoard开着实时看tensorboard--logdirruns/train重点看四个曲线train/loss、val/loss、metrics/mAP_0.5、metrics/mAP_0.5:0.95。如果训练loss降但验证loss升可能是过拟合了。这时候加早停--patience 50或者加数据增强。第一次训练的建议参数新手第一轮训练用这个配置比较稳epochs:50# 先跑50轮看看趋势patience:10# 10轮没改善就停batch_size:16# 根据显存调imgsz:640# 分辨率别一上来就调大data:coco128.yaml# 先用小数据集试水跑完50轮后mAP_0.5应该能到0.4以上。如果只有0.2大概率是数据标注有问题回去检查标签文件。几个血泪教训训练中断后想续训用--resume参数接上次的权重文件别从头开始跑看到lossNaN别慌先把学习率除以10再试验证时显存不够就调小--imgsz别和训练分辨率搞混自定义数据集时类别数一定要对应上不然map算出来永远是0输出目录满了会导致训练卡死定期清空runs/train训练第一个模型就像学骑车摔几次就会了。关键是多观察日志输出那些warning和error信息其实已经把答案告诉你了。今晚跑起来吧明天早上看结果时希望你的loss曲线比我的咖啡更香浓。

更多文章