【目标检测出】评价指标

简介: 【目标检测出】评价指标

常见的评价指标有交并比(iou及改进),准确率,精度,召回率,FPR,F1-Score,PR曲线-AP值,ROC曲线-AUC值,mAP值和FPS

✨ 1 交并比

假设有两个矩形,分别为A和B:

f5eb68b1aff94ea9b60711bde2fb92a3.png

则交并比公式:

884d4ff48e9a4e9994deb771ee53a71c.png

即A交B比A并B。

代码实现:

主函数

  eps = torch.finfo(torch.float32).eps
    bboxes1_area = (bboxes1[..., 2] - bboxes1[..., 0]).clamp_(min=0) * (bboxes1[..., 3] - bboxes1[..., 1]).clamp_(min=0)
    bboxes2_area = (bboxes2[..., 2] - bboxes2[..., 0]).clamp_(min=0) * (bboxes2[..., 3] - bboxes2[..., 1]).clamp_(min=0)
    w_intersect = (torch.min(bboxes1[..., 2], bboxes2[..., 2]) - torch.max(bboxes1[..., 0], bboxes2[..., 0])).clamp_(min=0)
    h_intersect = (torch.min(bboxes1[..., 3], bboxes2[..., 3]) - torch.max(bboxes1[..., 1], bboxes2[..., 1])).clamp_(min=0)
    area_intersect = w_intersect * h_intersect
    area_union = bboxes2_area + bboxes1_area - area_intersect
    ious = area_intersect / area_union.clamp(min=eps)

655d2b75586b49ef9db46a2a1ff34084.png

bboxes1_area和bboxes2_area即bboxes1和bboxes2即面积。

w_intersect和h_intersect是bboxes1和bboxes2相交部分的宽和高,比如(torch.min(bboxes1[…, 2], bboxes2[…,2])即在x1_max和x2_max中找到较小的,即相交部分的右下角x轴坐标,其余同理。

area_intersect即计算相交面积。

area_union计算A并B的面积。 clamp函数规定下限。

👻 1.2 giou

原论文地址

ba00a7f86ae94973858333e13f30e2aa.png

✨ 2 precision(精度)和recall(召回率)

在论文里面经常会遇到precision(精度)和recall(召回率),下面进行介绍。

首先,我们要了解一下混淆矩阵,其中包含四个元素:

TP(True Positive):真正例,即实际为正样本且被预测为正样本的数量。

FN(FalseNegative):假反例,即实际为正样本但被预测为负样本的数量。

TN(TrueNegative):真反例,即实际为负样本且被预测为负样本的数量。

FP(FalsePositive):假正例,即实际为负样本但被预测为正样本的数量。

c1c7ac9a22a143978e2b573d6e110a89.png

利用该混淆矩阵,可以==计算precision和recall==。 ****

precision表示模型预测为正类的样本中,实际上真正属于正类的比例,公式为:

69b8fd6dc6e64eef8db7221c5370c30b.png

精确率越高:说明模型在预测正类样本时的准确性越高,即预测为正类的样本中,真正属于正类的比例越大。这意味着模型在区分正类和负类方面表现得更好,误报率较低。但精确率忽略了实际为正类的样本中,被模型漏报(即预测为负类)的情况。

recall表示实际为正类的样本中,被模型正确预测为正类的比例,公式为:

4197885c61024ccf91fef31b1cd2c164.png

召回率越高:说明模型在识别正类样本方面的效果越好,即实际为正类的样本中,被正确预测为正类的比例越大。这意味着模型在捕捉正类样本方面表现得更好,漏报率较低。但召回率忽略了模型预测为正类的样本中,实际上属于负类(即误报)的情况。

精确度和召回率之间的关系:

当精确度升高,即模型更加严格地预测正类时,可能将更多的正样本预测为负样本,那么实际为正样本中预测正确的就变少了,则召回率降低。

反之同理。

(这也体现了,两个各自忽略的即对方关注的)

✨ 3 AP和mAP

25a66843a8d542eb93b80b68ab700ff3.png

从第二节我们知道了精准度和召回率之间的关系,如上图PR曲线所示。

两个部分都有关注与忽略的地方,那么如何将两者结合平衡呢?

PR曲线下方的面积即是一种方案,称为AP值

mAP就是对所有类AP值取平均值。

👻 3.1 具体计算

  1. 剔除类别置信度低的预测框(每个包含目标预测框都有一个包含目标类别的分数预测),一般为0.5。
  2. 计算预测框与GT的IOU。IOU>0.5设置为TP,IOU<=0.5设置为FP,没有检测到的GT的数量设置为FN
  3. 计算recall和precision
  4. 计算PR曲线面积,下面是一个计算示例(某点函数值代替某段函数值)
  5. ccc7320db72046beb86be899beda26da.png

相关文章
|
6月前
|
机器学习/深度学习 存储 算法
神经网络中的量化与蒸馏
本文将深入研究深度学习中精简模型的技术:量化和蒸馏
66 0
|
9月前
|
机器学习/深度学习 编解码 监控
目标识别知识蒸馏
翻译:《learning efficient object detection models with knowledge distillation》
|
6天前
|
运维 数据挖掘 Python
探索LightGBM:监督式聚类与异常检测
探索LightGBM:监督式聚类与异常检测【2月更文挑战第3天】
33 1
|
6天前
|
机器学习/深度学习 数据采集 传感器
使用GAN进行异常检测
自从基于Stable Diffusion的生成模型大火以后,基于GAN的研究越来越少了,但是这并不能说明他就没有用了。异常检测是多个研究领域面临的重要问题,包括金融、医疗保健和网络安全。
82 2
|
9月前
|
自然语言处理 算法 测试技术
PointGPT 论文解读,点云的自回归生成预训练
PointGPT 论文解读,点云的自回归生成预训练
407 0
|
11月前
|
机器学习/深度学习 监控 算法
了解YOLO算法:快速、准确的目标检测技术
了解YOLO算法:快速、准确的目标检测技术
1853 0
|
12月前
|
计算机视觉 异构计算
目标检测系列 | 无NMS的端到端目标检测模型,超越OneNet,FCOS等SOTA!(二)
目标检测系列 | 无NMS的端到端目标检测模型,超越OneNet,FCOS等SOTA!(二)
102 0
|
12月前
|
算法 计算机视觉
目标检测系列 | 无NMS的端到端目标检测模型,超越OneNet,FCOS等SOTA!(一)
目标检测系列 | 无NMS的端到端目标检测模型,超越OneNet,FCOS等SOTA!(一)
240 0
|
12月前
|
机器学习/深度学习 数据可视化 计算机视觉
详细解读 | 如何让你的DETR目标检测模型快速收敛(一)
详细解读 | 如何让你的DETR目标检测模型快速收敛(一)
295 0
|
12月前
|
计算机视觉
详细解读 | 如何让你的DETR目标检测模型快速收敛(二)
详细解读 | 如何让你的DETR目标检测模型快速收敛(二)
171 0