(深度学习评估指标)——MS COCO detection evaluation metrics

时间:2024-03-13 10:30:55

这篇文章可以教会你如何看论文最下面的评价指标曲线图。
目前网上关于coco metrics的翻译都比较差,希望以此提高整体水平。
如有不足,还请指教!

1、概述:

本文介绍MC COCO数据集用到的Metrics

2、Metrics 简介

(深度学习评估指标)——MS COCO detection evaluation metrics
说明:
1、除非有其他说明,否则AP和AR是多个IoU的平均值,具体来说就是我们使用十个不同的阈值.50:.05:.95。相对于传统只使用单个0.5的阈值相比,这是一个突破。使用平均IoU可以提高探测器的定位精度。
2、AP是各个种类的平均值,传统上我们也叫作mAP,但是在COCO Metrics中我们认为他们是一样的。
3、AP(averaged across all 10 IoU thresholds and all 80 categories)将被用来确定挑战赛的冠军,它是最重要的评价指标。
4、在COCO数据集中,小目标的数量更多,具体为:

  • 41% of objects are small (area < 322)
  • 34% are medium (322 < area < 962)
  • 24% are large (area > 962)

area的计算方法:像素点的个数
5、AR是这样计算的,每张图给出固定个数个detection,比如分别给出1个、10个、100个detection,我们分别计算这三种不同条件下的recall,取其中的最大值。然后还需要进一步在类别和IOU阈值上进行平均。
6、在计算Metrics时,一张图最多使用得分最高的100个detection参与计算,这100个detection可以属于不同的类别。
7、在评价bounding boxes和segmentation masks时,评价指标是完全一样的。但是要注意它们的IOU计算方式不同。

3. Evaluation Code

python API:https://github.com/cocodataset/cocoapi/blob/master/PythonAPI/pycocotools/cocoeval.py
在运行evaluation code前,首先要保证你的数据格式正确。
格式另外介绍

4. Analysis Code

为了更好的分析结果,COCO官方还提供了analyze()函数,它可以可视化误报的情况(false postive),以下两幅图是2015年何凯明等人使用ResNet(bbox)检测器的分析结果
(深度学习评估指标)——MS COCO detection evaluation metrics
1、C75: 在IOU=0.75条件下,recall-AP曲线下的面积
2、C50: 在IOU=0.5条件下,recall-AP曲线下的面积
3、Loc: 在IoU=.10条件下,recall-AP曲线下的面积(由于此时IoU的阈值很小,可以认为忽略了定位误差,但保证了不会重复检测——localization errors ignored, but not duplicate detections)
4、Sim: 去除相似类别的混淆后的recall-AP曲线下的面积
5、Oth: 不同类别之间的混淆后的recall-AP曲线下的面积
6、BG: 去除背景上的假正例后的recall-AP曲线下的面积
7、FN: 所有错误都去掉后的recall-AP曲线下的面积

注:关于Sim,Oth,BG,FN
每个假正例(False Positive)被分类成四种类型:
(1)Loc:定位错误(一种与正确类重叠交叉面积在0.1到0.5之间的检测方式)
(2)Sim:与相似类别混淆 ,什么是相似类别(比如狼、狗都属于犬科这种),注意人类没有相似类别
(3)Oth:不同类别之间的混淆 ,把猫认成了狗
(4)BG:对于背景上的假正例

对于上面两张图的分析: 对于overall-all-all这个图来说,IOU在0.75时的AP是0.399,如果我们去掉定位误差,那么它的AP增长到了0.628,但是如果只去掉不同类别之间的混淆,AP仅仅增长到了0.713。如果把所有的误报(FN)都去掉的话,那么AP直接增长到了0.870,剩下的0.130就是漏报了(missing detection)。总的来说,ResNet的误差主要来自于定位误差和背景上的假正

For a given detector, the code generates a total of 372 plots! There are 80 categories, 12 supercategories, and 1 overall result, for a total of 93 different settings, and the analysis is performed at 4 scales (all, small, medium, large, so 934=372 plots). The file naming is [supercategory]-[category]-[size].pdf for the 804 per-category results, overall-[supercategory]-[size].pdf for the 124 per supercategory results, and overall-all-[size].pdf for the 14 overall results. Of all the plots, typically the overall and supercategory results are of the most interest.

Note: analyze() can take significant time to run, please be patient. As such, we typically do not run this code on the evaluation server; you must run the code locally using the validation set. Finally, currently analyze() is only part of the Matlab API; Python code coming soon.