facebook mAP实现详解,学习mAP代码实现总结

Facebook实现VOC数据集上的mAP评价指标有三个函数:

parse_rec(): 解析每张图片的.xml文件,得到其中的groundtruth

voc_ap(): 利用得到的rec、precision数组按照VOC07的方式或者计算面积的方式计算每个类别ap值

voc_eval(): 在给定的iou阈值下,计算每个类别的预测框是TP or FP,得到recall、precision数组

首先来看voc_eval()函数:

(1)先读入所有测试图片的文件名;

(2)然后判断存放每张图片groundtruth的.pkl文件是否存在,若存在载入内存;若不存在通过parse_rec()函数解析每一个xml文件,得到存放所有图片groundtruth的字典recs,然后存入.pkl文件。

注:recs的类型是字典,其中的嵌套结构较为复杂。每张图片的名称形成该字典key集合,其中的每个value是一个list,list中的元素也是字典类型,每个字典元素表示表示一个groundtruth包围框的各种信息,如:name、pose、truncated、difficult、和bbox(其值是list形式的坐标)

嵌套形式大概像这样:recs={image_name1:[{name:xxxx, pose:xxx, truncated:xxx, difficult:xxx, bbox:[x,x,x,x]}{............}{............}....], image_name2:.......}

(3)根据class_name参数,处理recs得到class_recs,class_recs中的所有groundtruth都变成了是针对class_name类别的groundtruth包围框。其中difficult是表示每个groundtruth包围框在评价时是否计入,det是表示每各groundtruth包围框是否已经有预测框与之匹配。

(4)读入class_name类别下预测的包围框的数据,预测的包围框文件的数据形式是每条数据包含三种信息:image_id、confidence、bbox。按置信度给每条数据升序排列,然后计算每个预测框bbox在对应的image_id中的最大交并比,如果大于iou阈值且对应的groundtruth包围框不是difficult且还没有预测框与之匹配,则把该预测框记为TP,否则记为FP。(其中当为difficult时,该预测框不记为TP或者FP,只记为0.)

(5)得到tp和fp数组,对它们进行累加计算recall和precisioin。

voc_ap()函数:

在得到tp和fp数组的基础上,利用VOC07的方式或者计算面积的方式计算每个类别ap值。

(1)voc07方式:把recall在range(0, 1.1, 0.1)中11位置处p相加再求均值得到ap

(2)虽代码较为简单,但实际意义较为难理解。其实际意义是:在每一个不同recall值的地方计算recall值乘以该recall值右边最大的precision,然后相加,即得到ap。

parse_rec()函数

是解析xml文件,按照规则解析即可,容易理解。

 

其中一些经常使用的函数列举:

os.path.splitext()

os.path.isfile()

~

sum()

np.argsort()

np.inf

np.argmax()

np.cumsum()

np.where()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值