📊 训练结果分析 三个指标含义

txt标注文件格式
class_id x_center y_center width height
示例:1 0.3667 0.5 0.2067 1.0
IoU 是衡量预测框与真实框重叠程度的指标:
交集面积 (Intersection) IoU = ───────────────────────────── 并集面积 (Union)
想象两个矩形框:预测框是模型猜的位置,真实框是标注的正确位置。
真实框 (Ground Truth) 预测框 (Prediction) ┌──────────┐ ┌──────────┐ │ │ 交集区域 │ │ │ ┌─────┼─────────┐ │ │ │ │ │ │ │ │ │ │ ██████ │ │ │ ← 重叠部分(交集) │ │ ██████ │ │ │ │ └─────┼─────────┘ │ │ │ │ │ │ └──────────┘ └──────────┘ IoU = 黑色区域面积 / (两个框总面积 - 黑色区域面积)
| IoU 值 | 含义 | 检测质量 |
|---|---|---|
| 1.0 | 完全重合 | 完美检测 |
| 0.7 | 70% 重叠 | 优秀 |
| 0.5 | 50% 重叠 | 一般(常用阈值) |
| 0.3 | 30% 重叠 | 较差 |
| 0 | 无重叠 | 完全错误 |
传统目标检测(如 R-CNN):
图片 → 生成候选框 → 对每个框分类 → 结果 [两步流程,慢]
YOLO:
图片 → 神经网络一次性预测所有目标 → 结果 [一步完成,快]
关键创新:把目标检测当作回归问题,直接从图片像素预测边界框坐标和类别概率。
将输入图片划分为 S × S 的网格(如 7×7):
┌──┬──┬──┬──┬──┬──┬──┐ │ │ │ │ │ │ │ │ ├──┼──┼──┼──┼──┼──┼──┤ │ │ │🐶│ │ │ │ │ ← 狗的中心落在这个格子 ├──┼──┼──┼──┼──┼──┼──┤ │ │ │ │ │ │ │ │ ├──┼──┼──┼──┼──┼──┼──┤ │ │ │ │🚗│ │ │ │ ← 车的中心落在这个格子 ├──┼──┼──┼──┼──┼──┼──┤ │ │ │ │ │ │ │ │ └──┴──┴──┴──┴──┴──┴──┘
规则:物体的中心落在哪个格子,那个格子就负责检测这个物体。
每个格子预测 B 个边界框,每个框包含:
| 参数 | 说明 | 范围 |
|---|---|---|
| x, y | 框中心相对于格子左上角的偏移 | 0~1 |
| w, h | 框的宽度和高度(相对于整图) | 0~1 |
| confidence | 置信度(该框包含物体的概率 × IoU) | 0~1 |
| C₁, C₂, ... Cₙ | 各类别的概率 | 0~1 |
单个格子输出向量: ┌─────────────────────────────────────────────────┐ │ [x₁, y₁, w₁, h₁, conf₁, x₂, y₂, w₂, h₂, conf₂, │ ← 两个框(B=2) │ P(cat), P(dog), P(car), ... ] │ ← 类别概率 └─────────────────────────────────────────────────┘
最终输出是一个 3D 张量:
输出尺寸 = S × S × (B × 5 + C) S: 网格大小(如 7) B: 每个格子预测的框数(如 2) 5: x, y, w, h, confidence C: 类别数(如 4,对应你的裂缝数据集) 示例:7 × 7 × (2×5 + 4) = 7 × 7 × 14 = 686 个数值
输入图片 (640×640×3) ↓ ┌─────────────────┐ │ 主干网络 (Backbone) │ ← 提取特征(卷积层) │ 如 CSPDarknet53 │ └─────────────────┘ ↓ 特征图 ↓ ┌─────────────────┐ │ 特征融合 (FPN/PAN) │ ← 多尺度特征融合 │ 检测不同大小目标 │ └─────────────────┘ ↓ ┌─────────────────┐ │ 检测头 (Detection Head) │ ← 预测框和类别 └─────────────────┘ ↓ 输出 (S×S×(B×5+C))
训练时需要同时优化三个部分:
总损失 = λ₁ × 坐标损失 (MSE of x, y, w, h) + λ₂ × 置信度损失 (BCE of confidence) + λ₃ × 分类损失 (BCE of class probabilities)
| 损失类型 | 作用 | 计算公式 |
|---|---|---|
| 坐标损失 | 让预测框位置更准确 | (x_pred - x_true)² + (y_pred - y_true)² + (√w_pred - √w_true)² + (√h_pred - √h_true)² |
| 置信度损失 | 让模型学会判断有无物体 | 二值交叉熵 |
| 分类损失 | 让模型学会识别物体类别 | 多类别交叉熵 |
问题:多个格子可能预测同一个物体,产生重叠框。
解决步骤:
1. 过滤低置信度的框(如 confidence < 0.25) 2. 按置信度从高到低排序 3. 选置信度最高的框,加入结果 4. 计算该框与其他所有框的 IoU 5. 去掉 IoU > 阈值(如 0.5)的框(认为是同一个物体) 6. 重复 3-5 直到没有框
示例:
初始预测: NMS后: ┌───┐┌───┐ ┌───┐ │ 1 ││ 2 │ │ 1 │ ← 保留最高置信度 │0.9││0.7│ │0.9│ └───┘└───┘ └───┘ ↓↓↓ IoU=0.8 去掉框2(重叠太多)
对于每个预测框: - 计算与所有真实框的 IoU - 取最大 IoU - 如果 Max(IoU) > 阈值(0.5):正样本,参与坐标和分类学习 - 如果 Max(IoU) < 阈值:负样本,只学习置信度(置信度→0)
高 IoU 的框认为是同一个物体,只保留置信度最高的。
mAP50:IoU 阈值设为 0.5 时的平均精度 mAP50-95:IoU 阈值从 0.5 到 0.95 的平均精度(更严格)
| 版本 | 年份 | 主要改进 |
|---|---|---|
| YOLOv1 | 2016 | 开创性,首次提出单阶段检测 |
| YOLOv2 | 2017 | 引入 Anchor Boxes,Batch Normalization |
| YOLOv3 | 2018 | 多尺度预测(3个尺度),Darknet-53 |
| YOLOv4 | 2020 | 大量优化技巧(Mish激活、CIOU等) |
| YOLOv5 | 2020 | PyTorch实现,工程友好,Ultralytics |
| YOLOv8 | 2023 | Anchor-free设计,解耦头,C2f模块 |
| YOLOv10 | 2024 | 端到端检测,去除NMS,实时性更强 |
| YOLO26 | 2025 | 最新架构,你的训练模型 |
文档创建时间:2026-05-14 基于 YOLO26 训练日志分析
本文作者:Deshill
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!