深圳幻海软件技术有限公司 欢迎您!

【目标检测算法】YOLO-V5训练结果的分析与评价

2023-03-19

文章目录零、目标检测性能指标一、confusion_matrix二、P&R&PR&F1_curve1.P_curve2.R_curve3.PR_curve4.F1_curve三、labels&labels_correlogram四、result.png&res

文章目录

  • 零、目标检测性能指标
  • 一、 confusion_matrix
  • 二、P&R&PR&F1_curve
    • 1. P_curve
    • 2. R_curve
    • 3. PR_curve
    • 4. F1_curve
  • 三、labels&labels_correlogram
  • 四、result.png&result.txt
    • 1. loss functions
    • 2. result.csv
  • 五、train_batchx
  • 六、val_batchx_labels&val_batchx_pred

voc2007数据集下的结果评价: 权重文件为:yolov5m。我只训练了10轮

零、目标检测性能指标

检测精度检测速度
Precision,Recall,F1 score前传耗时
IoU(Intersection over Union)每秒帧数 FPS(Frames Per Sencond)
P-R curve浮点运算量(FLOPS)
AP、mAP

检测速度

  • 前传耗时(ms):从输入一张图像到输出最终结果所消耗的时间,包括前处理耗时(如图像归一化)、网络前传耗时、后处理耗时(如非极大值抑制)
  • 每秒帧数FPS (Frames Per Second): 每秒钟能处理的图像数量
  • 浮点运算量(FLOPS):处理一-张图像所需要的浮点运算数量,跟具体软硬件没有关系,可以公平地比较不同算法之间的检测速度

检测精度 下面会逐步介绍

一、 confusion_matrix

在机器学习领域和统计分类问题中,混淆矩阵(英语:confusion matrix)是可视化工具,特别用于监督学习,在无监督学习一般叫做匹配矩阵。矩阵的每一列代表一个类的实例预测,而每一行表示一个实际的类的实例。之所以如此命名,是因为通过这个矩阵可以方便地看出机器是否将两个不同的类混淆了(比如说把一个类错当成了另一个)。

  • 混淆矩阵的每一列代表了预测类别,每一行是预测类别。每一列是真实类别。
  • 矩阵中Aij的含义是:第j个类别被预测为第i个类别的概率

二、P&R&PR&F1_curve

涉及到准确率(查准率)和召回率(查全率)。这一块内容其他博主介绍也十分详细。

1. P_curve

precision(单一类准确率) : 预测为positive的准确率。

准确率和置信度的关系图。
意思就是,当我设置置信度为某一数值的时候,各个类别识别的准确率。可以看到,当置信度越大的时候,类别检测的越准确。这也很好理解,只有confidence很大,才被判断是某一类别。但也很好想到,这样的话,会漏检一些置信度低的类别。

2. R_curve

recall(真实为positive的准确率),即正样本有多少被找出来了(召回了多少)。
召回率(查全率)和置信度的关系图。
意思就是,当我设置置信度为某一数值的时候,各个类别查全的概率。可以看到,当置信度越小的时候,类别检测的越全面。

3. PR_curve

mAP 是 Mean Average Precision 的缩写,即 均值平均精度。可以看到:精度越高,召回率越低。
但我们希望我们的网络,在准确率很高的前提下,尽可能的检测到全部的类别。所以希望我们的曲线接近(1,1)点,即希望mAP曲线的面积尽可能接近1。

4. F1_curve

F1分数(F1-score)是分类问题的一个衡量指标。一些多分类问题的机器学习竞赛,常常将F1-score作为最终测评的方法。它是精确率和召回率的调和平均数,最大为1,最小为0。

对于某个分类,综合了Precision和Recall的一个判断指标,F1-Score的值是从0到1的,1是最好,0是最差。

三、labels&labels_correlogram

  • 第一个图是训练集得数据量,每个类别有多少个
  • 第二个是框的尺寸和数量
  • 第三个是center点的位置。可以看到口罩数据集中口罩的位置大多分布在图像的中心。
  • 第四个是labeld的高宽。口罩一般相比于整个图片比较小,所以看到样本大多分布在(0-0.2,0-0.2)。

???这个框体的输出结果是做什么用的,我也没搜到…

四、result.png&result.txt

1. loss functions

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

  • 定位损失box_loss:预测框与标定框之间的误差(GIoU)
  • 置信度损失obj_loss:计算网络的置信度
  • 分类损失cls_loss:计算锚框与对应的标定分类是否正确


Box:YOLOV5使用 GIOU loss作为bounding box的损失,Box推测为GIoU损失函数均值越小,方框越准
Objectness:推测为目标检测loss均值,越小目标检测越准
Classification:推测为分类loss均值,越小分类越准

val BOX: 验证集bounding box损失
val Objectness:验证集目标检测loss均值
val classification:验证集分类loss均值

Precision:精度(找对的正类/所有找到的正类)
Recall:真实为positive的准确率,即正样本有多少被找出来了(召回了多少)

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。

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

目标检测中PR曲线和mAP

2. result.csv

results.txt中最后三列是验证集结果,前面的是训练集结果,全部列分别是:
训练次数,GPU消耗,边界框损失,目标检测损失,分类损失,total,targets,图片大小,P,R,mAP@.5, mAP@.5:.95, 验证集val Box, 验证集val obj, 验证集val cls

五、train_batchx

这里我设置的一个batchsize是8,所以一次读了8张照片

六、val_batchx_labels&val_batchx_pred

val_batchx_labels:验证集第x轮的实际标签

val_batchx_pred:验证集第x轮的预测标签

文章知识点与官方知识档案匹配,可进一步学习相关知识
算法技能树首页概览41000 人正在系统学习中