1254 字
6 分钟
YOLO新应用-反馈图表解析

前言#

本文档仅仅解释基于Yolo v8训练出来的数据集反馈效果图表进行解释

训练数据:12张图片训练,12张图片验证

项目架构#

yolo/
├─ .venv/ # 虚拟环境
├─ dataset/ # 数据集
│ ├─ images/
│ │ ├─ train/
│ │ └─ val/
│ └─ labels/
│ ├─ train/
│ └─ val/
├─ models/ # 保存训练后的模型
├─ configs/
│ └─ data.yaml # 数据集配置
├─ train.py # 训练脚本
├─ detect.py # 推理脚本
├─ .gitignore
└─ README.md

解释: 在dataset文件夹中,image用于存放训练和验证图片集,labels用于存放训练和验证YOLO数据标注集

集:集合

开始训练#

在终端输入以下命令即可开始训练(作用是生成模型文件.pt)

Terminal window
yolo detect train data=configs/data.yaml \
model=yolov8n.pt \
epochs=50 \
imgsz=640 \
batch=4 \
device=cpu \
project=models \
name=yolo_train

部分解释:
batch:训练内核数量
device:训练方式(GPU/CPU)

后面会生成两个模型文件best.ptlast.pt

反馈图解释#

F1 Score(F1 分数)#

  • F1 是 精确率和召回率的折中
    • 精度高但是漏掉很多 → F1 不高
    • 漏检少但是误报多 → F1 不高
  • 图上通常有一个峰值,告诉你置信度选择多少时 精度和召回率最平衡

解读图表:
F1 值整体偏低,说明模型在召回率和精确率之间的平衡不佳。在极低置信度下才能勉强获得一点 F1 值,一旦提高阈值,模型就几乎没有有效预测

Precision(精确率)#

  • 精确率 = “我说这是目标的东西,有多少是真的目标?”
  • 图上是 精度随置信度变化的曲线

置信度越高(模型越确信这是目标),精度一般越高,但可能会漏掉一些真实目标

解读图表:
当置信度阈值设得足够高时,模型预测的结果都是完全准确的(没有误报)。但这也意味着,为了保证精确率,模型牺牲了大量的召回率

Recall(召回率)#

  • 召回率 = “所有真实目标,我找到了多少?”
  • 图上也是随置信度变化

置信度太高会漏掉真实目标 → 召回率下降

PR Curve(Precision-Recall 曲线)#

  • 横轴:召回率
  • 纵轴:精确率
  • 曲线越靠右上角,模型性能越好
  • 看这图就知道模型是偏保守(精度高、召回低)还是偏大胆(召回高、精度低)

mAP(Mean Average Precision,平均精度)#

评估目标检测模型的综合指标,考虑了精确率和召回率在不同置信度阈值下的表现

  • mAP50:IoU=0.5 时的平均精度
  • mAP50-95:IoU 0.5~0.95 的平均精度
  • 模型预测框和真实框重叠得越好,mAP 越高

解读图表:
mAP@0.5:0.995,这是一个非常高的数值
这个指标看似完美,但结合其他曲线来看,这很可能是因为数据量极小或类别单一导致的 “假完美”。在实际应用中,这个 mAP 值的参考意义有限

图表解读:
模型在完全不筛选(置信度为 0)时,能检测到 76% 的目标,但只要稍微提高置信度,就几乎检测不到任何目标了。这说明模型对目标的区分能力很弱,大量低置信度的预测其实是噪声

Confusion Matrix(混淆矩阵)#

  • 行 = 真实类别
  • 列 = 模型预测类别
  • 对单类任务,主要看 TP(预测对的数量)、FP(误报)、FN(漏报)
  • 越多对角线越深色 → 越好,说明模型预测对的多

图表解读:
数据:所有 12 个真实的 “COCO” 样本,都被正确预测为 “COCO”。没有将背景误判为目标,也没有将目标误判为背景
解读:在这个极小的测试集(12 个样本)上,模型的分类结果是完美的。这也解释了为什么 mAP@0.5 高达 0.995

图表解读:
数据:归一化后,对角线值为 1.00
解读:进一步确认了在这个测试集上,模型的分类准确率是 100%。但这是基于极小样本量得出的结论,不具备泛化能力

图表解读
数据集非常小且单一,这是导致评估指标 “看起来很美” 但实际泛化能力差的根本原因

图表解读:
损失曲线

  • train/box_loss, train/cls_loss, train/dfl_loss 都在稳步下降,说明模型在训练集上正在学习
  • val/box_loss, val/cls_loss, val/dfl_loss 也在下降,说明模型在验证集上也在收敛,没有明显的过拟合
    指标曲线
  • precision(B), recall(B), mAP50(B), mAP50-95(B) 都在训练初期迅速提升到很高的水平,然后趋于稳定
    解读:训练过程是健康的,模型确实学到了东西。但由于数据集太小,这些指标的提升更多是对训练数据的记忆,而不是对新数据的泛化能力
YOLO新应用-反馈图表解析
https://frees-ling.github.io/posts/fankui/
作者
Frees Ling
发布于
2026-03-07
许可协议
CC BY-NC-SA 4.0