【目标检测出】评价指标

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

常见的评价指标有交并比(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

相关文章
|
机器学习/深度学习 编解码 监控
目标识别知识蒸馏
翻译:《learning efficient object detection models with knowledge distillation》
141 0
|
4月前
|
JSON 算法 数据可视化
5.3 目标检测YOLOv3实战:叶病虫害检测——损失函数、模型训练
这篇文章详细介绍了使用YOLOv3模型进行叶病虫害检测时的损失函数配置、模型训练过程、评估方法以及模型预测步骤,并提供了相应的代码实现和可能的改进方案。
|
2月前
|
机器学习/深度学习 调度 知识图谱
TimeDART:基于扩散自回归Transformer 的自监督时间序列预测方法
近年来,深度神经网络成为时间序列预测的主流方法。自监督学习通过从未标记数据中学习,能够捕获时间序列的长期依赖和局部特征。TimeDART结合扩散模型和自回归建模,创新性地解决了时间序列预测中的关键挑战,在多个数据集上取得了最优性能,展示了强大的泛化能力。
100 0
TimeDART:基于扩散自回归Transformer 的自监督时间序列预测方法
|
7月前
|
机器学习/深度学习 编解码 算法
目标检测舰船数据集整合
目标检测舰船数据集整合
922 0
|
传感器 数据采集 编解码
3D目标检测数据集 DAIR-V2X-V
本文分享国内场景3D目标检测,公开数据集 DAIR-V2X-V(也称为DAIR-V2X车端)。DAIR-V2X车端3D检测数据集是一个大规模车端多模态数据集,包括: 22325帧 图像数据 22325帧 点云数据 2D&3D标注 基于该数据集,可以进行车端3D目标检测任务研究,例如单目3D检测、点云3D检测和多模态3D检测。
352 0
|
自然语言处理 算法 测试技术
PointGPT 论文解读,点云的自回归生成预训练
PointGPT 论文解读,点云的自回归生成预训练
674 0
|
机器学习/深度学习 监控 算法
了解YOLO算法:快速、准确的目标检测技术
了解YOLO算法:快速、准确的目标检测技术
3244 0
|
计算机视觉 异构计算
目标检测系列 | 无NMS的端到端目标检测模型,超越OneNet,FCOS等SOTA!(二)
目标检测系列 | 无NMS的端到端目标检测模型,超越OneNet,FCOS等SOTA!(二)
164 0
|
算法 计算机视觉
目标检测系列 | 无NMS的端到端目标检测模型,超越OneNet,FCOS等SOTA!(一)
目标检测系列 | 无NMS的端到端目标检测模型,超越OneNet,FCOS等SOTA!(一)
326 0
|
计算机视觉
详细解读 | 如何让你的DETR目标检测模型快速收敛(二)
详细解读 | 如何让你的DETR目标检测模型快速收敛(二)
268 0