当前位置: 首页 > ai >正文

目标检测指标计算

mAP(mean Average Precision)

概述

  1. 预备参数:类别数,IoU阈值;
  2. 根据模型输出的置信度分数,将所有预测框按从高到低排序;
  3. 根据IoU是否超过阈值,判断每个预测框是 T P I o U TP_{IoU} TPIoU还是 F P I o U FP_{IoU} FPIoU(TP/FP还要结合分类置信度判断);
  4. 不同置信度阈值对应一个Precision-Recall点,取不同置信度阈值得到 Precision-Recall 曲线;
  5. PR曲线下面积即为 AP(根据面积积分计算方式不同,分为VOC和COCO风格);
  6. 所有类别AP平均值即为mAP;如果数据集中包含多个 IoU 阈值,则需要分别计算每个 IoU 阈值下的mAP,然后取平均值,例如 mAP@[0.5:0.95] 。

背景知识

Precision 和 Recall

  • Precision(精确率) :预测为正类的样本中,实际为正类的比例。
    P r e c i s i o n = T r u e P o s i t i v e s ( T P ) T r u e P o s i t i v e s ( T P ) + F a l s e P o s i t i v e s ( F P ) Precision=\frac{True Positives (TP)}{True Positives (TP)+False Positives (FP)} Precision=TruePositives(TP)+FalsePositives(FP)TruePositives(TP)
  • Recall(召回率) :实际为正类的样本中,被正确预测为正类的比例。
    R e c a l l = T r u e P o s i t i v e s ( T P ) T r u e P o s i t i v e s ( T P ) + F a l s e N e g a t i v e s ( F N ) Recall= \frac{True Positives (TP)}{True Positives (TP)+False Negatives (FN)} Recall=TruePositives(TP)+FalseNegatives(FN)TruePositives(TP)

IoU与匹配规则

  • IoU :预测框与真实框的交集面积与并集面积的比值。
    I o U = A r e a o f O v e r l a p A r e a o f U n i o n IoU=\frac{Area of Overlap}{Area of Union} IoU=AreaofUnionAreaofOverlap
  • 如果 IoU 超过某个阈值(通常为 0.5 或其他自定义值),则认为该预测框是 T P I o U TP_{IoU} TPIoU,否则为 F P I o U FP_{IoU} FPIoU

计算 Precision-Recall 曲线

假设我们有一个简单的例子,包含以下数据:

  • 总共有 5 个真实框。
  • 模型输出了 5 个预测框,按置信度排序后的结果如下:
    在这里插入图片描述
    取预测框1的置信度为阈值,则TP = 1, FP = 0;Precision=1/1=1.0,Recall=1/5=0.2;

    取预测框5的置信度为阈值,则TP = 3, FP = 2;Precision=3/5=0.6,Recall=3/5=0.6;

这5个点可以组成PR曲线。

计算 AP(曲线下面积)

  • 插值处理 :为了消除 Precision 的波动,通常对 Precision 进行插值处理,即对于每个 Recall 值 r,取大于等于 r 的最大 Precision 值。
  • 积分计算 :对插值后的 Precision-Recall 曲线进行积分,计算曲线下面积。常用的方法包括:
    • 直接数值积分(COCO风格)
    • 使用 11 点插值法(如 VOC 2007 的标准),在 Recall = [0, 0.1, 0.2, …, 1.0] 处取 Precision 值并求平均。
http://www.xdnf.cn/news/6482.html

相关文章:

  • C++ I/O多路复用
  • uniapp自定义日历计划写法(vue2)
  • 生信分析进阶15 - 从GTF文件提取起始密码子、终止密码子、外显子剪切供体和受体
  • 基于大模型的脑出血智能诊疗与康复技术方案
  • 计算机组成原理——数据的表示
  • 使用 Docker 部署 React + Nginx 应用教程
  • 4.2.3 Thymeleaf标准表达式 - 5. 片段表达式
  • mac M芯片运行docker-desktop异常问题
  • 保姆教程-----安装MySQL全过程
  • minio存储文件迁移磁盘
  • SpringBoot + Shiro + JWT 实现认证与授权完整方案实现
  • 《k-means 散点图可视化》实验报告
  • 在服务器上安装AlphaFold2遇到的问题(3)_cat: /usr/include/cudnn_version.h: 没有那个文件或目录
  • 从概念到可工程化智能体的转变路径——以“知识奇点工程师”为例
  • Secs/Gem第四讲(基于secs4net项目的ChatGpt介绍)
  • Python零基础入门到高手8.4节: 元组与列表的区别
  • 深度学习中--模型调试与可视化
  • 易境通海外仓WMS系统:赋能海外仓多元化业务场景管理
  • 【通知】2025元宇宙数字人设计大赛启动,大赛线上报名阶段开启!
  • ROOM 数据库 | 实现自定义 ContentProvider 具有条件的批量删除、查询功能
  • 傻子学编程之——Java并发编程的问题与挑战
  • WHAT - 前端开发流程 SOP(标准操作流程)参考
  • 芋道项目,商城模块数据表结构
  • NetSuite CSV导入Item Fulfillment的功能测试
  • ruskal 最小生成树算法
  • CPU cache基本原理
  • 互联网大厂Java求职面试:AI与大模型集成的云原生架构设计
  • 崩坏星穹铁道风堇前瞻养成攻略 崩坏星穹铁道风堇配队推荐
  • 【25软考网工】第六章 (6)防火墙技术、IDS入侵检测系统和IPS入侵防御系统
  • pytest 框架-第一集:初识