训练结果目录
在这里插入图片描述
目标检测常用指标

术语 解释
精度(Precision) 在二分类问题中,精度是指被正确分类的正样本数量与所有被分类为正样本的样本数量之比。它衡量了分类器在预测为正样本时的准确性。
召回率(Recall) 在二分类问题中,召回率是指被正确分类的正样本数量与所有真实正样本的数量之比。它衡量了分类器找到所有正样本的能力。
F1 分数(F1 score) F1 分数综合考虑了精度和召回率,是精度和召回率的调和平均值。它提供了一个综合评估分类器性能的指标。
前传耗时(Forward Pass Time) 指神经网络模型进行一次前向传播计算所需的时间。它反映了模型在推理或预测阶段的速度。
IoU(Intersection over Union) 是指预测边界框与真实边界框之间的交集面积与并集面积之比。在目标检测任务中,IoU 用于衡量预测框与真实框之间的重叠程度。
每秒帧数(Frames Per Second,FPS) 用于衡量视频处理或渲染系统的性能,表示每秒处理的帧数。较高的 FPS 值表示系统能够更快地处理视频帧。
浮点运算量(FLOPS,Floating Point Operations per Second) 是衡量计算机或计算设备每秒执行的浮点运算数量。它通常用于评估模型的计算复杂性和计算资源需求。
AP(Average Precision) AP 是目标检测任务中用于评估单个类别的精度指标,它衡量了模型在不同置信度下的准确性。
mAP(mean Average Precision) mAP 是所有类别的 AP 的平均值,用于综合评估目标检测模型的性能。

1. confusion_matrix_normalized.png和confusion_matrix.png

请添加图片描述

请添加图片描述

confusion_matrix_normalized.pngconfusion_matrix.png 是用于评估目标检测模型性能的混淆矩阵图。

混淆矩阵是一个表格,用于显示分类模型在测试数据上的预测结果与实际标签之间的关系。它将实际标签分为正例(Positive)和负例(Negative),将预测结果划分为真阳性(True Positive)、真阴性(True Negative)、假阳性(False Positive)和假阴性(False Negative)四种情况。

  • 真阳性(True Positive):模型正确预测为正例的样本数。
  • 真阴性(True Negative):模型正确预测为负例的样本数。
  • 假阳性(False Positive):模型错误地将负例预测为正例的样本数。
  • 假阴性(False Negative):模型错误地将正例预测为负例的样本数。

confusion_matrix_normalized.png 是经过归一化处理的混淆矩阵图。归一化后的混淆矩阵显示的是预测结果的相对比例或百分比,可以更清楚地了解模型在不同类别上的分类准确性。

confusion_matrix.png 则是未经过归一化处理的混淆矩阵图,显示的是预测结果的绝对数量。

这两个图表可以帮助您分析模型在不同类别上的分类性能,进而评估模型的准确性、召回率和误报率等指标。

精确率和召回率的计算方法

  • 精确率Precision=TP / (TP+FP), 在预测是Positive所有结果中,预测正确的比重
  • 召回率recall=TP / (TP+FN), 在真实值为Positive的所有结果中,预测正确的比重

2. F1_curve.png

请添加图片描述

F1_curve.png 是 F1 曲线的图示,用于评估目标检测模型在不同阈值下的性能。

F1 曲线是通过在不同阈值下计算模型的精度和召回率而生成的曲线。它综合考虑了分类器的准确性和查全率(召回率),是这两个指标的调和平均值。

在 F1 曲线上,横轴表示阈值的变化范围,纵轴表示对应阈值下的 F1 分数。F1 分数越高,表示模型在精度和召回率之间取得了更好的平衡。

F1 曲线的形状和趋势可以提供关于模型性能的重要信息。通常,我们希望 F1 曲线尽可能地靠近左上角,同时保持较高的 F1 分数。这意味着模型在保持高精度的同时,能够保持较高的召回率。

通过观察 F1 曲线,您可以确定最佳的阈值选择,以在精度和召回率之间找到合适的平衡点。这有助于确定模型在特定任务中的最佳性能点。

在图上显示 "all classes 0.66 at 0.309" 表示在 F1 曲线上的某个特定阈值处,所有类别的 F1 分数为 0.66。该特定阈值为 0.309。

这意味着在该阈值下,目标检测模型在所有类别上的综合性能(平均 F1 分数)为 0.66。综合性能是模型在多个类别上的表现的平均值,可以用来总结模型的整体分类准确性和召回率。

通过观察 F1 曲线,您可以找到最佳的阈值选择,以在精度和召回率之间达到最佳平衡。在该特定阈值处,模型在所有类别上达到了相对较高的 F1 分数。

需要注意的是,该特定阈值和 F1 分数仅针对所示的图表和数据。在实际应用中,模型的性能可能会受到不同数据集、模型架构和任务要求的影响。因此,根据具体情况,最佳阈值和性能指标可能会有所不同。

三、args.yaml

训练时的超参数

task: detect
mode: train
model: null
data: ultralytics/cfg/datasets/VOC_self.yaml
epochs: 100
patience: 100
batch: 64
imgsz: 640
save: true
save_period: -1
cache: null
device: ''
workers: 4
project: runs\train
name: exp
exist_ok: false
pretrained: true
optimizer: SGD
verbose: true
seed: 0
deterministic: true
single_cls: false
rect: false
cos_lr: false
close_mosaic: 0
resume: ''
amp: true
fraction: 1.0
profile: false
freeze: None
overlap_mask: true
mask_ratio: 4
dropout: 0.0
val: true
split: val
save_json: false
save_hybrid: false
conf: null
iou: 0.7
max_det: 300
half: false
dnn: false
plots: true
source: null
show: false
save_txt: false
save_conf: false
save_crop: false
show_labels: true
show_conf: true
vid_stride: 1
stream_buffer: false
line_width: null
visualize: false
augment: false
agnostic_nms: false
classes: null
retina_masks: false
boxes: true
format: torchscript
keras: false
optimize: false
int8: false
dynamic: false
simplify: false
opset: null
workspace: 4
nms: false
lr0: 0.01
lrf: 0.01
momentum: 0.937
weight_decay: 0.0005
warmup_epochs: 3.0
warmup_momentum: 0.8
warmup_bias_lr: 0.1
box: 7.5
cls: 0.5
dfl: 1.5
pose: 12.0
kobj: 1.0
label_smoothing: 0.0
nbs: 64
hsv_h: 0.015
hsv_s: 0.7
hsv_v: 0.4
degrees: 0.0
translate: 0.1
scale: 0.5
shear: 0.0
perspective: 0.0
flipud: 0.0
fliplr: 0.5
mosaic: 1.0
mixup: 0.0
copy_paste: 0.0
cfg: ultralytics/cfg/hyp_chepai.yaml
tracker: botsort.yaml
save_dir: runs\train\exp

四、P_curve.png(单一类准确率)

准确率precision和置信度confidence的关系图
请添加图片描述

在目标检测中,模型通常会为检测到的目标提供一个置信度或得分值。置信度表示模型对该检测结果的自信程度或置信程度。而准确率则是指在一定的置信度阈值下,模型检测到的目标中真实目标的比例。

P_curve.png 图表可以展示不同置信度阈值下的准确率。横轴表示置信度阈值,纵轴表示准确率。

曲线上的每个点表示在特定的置信度阈值下的准确率。通过观察曲线,您可以获得在不同置信度阈值下模型的准确率表现。这可以帮助您选择适当的置信度阈值,以平衡准确率和召回率之间的权衡。

当置信度越大时,类别检测越准确,但是这样就有可能漏掉一些判定概率较低的真实样本。

五、R_curve.png(单一类召回率)

请添加图片描述
在目标检测任务中,召回率是指在所有实际为正例的样本中,模型成功预测为正例的样本所占的比例。对于单一类别,召回率可以简单地理解为模型能够正确检测到该类别目标的能力。

在 R_curve.png 图中,横轴表示阈值的变化范围,纵轴表示对应阈值下的召回率。曲线上的每个点对应于一个阈值,代表模型在该阈值下的召回率。

通常情况下,我们希望模型在保持较高召回率的同时,实现较高的精确性。因此,R 曲线越靠近右上角,表示模型在召回率方面表现得越好。

通过观察 R 曲线,您可以确定最佳的阈值选择,以在召回率和精确性之间找到合适的平衡点。这有助于确定模型在特定类别上的最佳性能点,并评估其目标检测能力。

六、PR_curve.png(精确率和召回率的关系图)

请添加图片描述

在分类任务中,精确率是指在所有预测为正例的样本中,实际为正例的样本所占的比例。召回率是指在所有实际为正例的样本中,模型成功预测为正例的样本所占的比例。

PR_curve.png 图表上的横轴表示召回率,纵轴表示精确率。曲线上的每个点对应于一个特定阈值下的精确率和召回率。

通常情况下,我们希望模型能够在保持较高精确率的同时,实现较高的召回率。因此,PR 曲线越靠近右上角,表示模型在精确率和召回率之间取得了更好的平衡。

通过观察 PR 曲线,您可以确定最佳的阈值选择,以在精确率和召回率之间找到合适的平衡点。这有助于确定模型在特定任务中的最佳性能点,并评估其分类能力。

七、results.png

请添加图片描述

loss functions
损失函数是用来衡量模型预测值和真实值不一样的程度,极大程度上决定了模型的性能。

  • 定位损失box_loss:预测框与标定框之间的误差(GIoU),越小定位得越准
  • 置信度损失obj_loss:计算网络的置信度,越小判定为目标的能力越准
  • 分类损失cls_loss:计算锚框与对应的标定分类是否正确,越小分类得越准

Precision:精度(找对的正类/所有找到的正类);
Recall:真实为positive的准确率,即正样本有多少被找出来了(召回了多少)。Recall从真实结果角度出发,描述了测试集中的真实正例有多少被二分类器挑选了出来,即真实的正例有多少被该二分类器召回。

mAP是用Precision和Recall作为两轴作图后围成的面积,m表示平均,@后面的数表示判定iou为正负样本的阈值,@0.5:0.95表示阈值取0.5:0.05:0.95后取均值。

mAP@.5:.95(mAP@[.5:.95])
表示在不同IoU阈值(从0.5到0.95,步长0.05)(0.5、0.55、0.6、0.65、0.7、0.75、0.8、0.85、0.9、0.95)上的平均mAP。

mAP@.5:表示阈值大于0.5的平均mAP

一般训练结果主要观察精度和召回率波动情况(波动不是很大则训练效果较好)
然后观察mAP@0.5 & mAP@0.5:0.95 评价训练结果。

八、results.txt

九、train_batchx

我设置的batch_size为16所以一次读取16张图片
请添加图片描述

十、val_batch0_labels 和 val_batch0_pred

val_batchx_labels:验证集第1轮的实际标签
val_batchx_pred:验证集第1轮的预测标签

请添加图片描述

十一、labels.jpg —— 标签

请添加图片描述

第一个图是训练集的数据量,每个类别有多少个
第二个图是框的尺寸和数量
第三个图是中心点相对于整幅图的位置
第四个图是图中目标相对于整幅图的高宽比例

十二、labels_correlogram.jpg —— 体现中心点横纵坐标以及框的高宽间的关系

请添加图片描述

表示中心点坐标x和y,以及框的高宽间的关系。

每一行的最后一幅图代表的是x,y,宽和高的分布情况:

最上面的图(0,0)表明中心点横坐标x的分布情况,可以看到大部分集中在整幅图的中心位置;

  • (1,1)图表明中心点纵坐标y的分布情况,可以看到大部分集中在整幅图的中心位置
  • (2,2)图表明框的宽的分布情况,可以看到大部分框的宽的大小大概是整幅图的宽的一半
  • (3,3)图表明框的宽的分布情况,可以看到大部分框的高的大小超过整幅图的高的一半
    而其他的图即是寻找这4个变量间的关系

更多推荐