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
- 增加马赛克、随机翻转等数据增强
- 可以轻微降低学习率,防止后期震荡
