yolov5学习图像

yolov5学习图像

第一幅 Confusion Matrix 归一化混淆矩阵

1.作用

混淆矩阵用来观察模型各类别的预测正误

  • 横轴True:真实标签;纵轴Predicted:模型输出预测标签
  • 对角线:样本预测正确的比例,数值越接近1,该类别识别越好
  • 非对角线:代表预测错误,比如把A识别成B类

2.计算

  • TP:真实A,预测A(对角线)
  • FP:真实不是A,预测为A(同一行其他单元格)
  • FN:真是为A,预测成别的类(同一列其他单元格)

每一个数值做归一化,得到0-1之间的比例

3.问题

pe、tr 与背景之间容易混淆,存在漏检、错检。

4.优化

  • 检查 pe的数据集标注,修正错标漏标;
  • 扩充 pe 类样本数量,增加复杂场景样本;
  • 调大超参数cls分类损失权重,加强类别区分

第二幅 F1‑Confidence Curve (F1‑置信度曲线)

1.作用

展示不同置信度阈值下每一类 F1 分数变化;曲线最高点就是最优置信阈值;F1 综合衡量精确率和召回率,用来找推理阶段最合适的置信阈值。

2.计算

P 精确率,R 召回率。置信度从 0~1 遍历,每一个置信度计算一组 F1

预测结果
真实结果正例假例

正例

真正例TP

伪反例FN
假例伪正例FP真反例TN

精确率:预测结果为正例样本中真实为正例的比例

召回率:真实为正例的样本中预测结果为正例的比例

3.问题

pe 类别 F1 整体偏低;阈值设置过高漏检严重。

4.优化

推理 detect.py 使用--conf 0.709,这个阈值整体平衡漏检和误检;重点优化 pe 类样本。

第三幅 数据集统计分布图

1.作用

  • 左上柱状:每个类别样本数量,判断类别均衡性
  • 右上:所有标注框叠加可视化
  • 左下 散点:目标中心点坐标 (x,y) 分布
  • 右下散点:目标框宽高(尺度)分布,看大小目标分布

2.计算

直接读取数据集所有 xml/json/yolo 标签,统计每个标签的类别、中心点、宽高

3.问题

类别样本不均衡,tr 样本远多于 pe;会造成模型偏向样本多的类别

4.优化

  • 对 pe 少样本做数据增强(复制、马赛克)
  • 训练开启类别权重
  • 根据宽高分布,重新聚类 anchor 锚框,适配数据集物体大小

第四幅 标签联合分布图

1.作用

标签特征联合分布图,多维度看标注框的x,y,width,height统计分布。 对角线是单变量直方图;非对角线是两个变量的二维散点。

2.计算

解析全部标签文件,提取每个 bounding box 的 x,y,w,h 绘制。

3.问题

数据集存在两种尺寸目标,默认 anchor 不一定适配。

4.优化

重新运行 k‑means 聚类 anchor,替换 yaml 里面 anchors 参数,提升定位效果。

第五幅 Precision‑Confidence曲线 (精确率‑置信度曲线)

1.作用

置信度越高,模型输出框越可信。 观察:调高置信度,精确率如何变化。

2.计算

遍历置信阈值 0~1,每一个阈值计算P=TP/(TP+FP)。

标注:all classes 1.00 at 0.957,置信 0.957 时整体精确率达到 1。

3.问题

pe 类容易输出错误预测框。

4.优化

推理时 pe 类可以适当提高置信阈值;数据集修正 pe 的错误标注。

第六幅 Precision‑Recall (P‑R) 精确率‑召回率曲线

1.作用

目标检测核心评估图,衡量类别综合检测能力

  • 曲线下面积就是 AP;mAP@0.5 是所有类别 AP 取平均。
  • 曲线越靠近左上角,模型效果越好。

2.计算

遍历置信阈值,得到一组 (P,R) 点连成曲线;对曲线积分得到 AP。

图中标注:all classes 0.988 mAP@0.5;pe 类别 AP=0.928,其余类别大多 0.99 以上。

3.问题

pe 类别召回率掉得早,容易漏检 pe 目标

4.优化

增加 pe 类训练样本,清理噪声标签;调整损失函数分类权重

第七幅 Recall‑Confidence 召回率‑置信度曲线

1.作用

横轴:置信阈值,纵轴:召回率

看置信度对召回率的影响:置信度越低,框出的物体越多,漏检越少,但是误检变多

2.计算

遍历置信阈值,计算R=TP/(TP+TF)

3.问题

如果置信设置太高,pe 大量漏检。

4.优化

结合 F1 曲线,选择 0.709 作为折中置信阈值,兼顾 P 和 R。

第八幅 训练 & 验证损失与指标曲线图

1.作用

完整监控训练全过程,判断是否收敛、过拟合。

  • 第一行 train:训练集;第二行 val:验证集
  • box_loss:框位置损失;obj_loss:有无目标置信损失;cls_loss:分类损失
  • metrics:Precision、Recall、mAP@0.5、mAP@0.5:0.95
  • val 系列:验证集上的损失(看泛化)

2.计算

每一轮 epoch 结束,分别在训练集、验证集计算损失函数;同时计算评估指标。

box_loss 采用 CIoU;obj_loss、cls_loss 使用 BCE 二元交叉熵。

3.问题

val obj_loss 末尾有轻微抬头,有一点点过拟合苗头

4.优化

  • 如果继续训练,可以适当提前停止 epoch
  • 增加马赛克、随机翻转等数据增强
  • 可以轻微降低学习率,防止后期震荡