📌 关键要点
本文记录用 COCO128 数据集完整跑通一次 YOLOv8 训练的过程,适合第一次接触训练的新手。
- 训练本质 = 图片 + 标注 → 调整模型参数 → 输出权重文件
.pt- 用预训练权重
yolov8n.pt做起点(迁移学习),几分钟即可出效果- 训练成果是
runs/detect/train/weights/下的best.pt与last.pt
COCO128:COCO 官方前 128 张图,YOLO 教程标配,约 7MB。
coco128.yaml 中 path: coco128 表示相对当前目录找 coco128 文件夹):test\coco\ ← 命令在此目录执行
├── coco128\
│ ├── images\train2017\ 128 张 jpg
│ └── labels\train2017\ 128 个 txt 标注
├── yolov8n.pt 预训练权重(首次运行自动下载)
└── runs\ 训练结果输出目录
标注文件格式:每行 类别id x_center y_center width height(归一化坐标)
0 0.52 0.55 0.4 0.6 ← 类别0(人),位于图中心偏下,宽40%高60%
💡 说明:
coco128.yaml不需要自己创建,内置在 ultralytics 包内,yolo train会自动找到。
yolo train data=coco128.yaml model=yolov8n.pt epochs=5 imgsz=640
| 参数 | 含义 |
|---|---|
train |
进入训练模式 |
data=coco128.yaml |
数据集配置:数据路径 + 80 个类别名 |
model=yolov8n.pt |
起点权重(输入),官方预训练模型,训练在其基础上微调 |
epochs=5 |
训练轮数:全部 128 张图反复学 5 遍 |
imgsz=640 |
输入图片尺寸 640×640 |
输入 vs 输出模型(易混淆点):
| 文件 | 角色 |
|---|---|
yolov8n.pt |
输入起点:官方在 COCO 全量(11 万张)上预训练好的权重 |
runs/detect/train/weights/best.pt |
输出成果:训练中 mAP 最高的一轮,推荐使用 |
runs/detect/train/weights/last.pt |
输出成果:最后一轮的结果 |
迁移学习:从预训练模型继续微调,几百张图就能出效果;从零训练(
model=yolov8n.yaml)需要海量数据,不推荐。
Model summary: 130 layers, 3,157,200 parameters, 8.9 GFLOPs
Transferred 355/355 items from pretrained weights
optimizer: AdamW(lr=0.000119, momentum=0.9)
optimizer=auto 自动选择 AdamW 并确定学习率,无需手动设置。
Epoch box_loss cls_loss dfl_loss Instances
1/5 1.183 1.523 1.224 16
Class Images Instances P R mAP50 mAP50-95
all 128 929 0.662 0.531 0.608 0.454
| 指标 | 含义 |
|---|---|
box_loss / cls_loss / dfl_loss |
三个损失值,越小越好(定位 / 分类 / 框回归) |
P |
Precision 精确率:预测的框中有多少是对的 |
R |
Recall 召回率:真实目标有多少被找到 |
mAP50 |
IoU=0.5 时的平均精度,最常用指标 |
mAP50-95 |
IoU 从 0.5 到 0.95 取平均,更严格 |
| 轮次 | mAP50 | mAP50-95 |
|---|---|---|
| 1 | 0.608 | 0.454 |
| 3 | 0.631 | 0.469 |
| 5 | 0.651 | 0.487 |
5 轮共耗时约 3 分钟(CPU,i9-13900H)。指标随轮数上升,说明模型在持续学习。
runs\detect\train\
├── weights\
│ ├── best.pt ← 最好模型(mAP 最高的一轮)
│ └── last.pt ← 最后一轮模型
├── results.png ← 训练曲线图(损失 / mAP 随轮数变化)
├── labels.jpg ← 标注可视化(数据长什么样)
├── val_batch0_pred.jpg← 模型预测效果图
├── confusion_matrix.png ← 混淆矩阵
└── train_batch0.jpg ← 训练输入批数据
左列为三类损失(box/cls/dfl)随轮数下降,右列为精确率、召回率与 mAP 随轮数上升。
展示目标在图片中的位置分布(左上)与类别分布(右下)。
蓝框为模型预测结果,能正确框出人、车、交通灯等目标。
yolo predict model=runs\detect\train\weights\best.pt source=xxx.jpgepochs=50(COCO128 上 CPU 约 30 分钟).yaml → 同样命令训练🔗 相关笔记:常用目标检测数据集与图片库清单
📖 资料来源: