当前位置:   article > 正文

深度学习图像识别笔记(三):yolov5检测结果分析_yolo平均p,r怎么看

yolo平均p,r怎么看

一、Confusion matrix 混淆矩阵

是一种可视化工具,特别用于监督学习。通过这个矩阵,可以很清晰地看出机器是否将两个不同的类混淆了。
confusion matrix
上图的表格其实就是confusion matrix

  • True/False: 预测结果是否正确
  • Positive/Negative:预测的方向是正方向还是负方向
  1. 真阳性(True Positive, TP): 预测为正样本,实际为正样本,预测正确
  2. 真阴性(True Negative, TN):预测为负样本,实际为负样本,预测正确
  3. 假阳性(False Positive, FP):预测为正样本,实际为负样本,预测错误(预测为正样本是错的)
  4. 假阴性(False Negative, FN):预测为负样本,实际为正样本,预测错误(预测为负样本是错的)

举例说明:
假设识别类别,其中加了狗的图片,即认为狗图片为负样本,猫图片为正样本。

  • 猫的图片被预测为猫,为TP;
  • 狗的图片被预测为狗,为TN;
  • 狗的图片被预测为猫,为FP;
  • 猫的图片被预测为狗,为FN;

二、由混淆矩阵衍生出的指标

1、Accuracy 准确率

被分对的样本/总样本数
在这里插入图片描述

     一般来说,正确率越高,分类器越好。
  • 1

但只用这个指标不够全面,因为若负样本的数量远>正样本数量,虽然正确率仍可以很高,但完全错分类正样本仍能达到较高的Acc

2、 Error rate 错误率

与accuray相对,描述被分类器错分的比例。
在这里插入图片描述

3、 Sensitive 灵敏度

表示所有正例中被分对的比例,和改良分类器对正例的识别能力。在所有真实值是positive的结果中,模型预测对的比重。
在这里插入图片描述

4、Specificity 特效度

所有负例中被分对的比例,衡量分类器对负例的识别能力
在这里插入图片描述

5、Precision 精度

度量精确性,表示被分为正例的示例中实际为正例的比例。
在模型预测为正样本的所有结果中,有多少真正为正样本的比例。
在这里插入图片描述

6、Recall 召回率

度量覆盖面,由多少个正例被分为正例
在这里插入图片描述

三、指标对比分析

在这里插入图片描述

1、precision 和 recall

上文提到,Accuracy并不能完全反映检测结果,所以需要PrecisionRecall
(下面的空格横线只是为了让等号对齐,没有任何意义)

  • 提高Precision = 提高二分类器预测正样本门槛
    _____________= 使二分类预测的正样本尽可能是真实正样本
  • 提高Recall = 降低二分类器预测正样本门槛
    _____________=使得二分类器尽可能将真实的正例挑选出来

(1)在意TP

由公式可以看到,PrecisionRecall的分子都是True Positive

  • Precision看的是,在预测正向的情况下,实际的【精准度】是多少;
  • Recall看的是,在实际为正向的状况下,预测模型【能召回多少】实际正向的答案。

PrecisionRecall的结果看重哪一个,主要取决于具体的项目情况。例如:

  • 指纹识别门锁,我们更在意预测正向(开门)的答对了多少,不是很在意实际正向(主人)的答对了多少。也就是说,在意Precision,不在意Recall
  • 广告投放中,我们在意实际正向(潜在客户)的答对了多少,而不是很在意预测正向(广告投放)的答对了多少。

(2)不在意TF

这个结果没有什么意思,在指纹识别门锁中,是陌生人按指纹不开门。通常情况下,实际上为正样本的结果比负样本要少,预测为正样本的一定会比预测为负样本少,所以True Negative的数量最多,也没有什么讨论意义。

2、F1 Score 综合评价指标

若一个任务中,PrecisionRecall同等重要,想要用一个指标统一,则有了F1 Score,也称为F1 Measure。它是精确率和召回率的调和平均数,最大为1(最好),最小为0(最差)。
在这里插入图片描述
在这里插入图片描述
当beta=1时,F1-Measure = F1 Score

把两个值综合变为一个值,就方便做模型对比了。

(1)为什么采用调和平均的方法?

调和平均常用于计算平均速率,在固定距离下,所花时间就是平均速率,这和数据成倒数关系,而F1 Measure也同样是这样的数据特性,在固定TP的情况下,有不同的分母,所以这里使用调和平均较为适当。

四、检测结果出来的图怎么看?

1、P曲线

P_curve.png:准确率precision与置信度confidence的关系图。
【置信度confidence:用来判断边界框内的物体是正样本还是负样本,大于置信度阈值的判定为正样本,小于置信度阈值的判定为负样本即背景。】
在这里插入图片描述
画图的代码在yolov5代码的utils文件夹下的metrics.py文件中,代码如下:

def plot_mc_curve(px, py, save_dir='mc_curve.png', names=(), xlabel='Confidence', ylabel='Metric'):
    # Metric-confidence curve
    fig, ax = plt.subplots(1, 1, figsize=(9, 6), tight_layout=True)

    if 0 < len(names) < 21:  # display per-class legend if < 21 classes
        for i, y in enumerate(py):
            ax.plot(px, y, linewidth=1, label=f'{names[i]}')  # plot(confidence, metric)
    else:
        ax.plot(px, py.T, linewidth=1, color='grey')  # plot(confidence, metric)

    y = py.mean(0)
    ax.plot(px, y, linewidth=3, color='blue', label=f'all classes {y.max():.2f} at {px[y.argmax()]:.3f}')
    ax.set_xlabel(xlabel)
    ax.set_ylabel(ylabel)
    ax.set_xlim(0, 1)
    ax.set_ylim(0, 1)
    plt.legend(bbox_to_anchor=(1.04, 1), loc="upper left")
    fig.savefig(Path(save_dir), dpi=250)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

从代码中可以看到,下面这句话对应图例中最后一句。

ax.plot(px, y, linewidth=3, color='blue', label=f'all classes {y.max():.2f} at {px[y.argmax()]:.3f}')
  • 1

y.max是指图上所有类别的precious的最大值,这里是1。下面的PR曲线可以看到是0.991。
argmax函数百度一下定义:
在这里插入图片描述
这个函数大约是为了体现这个模型的最终展示效果。因为可以看到,6个类别的曲线,有的精度比较好,有的不太好,通过整合成一条曲线来展示一个综合性能。(这点是猜测,如有其他见解欢迎讨论)

2、R曲线

在这里插入图片描述

3、P-R曲线

preciousrecall之间的关系,PR曲线下围城的面积称作AP,所有类别AP的平均值即为mAP。
在这里插入图片描述
P-R曲线与平衡点示意图
如果一个学习器的PR曲线A完全包住另一个学习器B的PR曲线,则可断言A的性能优于B。但是A和B发生交叉,那性能该如何判断呢?我们可以根据曲线下方的面积大小来进行比较,但更常用的是平衡点F1。平衡点(BEP)是 P=R(准确率 = 召回率)时的取值,即斜率为1,F1值越大,我们可以认为该学习器的性能较好。

4、result.png

在这里插入图片描述Box:YOLO V5使用 GIOU Loss作为bounding box的损失,Box推测为GIoU损失函数均值,越小方框越准;
Objectness:推测为目标检测loss均值,越小目标检测越准;
Classification:推测为分类loss均值,越小分类越准;
Precision:精确率(所有分类正确中的正样本比例);
Recall:召回率(有多少正样本被找到)
val Box: 验证集bounding box损失
val Objectness:验证集目标检测loss均值
val classification:验证集分类loss均值
mAP@0.5:阈值大于0.5的平均mAP。【其中,mAP指PR曲线下的面积AP的平均值,@后面的数表示判定IoU为正负样本的阈值】
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。【@0.5:0.95表示阈值取0.5:0.05:0.95后取均值】

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

5、 F1_curve.png

在这里插入图片描述
F1-score与置信度间的关系。F1-score是分类问题的一个衡量指标,是精确率precision和召回率recall的调和平均数,最大为1,最小为0。【1是最好,0是最差】

6、Labels.jpg

在这里插入图片描述
第一个图:classes 每个类别的数据量
第二个图 :labels 标签
第三个图 :center xy
第四个图 :labels 的长和宽

参考博文

秒懂Confusion Matrix之混淆矩阵详解
yolov5 训练结果解析
关于yolov5的一些说明(txt文件、训练结果分析等)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/195242
推荐阅读
相关标签
  

闽ICP备14008679号