文章目录
一直不明白YOLO运行结果咋看的,现在尝试着学习学习,跟着chatGPT
args.yaml
用于参数配置的文件.
核心训练参数分析
-
模型配置 (
model
):- 使用
yolo11.yaml
作为模型配置。确保此 YAML 文件的配置是符合您需求的,尤其是模型架构、预训练权重等。
- 使用
-
数据配置 (
data
):- 数据集配置文件路径为
data.yaml
。确保数据集路径和文件格式正确。
- 数据集配置文件路径为
-
训练参数:
epochs: 300
:训练 300 个周期(轮次),这是一个合理的选择,可以根据训练过程中的损失值趋势进行调整。batch: 16
:批量大小为 16。如果显存允许,可以尝试增大批量大小,这可能有助于稳定训练,但会增加显存消耗。imgsz: 640
:输入图像大小为 640x640。这是一个常见的选择,可以在训练过程中根据显存情况调整为更大的尺寸(如 1280)。save: true
:训练过程会保存模型权重。save_period: -1
:表示在每个周期结束时保存模型权重。如果希望每隔特定周期保存模型,可以设置为具体数值。patience: 100
:当训练指标没有提升时,最多等待 100 个周期。
-
优化器配置:
optimizer: AdamW
:使用 AdamW 优化器,这是一个常用且较为稳定的优化器选择。lr0: 0.005
:初始学习率为 0.005,lrf: 0.2
表示学习率衰减比例,通常可以根据实际训练效果调整。momentum: 0.937
和weight_decay: 0.0005
:动量和权重衰减(L2 正则化)配置,帮助减少过拟合。
-
数据增强:
close_mosaic: 1
:启用 Mosaic 数据增强,它有助于提高模型的鲁棒性。flipud: 0.0
,fliplr: 0.5
:水平翻转概率为 50%,垂直翻转关闭。mixup: 0.0
:没有启用 MixUp 数据增强。MixUp 在一些场景下能提高模型的泛化能力,但会增加训练难度。你可以尝试启用它,设置为mixup: 0.2
或更高,看效果如何。
-
混合精度训练 (
amp
):amp: true
:启用了混合精度训练,这有助于加速训练过程并减少显存消耗,但可能会影响数值稳定性。
-
其他训练参数:
warmup_epochs: 3.0
:预热阶段为 3 个周期,逐步提高学习率。iou: 0.7
:目标检测任务中,定义了 IoU 阈值为 0.7,用于评估检测结果是否为正例。
-
输出与可视化:
plots: true
:训练结束后生成训练过程的可视化图表。save_json: false
和save_hybrid: false
:不会保存 JSON 格式的输出和混合模型。
-
模型评估:
val: true
:启用验证模式,确保每个周期都进行验证。split: val
:使用验证集进行验证,val
表示验证集,确保数据集正确划分。show_labels: true
,show_conf: true
,show_boxes: true
:训练过程中显示标签、置信度和框。
val_batch1_preds和val_batch1_labels
在模型训练中,val_batch1_preds
和 val_batch1_labels
通常是指验证集(validation set)中第一个批次(batch)输入数据的预测结果和实际标签。具体含义如下:
-
val_batch1_preds
:- 这是模型在验证集的第一个批次(
val_batch1
)上做出的预测结果。具体来说,这个张量(tensor)包含了模型预测的输出值,通常包括:- 分类结果(如预测类别的概率)
- 回归结果(如目标边界框的位置,YOLO 类模型的情况)
- 在图像分类任务中,
val_batch1_preds
可能是一个包含每个样本预测类别的概率分布的矩阵;而在目标检测任务中,通常还包含每个预测框的类别、置信度和坐标。
- 这是模型在验证集的第一个批次(
-
val_batch1_labels
:- 这是验证集的第一个批次的真实标签(ground truth)。它表示每个样本的实际类别以及(在目标检测任务中)目标的实际边界框位置。通常这个张量包括:
- 分类标签(实际的类别)
- 边界框坐标(在目标检测中,边界框的位置可能以
[x_min, y_min, x_max, y_max]
形式存储)
- 这是验证集的第一个批次的真实标签(ground truth)。它表示每个样本的实际类别以及(在目标检测任务中)目标的实际边界框位置。通常这个张量包括:
confusion_matrix_normalized.png
在 YOLO(You Only Look Once)模型的训练过程中,混淆矩阵通常用来衡量模型在分类任务中的表现。在目标检测中,尤其是对于每个检测到的目标,YOLO 不仅进行分类,还会生成框(bounding boxes)来定位目标。归一化的混淆矩阵在 YOLO 训练结果中,通常是用来分析类别预测的准确性,特别是在分类和定位任务中。
混淆矩阵在目标检测中的应用
混淆矩阵通常用于分类任务,而在目标检测中,混淆矩阵需要针对每个类别的预测结果进行衡量。对于 YOLO 模型,在训练和评估阶段,混淆矩阵会记录每个预测类别与真实类别之间的关系,帮助我们分析模型对不同类别的预测效果。
如何计算混淆矩阵?
-
真正例(True Positives,TP):模型正确预测的目标。即模型预测的框与真实框(ground truth)重合,并且类别预测也正确。
-
假正例(False Positives,FP):模型错误地预测为某个类别的目标。即模型预测的框是多余的,或者类别错误。
-
假负例(False Negatives,FN):模型没有预测到的目标。即真实框存在,但模型没有检测到。
-
真负例(True Negatives,TN):模型正确地判断某些区域没有目标。
归一化混淆矩阵
归一化的混淆矩阵通常是指将混淆矩阵中的数值按行进行归一化处理,使得每一行的和为1,这样可以得到每个类别的分类准确率。归一化后可以更容易地比较不同类别之间的预测性能,因为每一行都代表一个类别的预测情况。
YOLO 归一化混淆矩阵的含义
在目标检测的背景下,归一化混淆矩阵的每个元素表示的是模型在特定类别上的预测正确率(或者叫准确率)。例如,如果 YOLO 模型的训练数据包含 3 个类别(A、B、C),混淆矩阵可能看起来如下:
Pred A | Pred B | Pred C | |
---|---|---|---|
True A | 0.8 | 0.1 | 0.1 |
True B | 0.2 | 0.7 | 0.1 |
True C | 0.3 | 0.2 | 0.5 |
- 例如,
True A
预测为Pred A
的比例为 0.8,表示 80% 的类别 A 被正确识别。 True A
被错误预测为Pred B
的比例为 0.1,表示 10% 的类别 A 被误识别为 B。
意义
-
类别不平衡的处理:在目标检测中,有些类别的目标可能比其他类别多。归一化的混淆矩阵帮助我们看到每个类别的预测效果,而不受类别频率的影响。
-
优化模型:通过分析混淆矩阵,尤其是归一化的混淆矩阵,能够更容易地识别模型在哪些类别上表现较差。比如,如果某个类别的误分类较多,可能需要通过增加数据量、调整模型结构或使用不同的损失函数来优化。
-
评估模型性能:归一化的混淆矩阵可以帮助我们量化模型对每个类别的分类准确度,从而提供比单一准确率更细致的模型评估。
F1 Curve.png
F1 Curve 是用来评估分类模型性能的一个图形化工具,通常用于二分类任务中,但也可以扩展到多分类问题。F1分数是**精确度(Precision)和召回率(Recall)**的调和平均数,它考虑了模型在预测正类样本时的准确性和覆盖率。
F1 分数
F1 分数的计算公式为:
F 1 = 2 × Precision × Recall Precision + Recall F1 = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} F1=2×Precision+RecallPrecision×Recall
其中:
-
精确度(Precision):预测为正类的样本中,真正为正类的比例,计算公式为:
Precision = T P T P + F P \text{Precision} = \frac{TP}{TP + FP} Precision=TP+FPTP
其中, T P TP TP(True Positives)是预测为正类且真实为正类的样本数, F P FP FP(False Positives)是预测为正类但实际为负类的样本数。 -
召回率(Recall):实际为正类的样本中,预测为正类的比例,计算公式为:
Recall = T P T P + F N \text{Recall} = \frac{TP}{TP + FN} Recall=TP+FNTP
其中, F N FN FN(False Negatives)是实际为正类但预测为负类的样本数。
F1 曲线
F1 曲线是通过变化分类阈值(Threshold),计算不同阈值下的F1 分数并绘制成图的过程。不同于单一的F1分数,F1曲线考虑了不同阈值下模型性能的变化,能帮助我们选择最佳的阈值来平衡精确度和召回率。
结果分析
- 如果F1曲线的最高点对应的阈值较大,说明模型倾向于提高精确度。
- 如果F1曲线的最高点对应的阈值较小,说明模型倾向于提高召回率。
labels.jpg
在YOLO(You Only Look Once)模型的训练或推理过程中,labels.jpg
文件通常是 模型预测结果 或 训练结果的可视化 图像文件。它通常展示了模型对输入图像中目标的识别情况,标记了预测的边界框(Bounding Box)和类别标签。
- 左上的图表示缺陷案例的数量
- 右上图表示缺陷的范围,每一个缺陷框画一个圈
- 左下图是缺陷中心点的散点图,看来主要集中在中间。
- 右下图表示缺陷长宽散点图,越深表示数量越多,看来主要还是小缺陷
labels_correlogram.jpg
这张图是一个 散点矩阵图(Pair Plot),具体展示了 YOLO 模型在训练数据集中标注框(Bounding Box)的分布特性。它主要用于分析标注框的关键属性:x
、y
(中心坐标),width
(宽度)和 height
(高度)之间的分布和关系。
1. 图结构
- 图是一个 4x4 的矩阵,每行和每列对应一个属性:
x
: 标注框的中心点横坐标(归一化到 [0,1] 范围)。y
: 标注框的中心点纵坐标(归一化到 [0,1] 范围)。width
: 标注框的宽度(归一化到图像宽度的比例)。height
: 标注框的高度(归一化到图像高度的比例)。
- 对角线上的每个图显示该属性的 分布直方图。
- 非对角线的图是 散点图(热力图),表示两个属性之间的关系。
2. 对角线(分布直方图)
每个对角线上的图显示了该属性在数据集中的分布:
x
和y
:x
和y
是标注框的中心点坐标,可以看出标注框的中心点分布大致集中在中间区域(靠近 0.4 ~ 0.6),但也可能存在一些偏移。- 某些数据集中可能会有标注框偏离图像边界(
x
或y
偏向 0 或 1)。
width
和height
:width
和height
的直方图显示标注框的宽度和高度大多在较小的范围(靠近 0.1 ~ 0.2),表明数据集中主要是小物体。
3. 非对角线(散点图/热力图)
非对角线上的每个图显示两个属性之间的关系:
x
vsy
:- 这个图展示了标注框中心点在图像上的分布。
- 从图中可以看出,标注框的中心点集中在图像中间区域(
x
和y
均接近 0.5),这表明目标物体大多集中在图像中央。
x
/y
vswidth
/height
:- 这些图反映了标注框的宽高是否与位置相关。
- 例如,
x
vswidth
的散点图显示,标注框的宽度大多与中心点无明显相关性。
width
vsheight
:- 这个图展示了标注框宽度和高度之间的关系。
- 数据显示,标注框的宽度和高度大多集中在较小的范围,表明数据集中以小型物体为主。
4. 热力图特性
- 热力图中颜色深浅反映了不同区域数据点的密度(深蓝色表示高密度区域)。
- 从散点分布来看,大多数标注框在图像中间区域分布较密集,而宽高值较大的标注框相对较少。
在 YOLO 的运行结果中,result.csv
和 result.png
是用来记录和可视化模型性能的文件。它们提供了详细的指标和训练/测试过程的关键数据,帮助用户分析模型表现。以下是它们的具体含义:
result.csv
result.csv
是一个以逗号分隔的文件,包含了 YOLO 模型训练过程中的各种指标。通常包含以下信息:
1. 文件内容
result.csv
中的列可能包括:
- epoch: 训练的轮次。
- GIoU loss: 广义交并比(Generalized Intersection over Union)的损失值,用于衡量预测框与真实框的匹配程度。
- Objectness loss: 目标置信度的损失值。
- Classification loss: 分类损失值。
- Precision: 精确率,衡量模型检测出的目标中有多少是正确的。
- Recall: 召回率,衡量模型能找到所有目标的比例。
- mAP@0.5: 在 IoU 阈值为 0.5 时的平均精度(mean Average Precision)。
- mAP@0.5:0.95: 在 IoU 阈值从 0.5 到 0.95 的多个值上平均的 mAP。
- Learning rate: 当前训练轮次的学习率。
2. 用途
- 指标跟踪:通过
result.csv
,可以查看各项指标的变化趋势,例如损失是否收敛、精度和召回率是否提高。 - 问题诊断:如果某些指标没有改善(如损失值不下降、mAP 停滞),可以通过该文件定位问题。
- 保存训练记录:方便后续对模型性能进行对比。
result.png
result.png
是一个训练过程的可视化图像,通常由 result.csv
中的数据生成。它直观地展示了训练和验证过程中各项指标的变化趋势。
1. 图像内容
result.png
通常包括以下曲线:
- 损失曲线:
GIoU loss
、Objectness loss
、Classification loss
随训练轮次的变化趋势。- 损失值应该随着训练轮次增加而逐渐减小,趋于平稳。
- mAP 曲线:
mAP@0.5
和mAP@0.5:0.95
随训练轮次的变化。- 这些指标应该逐渐增大,最终趋于稳定。
- 精度和召回率曲线:
- 显示模型的精确率(Precision)和召回率(Recall)随训练轮次的变化。
- 理想情况下,精确率和召回率应该同时提高。
- 学习率曲线:
- 学习率随时间的变化。通常,YOLO 使用学习率调度器,学习率在训练初期会缓慢上升,随后逐渐下降。
2. 用途
- 直观分析:通过图像可以快速观察模型的收敛情况。例如:
- 如果损失值波动大,可能需要调整学习率或优化器参数。
- 如果 mAP 曲线不稳定或下降,可能需要检查数据集或模型超参数。
- 比较实验结果:当有多个模型或实验时,可以将不同的
result.png
对比,快速了解哪个模型表现更好。 - 展示成果:在报告或论文中,可以用图像展示模型训练的效果。
总算把这学完了。就这样吧。其实认真学学也不难。