科技 > 人工智能 > 车联网

YOLOv5入门(六)目标检测性能评价指标与结果分析

109人参与 2024-08-04 车联网

前言

       通过前面几篇文章,已经完成数据集制作、环境配置(服务器)和模型训练,本篇博客主要讲解训练yolov5的train.py生成的结果文件各个图片和其中指标的含义,以及在评估模型和发表论文时主要用到的参数~

下面的文章围绕以下这个结果文件讲述:

往期回顾

yolov5入门(一)利用labelimg标注自己数据集

yolov5入门(二)处理自己数据集(标签统计、数据集划分、数据增强)

yolov5入门(三)使用云服务器autodl、vscode连接和winscp文件上传

yolov5入门(四)训练公共数据集kitti实践

yolov5入门(五)训练自己的目标检测模型

目录

一、结果分析

1.1 weights(模型权重)

1.2 confusion_matrix(混淆矩阵)

1.3 f1_curve(f1曲线)

1.4 hpy.yaml

1.5 labels

1.6 labels_corrlogram

1.7 opt.yaml

1.8 p_curve

1.9 r_curve

1.10 pr_curve

1.11 result.csv

1.12events.out.tfevents.1714616288.autodl-container-bbd74aba75-e1ff89fb.2194.0

1.13 result.png

1.14 train_batchx

1.15 val_batchx_labels

1.16 val_batchx_pred

二、评价指标map

2.1 影响map因素

2.2 优化map方法

三、其他评价指标

3.1 fps

3.2 iou


一、结果分析

1.1 weights(模型权重)

以上两个文件就是我们训练好的权重:

二者区别:best.pt用于训练后对模型进行推理和部署;last.pt用于继续训练模型,包含最后一次训练迭代结束时的模型权重,可以从上一次训练结束的地方继续训练模型。


1.2 confusion_matrix(混淆矩阵)

 1.2.1 混淆矩阵介绍

        混淆矩阵,又称为可能性矩阵或错误矩阵。混淆矩阵是可视化工具,用于监督学习,在无监督学习一般叫做匹配矩阵。在图像精度评价中,主要用于比较分类结果和实际测得值,可以把分类结果的精度显示在一个混淆矩阵里面。

 1.2.2 混淆矩阵结构

true positive (tp): 模型将实际为正类别的样本正确预测为正类别。

false positive (fp):模型将实际为负类别的样本错误预测为正类别。

false negative (fn):模型将实际为正类别的样本错误预测为负类别。

true negative (tn):模型将实际为负类别的样本正确预测为负类别。

 1.2.3 混淆矩阵效果

1、混淆矩阵的每一行代表了预测类别,每一行的总数表示预测为该类别的数据的数目;
2、每一列代表了数据的真实归属类别,每一列的数据总数表示该类别的数据实例的数目;

 1.2.4 从混淆矩阵得到分类指标

(1)精确率(accuracy)

含义:精确率用来表示模型的精度,即模型识别正确的个数/样本的总个数

accuracy = (tp+tn)/(tp+fn+fp+tn)

(2)正确率/准确率(precision)

含义:表示在模型识别为正类样本中,真正为正类的样本所占比例

precision = tp/(tp+fp)

(3)召回率/查全率(recall)

含义:表示模型正确识别出为正类的样本的数量占总的正类样本数量的比值。recall越高,说明有更多的正类样本被模型预测正确,模型的效果越好。

recall = tp/(tp+fn)

(4)平均精度(average precision,ap)

含义:ap衡量模型在每个类别上的好坏

(5)均值平均精确度(mean average precision,map)

含义:map衡量在所有类型上的好坏,map取所有类别ap的平均值

map@0.5:当iou为0.5时的map

map@0.5:0.95 当iou为0.5:0.95:0.05时的map平均数

(6)f1-score

含义:分类问题的一个衡量指标,可以用于评估模型在检测出所有目标的情况下的精确性和完整性。f1-score综合考虑精确度与召回率的指标,最大值为1,最小值为0,公式如下:

f1 = 2 * (precision * recall) / (precision + recall)


1.3 f1_curve(f1曲线)

f1-confidence curve就是f1-score随着confience逐渐增高而变化的曲线。

横坐标:confidence(置信度)

纵坐标:f1-score

置信度含义:模型判定一个物体并不是百分百判定它是属于某个分类,而是会给予它一个概率,confidence就是设置的阈值,如果超过这个概率那么就确定为某个分类。

1.4 hpy.yaml

保存我们训练时指定的参数,内容如下:

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: 0.05
cls: 0.5
cls_pw: 1.0
obj: 1.0
obj_pw: 1.0
iou_t: 0.2
anchor_t: 4.0
fl_gamma: 0.0
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

1.5 labels

labels图片代表每个检测到的目标的类别和边界框信息。


1.6 labels_corrlogram

含义:指的是一种图形,用于显示目标检测算法在训练过程中预测标签之间的相关性。

作用:体现中心点横纵坐标以及框的高度间的关系

表示中心点坐标x、y,以及框的高宽之间的关系。每行的最后一幅图代表的是x,y,宽和高的分布情况;


1.7 opt.yaml

包含了数据集路径、权重路径,项目名称等一系列设置性参数

weights: yolov5s.pt
cfg: /root/yolov5-7.0/models/yolov5s_tls.yaml
data: /root/yolov5-7.0/data/traffic_lights.yaml
hyp:
  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: 0.05
  cls: 0.5
  cls_pw: 1.0
  obj: 1.0
  obj_pw: 1.0
  iou_t: 0.2
  anchor_t: 4.0
  fl_gamma: 0.0
  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
epochs: 100
batch_size: 128
imgsz: 640
rect: false
resume: false
nosave: false
noval: false
noautoanchor: false
noplots: false
evolve: null
bucket: ''
cache: null
image_weights: false
device: ''
multi_scale: false
single_cls: false
optimizer: sgd
sync_bn: false
workers: 8
project: runs/train
name: exp
exist_ok: false
quad: false
cos_lr: false
label_smoothing: 0.0
patience: 100
freeze:
- 0
save_period: -1
seed: 0
local_rank: -1
entity: null
upload_dataset: false
bbox_interval: -1
artifact_alias: latest
save_dir: runs/train/exp3

1.8 p_curve

准确率(precision)与置信度(confidence)之间的关系图


1.9 r_curve

召回率(recall)和置信度(confidence)之间的关系


1.10 pr_curve

        pr曲线中的p代表的是precision(精准率),r代表的是recall(召回率),其代表的是精准率与召回率的关系,一般情况下,将recall设置为横坐标,precision设置为纵坐标。pr曲线下围成的面积即ap,所有类别ap平均值即map


1.11 result.csv

        全部列从左往右依次为:训练轮数、训练集边界框损失、训练集置信度损失、训练集分类损失、精确率、召回率、均值平均精度map@0.5、均值平均精度map@0.5:0.95、验证集边界框损失、验证集目标检测损失、验证集分类损失、学习率


1.12events.out.tfevents.1714616288.autodl-container-bbd74aba75-e1ff89fb.2194.0


1.13 result.png

(1)边界框损失(box_loss):预测框与标定框之间的误差,越小定位得越准;

(2)置信度损失(obj_loss):目标检测loss均值,越小判定目标的能力越准;

(3)分类损失(cls_loss):计算锚框与对应的标定分类是否正确,越小分类越准;

(4)map@0.5:0.95(map@[0.5:0.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;

(5)map@0.5: 表示阈值大于0.5的平均map


1.14 train_batchx

用于训练模型性能的标签:是yolov5模型训练集的图片,其中x表示训练集的批次编号。train_batchx中每个图片都有一个对应的标签,用于描述图像中的目标的位置和类别信息。


1.15 val_batchx_labels

验证集第x轮的实际标签:指验证集中一个batch的真实标签和框的信息,其中x为batch的编号。这些信息通常包括每个样本的分类标签和相应的边界框坐标。


1.16 val_batchx_pred

验证集第x轮的预测标签:指验证集中一个batch的预测标签和框的信息,其中x为batch的编号。这些信息通常包括每个样本的分类标签和相应的边界框坐标。

二、评价指标map

2.1 影响map因素

2.2 优化map方法

三、其他评价指标

3.1 fps

fps计算问题

(1)参数配置:

      data为自己数据集对应的yaml文件

      weights为训练自己数据集得到的权重

      batchsize设置为1

(3)运行val.py生成结果如下:

(3)fps计算

pre-process:图像预处理时间,包括图像保持长宽比缩放和padding填充,通道变换(hwc->chw)和升维处理等

inference:推理速度,指预处理之后的图像输入模型到模型输出结果的时间

nms:后处理时间,对模型输出结果进行转换

fps = 1000ms/pre-process+inference+nms(1000ms除以三个时间之和)

3.2 iou

iou = 交集面积/并集面积

3.3 gflops

注意事项:

      涨点一般看的是训练完权重之后运行val.py得到的map值,也可以看train的最大值。

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

PyTorch深度学习实战(44)——基于 DETR 实现目标检测

08-04

【小黑送书—第十期】>>2023年度盘点:智能汽车、自动驾驶、车联网必读书单

08-04

单目3D检测-坐标系、数据集

08-03

【Apollo】阿波罗自动驾驶:塑造自动驾驶技术的未来

08-03

【计算机设计大赛】国赛一等奖项目分享——基于多端融合的化工安全生产监管可视化系统

08-03

车联网安全之GPS欺骗

08-03

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论