coco数据集80个分类是哪些_如何画PR curve (PR曲线)基于COCO格式数据集 在maskrcnn_benchmark中...

coco数据集80个分类是哪些_如何画PR curve (PR曲线)基于COCO格式数据集 在maskrcnn_benchmark中..._第1张图片

本文聚焦如何画出基于coco格式数据集测试得到的precision-recall curve (PR curve)。

众所周知,对于目标检测的论文,往往要列出mAP的表格和PR曲线的图。

以FAIR开源的maskrcnn_benchmark为例子,模型训练好了之后进行测试只能得到mAP,并没有直接给出PR曲线

coco数据集80个分类是哪些_如何画PR curve (PR曲线)基于COCO格式数据集 在maskrcnn_benchmark中..._第2张图片

所以我对coco_eval.py和cocoapi的代码进行了一下研究。

https://github.com/cocodataset/cocoapi/blob/master/PythonAPI/pycocotools/cocoeval.py​github.com

coco_eval.eval['precision']是一个5维的数组。

#  precision  - [TxRxKxAxM] precision for every evaluation setting

coco数据集80个分类是哪些_如何画PR curve (PR曲线)基于COCO格式数据集 在maskrcnn_benchmark中..._第3张图片

第一维T:IoU的10个阈值,从0.5到0.95间隔0.05。

第二维R:101个recall 阈值,从0到101

第三维K:类别,如果是想展示第一类的结果就设为0

第四维A:area 目标的大小范围 (all,small, medium, large)

第五维M:maxDets 单张图像中最多检测框的数量 三种 1,10,100

所以, coco_eval.eval['precision'][0, :, 0, 0, 2] 所表示的就是当IoU=0.5时,从0到100的101个recall对应的101个precision的值。

在coco_eval.py中加入一些代码把这个1维数组画出来就是IoU=0.5时对应的PR曲线。

如果对于recall 对应的 precision如何计算有些不清楚的同学,可以看一下这篇文章,一定就可以明白了。

zzzz1:浅析经典目标检测评价指标--mmAP(一)​zhuanlan.zhihu.com

coco数据集80个分类是哪些_如何画PR curve (PR曲线)基于COCO格式数据集 在maskrcnn_benchmark中..._第4张图片
在coco_eval.py中加入的画PR曲线的代码

其他的语句就是一些plt.相关的用来画图的语句了。

plt.grid是用来在图中加网格。

plt.legend是用来在图中添加注释。

核心其实就是搞懂 coco_eval.eval['precision'] 这个5维数组表达的是什么。

搞懂了就可以以此类推画出各种自己需要的pr曲线了。

coco数据集80个分类是哪些_如何画PR curve (PR曲线)基于COCO格式数据集 在maskrcnn_benchmark中..._第5张图片

最后列举了基于三种不同的IoU阈值得到的PR曲线。

你可能感兴趣的:(coco数据集80个分类是哪些,coco数据集格式)