VOC数据集mAP计算(附带代码)解析

VOC数据集mAP计算(附带代码)解析

一.几个概念

IoU:交并比

在这里插入图片描述
(目标检测实际上是分类问题,检测器在图片上以不同像素尺度生成大量的框,如果检测器认为某个框里存在物体,就把它画出来)
TP:画出了框并且画对了的框的个数(即检测对了的框数目)
TN:没画出来的但是这儿确实没目标的个数(不计算,因为没目标物体且此处没画框的地方太多了)
FP:画出了框但是这儿没物体的框的个数(即检测错的框数目)
FN:没画出来的但是这儿存在物体的框的个数(即没检测出来的目标数)

precision(精度)
在这里插入图片描述
recall(召回率)
在这里插入图片描述
mAP
单一的precision或recall用来评价检测结果是片面的(Why?这儿就不赘述了。)所以引入mAP。
在目标检测中,mAP的定义首先出现在PASCAL Visual Objects Classes(VOC)竞赛中。至少有两个变量会影响Precision和Recall,即IoU和置信度阈值。IoU是一个简单的几何度量,可以很容易标准化,比如在PASCAL VOC竞赛中采用的IoU阈值为0.5。而COCO竞赛中在计算mAP较复杂,其计算了一系列IoU阈值(0.05至0.95)下的mAP。但是置信度却在不同模型会差异较大,可能在我的模型中置信度采用0.5却等价于在其它模型中采用0.8置信度,这会导致precision-recall曲线变化。

二.AP计算流程:

1.根据每个框的置信度进行从高到低排序。
在这里插入图片描述

2.设置不同阈值计算相应的precision和recall
我们有 TP=5 (BB1, BB2, BB5, BB8, BB9), FP=5 (重复检测到的BB1也算FP)。除了表里检测到的5个GT以外,我们还有2个GT没被检测到,因此: FN = 2. 这时我们就可以按照Confidence的顺序给出各处的PR值,如下:
在这里插入图片描述

3.绘制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。此时Aeroplane类别的 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。此时Aeroplane类别的 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

mAP即对所有类别的AP求平均值。

VOC的代码(模拟mAP计算流程。自己参考Facebook开源的Detectron包含VOC数据集的mAP计算写的,和原始代码有出入)

import numpy as np

confidence=np.array([0.2,0.6,0.4,0.1,0.8,0.7,0.5]) #置信度数组
sorted_ind = np.argsort(-confidence)#按置信度降序排序
testBB = np.array(range(len(confidence)*4)).reshape((len(confidence), 4))#顺序生成0-len(confidence)*4的整数,再把这些数字按顺序生成len(confidence)*4的矩阵
print(testBB)
testBB = testBB[sorted_ind, :]
print(testBB)
image_ids = [image_ids[x] for x in sorted_ind]

nd = len(image_ids)
   tp = np.zeros(nd)
   fp = np.zeros(nd)
   

(写了一半不想写了,有时间再写吧)

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值