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

COCO物体检测评测方法简介

本文从ap计算到map计算,最后到coco[0.5:0.95:0.05] map的计算,一步一步拆解物体检测指标map的计算方式。

一、ap计算方法

一个数据集有多个类别,对于该数据库有5个gt,算法检测出来10个bbox,对于人这个类别来说检测有下面结果,IoU>0.5时为GT与bbox之间是匹配关系。

GT-boxesBBconfidenceIoU>0.5TPFPprecisionrecall
GT1BB10.91101.000.14
GT2BB20.91101.000.29
GT1BB30.81010.670.29
BB40.70010.500.29
BB50.70010.400.29
GT3BB60.71100.500.43
BB70.70010.430.43
BB80.70010.380.43
GT4BB90.71100.440.57
GT5BB100.71100.500.71

根据上述结果可以计算出如下结果,要注意的是BB1\BB3都与GT1匹配,所以BB3计算的时候是false positive。

那么就可以得到两个数组(为了符合0-1,在原始的数组两边加入了两个值):

Precision=[0]+[1,1,0.67,0.50,0.40,0.50,0.43,0.38,0.44,0.50]+[0]Precision = [0] + [1, 1, 0.67, 0.50, 0.40, 0.50, 0.43, 0.38, 0.44, 0.50] + [0]Precision=[0]+[1,1,0.67,0.50,0.40,0.50,0.43,0.38,0.44,0.50]+[0]

Recall=[0]+[0.14,0.29,0.29,0.29,0.29,0.43,0.43,0.43,0.57,0.71]+[1]Recall = [0] + [0.14, 0.29, 0.29, 0.29, 0.29, 0.43, 0.43, 0.43, 0.57, 0.71] + [1]Recall=[0]+[0.14,0.29,0.29,0.29,0.29,0.43,0.43,0.43,0.57,0.71]+[1]

对Precision进行平滑后得到:

Precision=[1.,1.,1.,0.67,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.]Precision = [1., 1., 1., 0.67, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.]Precision=[1.,1.,1.,0.67,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.]

通过平滑后的数据可以画出下面曲线图:

在这里插入图片描述

对于上述PR值,如果我们采用:

  1. VOC2010之前的方法,我们选取Recall >= 0, 0.1, …, 1的11处Percision的最大值:1, 1, 1, 0.5, 0.5, 0.5, 0.5, 0.5, 0, 0, 0。此时人类别的 AP = 5.5 / 11 = 0.5
  2. VOC2010及以后的方法,对于Recall >= 0, 0.14, 0.29, 0.43, 0.57, 0.71, 1,我们选取此时Percision的最大值:1, 1, 1, 0.5, 0.5, 0.5, 0。此时人类别的$ AP = (0.14-0)*1 + (0.29-0.14)*1 + (0.43-0.29)*0.5 + (0.57-0.43)*0.5 + (0.71-0.57)*0.5 + (1-0.71)*0 = 0.5$

由于上面例子图不是很一般,下面根据知乎的图来描述关于积分的计算:

在得到P和R后,可以画出PR曲线如下所示:

在这里插入图片描述

对PR曲线进行平滑处理,即对PR曲线上的每点Precision值都取右侧最大值,平滑操作如下:

在这里插入图片描述

得到平滑后的曲线后,VOC2010年之前的方法是采样11个点,来计算AP
在这里插入图片描述

VOC2010之后改用求Area under curve方式,即曲线的积分来得到AP

在这里插入图片描述

二、map的计算

得到一类的ap后,多个类别求平均即为map

三、coco[0.5:0.95:0.05] map的计算

每个IoU在多类别上都可以得到map,多个IoU的平均就是coco[0.5:0.95:0.05] map的指标。个人认为应该称为mmap会形象一点。

参考文献:

  1. https://www.zhihu.com/question/53405779/answer/419532990 (上述例子来源,但是有所修改,因为他的例子有点问题)
  2. https://zhuanlan.zhihu.com/p/88896868 (上述的图片来源)
http://www.lryc.cn/news/3471.html

相关文章:

  • 记一次上环境获取资源失败的案例
  • 实战超详细MySQL8离线安装
  • 依赖倒置原则|SOLID as a rock
  • Webpack的知识要点
  • handler解析(2) -Handler源码解析
  • 【算法】kmp
  • git 常用命令之 git checkout
  • 一些常见错误
  • [单片机框架][调试功能] 回溯案发现场
  • MySQL主从同步-(二)搭建从机服务器
  • Linux系列 备份与分享文档
  • SNI生效条件 - 补充nginx-host绕过实例复现中SNI绕过的先决条件
  • 傻白探索Chiplet,Modular Routing Design for Chiplet-based Systems(十一)
  • C语言静态库、动态库的封装和注意事项
  • MyBatis-Plus分页插件和MyBatisX插件
  • 年前无情被裁,面试大厂的这几个月…
  • 基于Java的分片上传功能
  • KDS安装步骤
  • JavaSE-线程池(1)- 线程池概念
  • 开源代码的寿命为何只有1年?
  • 完善登录功能--过滤器的使用
  • CSS基础:属性和关系选择器
  • 设计模式:原型模式解决对象创建成本大问题
  • 驱动开发(二)
  • 《狂飙》大结局,这22句经典台词值得细品
  • 【计算机网络期末复习】第二章 物理层
  • 多核异构核间通信-mailbox/RPMsg 介绍及实验
  • 【Rust日报】2023-02-11 从头开始构建云数据库 RisingWave - 为什么我们从 C++ 转向 Rust...
  • Linux驱动开发(一)
  • Spring MVC 之返回数据(静态页面、非静态页面、JSON对象、请求转发与请求重定向)