yolo v8 结果图

问题描述 投票:0回答:2

下图是运行 yolo v8 的结果图。我想知道下图中横轴、纵轴和单位的含义。使用的代码是如下代码,是原样的yolo v8代码,没有任何定制。 https://github.com/ultralytics/ultralytics 我还想知道“box_loss”,“cls_loss”和“dfl_loss”的含义。

我从我的研究中了解到,图表的横轴是纪元数。然而,据我所知,我并不知道垂直轴。

Result Graph

deep-learning object-detection yolo
2个回答
3
投票

正如您所提到的,图表的横轴通常是纪元数。 epoch 是训练期间通过神经网络对训练数据集的完整迭代。更多的纪元通常会带来更好的模型训练,但如果过度,也可能导致过度拟合。

典型的 YOLO(You Only Look Once)训练图中的纵轴代表损失值。损失是衡量模型在训练过程中表现如何的指标。较低的损失值表示更好的模型性能,而较高的值表示较差的性能。训练期间的目标是最小化损失值。

在 YOLOv8 的上下文中,您提到了“box_loss”、“cls_loss”和“dfl_loss”。这些是总体损失值的组成部分:

“box_loss”:这是边界框回归损失,它测量预测边界框坐标和尺寸与地面实况相比的误差。较低的 box_loss 意味着预测的边界框更准确。

“cls_loss”:这是分类损失,它衡量图像中每个对象的预测类别概率与地面真实情况相比的误差。较低的 cls_loss 意味着模型可以更准确地预测对象的类别。

“dfl_loss”:这是可变形卷积层损失,是 YOLOv8 中 YOLO 架构的新补充。这种损失测量可变形卷积层中的误差,该层旨在提高模型检测各种尺度和纵横比的物体的能力。较低的 dfl_loss 表明模型能够更好地处理对象变形和外观变化。

总体损失值通常是这些单独损失的加权总和。垂直轴的具体单位取决于实现,但通常,它们表示误差的大小或预测值与地面真实值之间的差异。


0
投票

据我了解,您可以这样解释损失:

cls_loss
这是分类损失。当它很高时,基本上意味着您对应该预测的类别的置信度较低。您可以将其想象为您为应该预测的类预测的概率的 -log。

如果概率接近 1,则 -log 接近 0。 如果概率接近 0(例如 0.1),则 -log 接近 1。

你把这一切加起来,就会造成你的损失。

bbox_loss
它代表真实值和预测的交集与 1 之间的差异。

如果预测与真实情况完全匹配,则其 bbox 和并集的交集之间的比率将接近 1。

但它比这更复杂一点......如果你看第一种情况,无论盒子和预测之间的距离如何,IoU 都是 0,Loss 是 1。 这就是本文中的原因: https://arxiv.org/pdf/1911.08287.pdf

他们提出了 dIoU 和 cIoU(我猜这个是在 Yolov8 中使用的)。

为了简化,您可以将损失值想象为 Loss = 1 - IoU +d²/c²。 这意味着当 IoU 为 0 时,我们添加一个信息来帮助模型在拟合之前首先使 bbox 更接近。

dfl_loss
DFL 损失意味着分布式焦点损失,它来自这里: https://arxiv.org/pdf/2006.04388.pdf

我们不是直接预测 bbox 坐标,而是预测分布。 这是因为标签可能包含歧义和错误。

因为我们预测分布,所以我们能够通过某种积分来计算最终的 bbox 坐标值:

DFL 损失越高,直方图就越平坦,y 的边界值就越低。

如果您想了解更多信息,我建议您阅读yolov8论文:
https://arxiv.org/pdf/2305.09972.pdf

© www.soinside.com 2019 - 2024. All rights reserved.