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

本文深入解析COCO数据集中的评估指标,包括平均精度(AP)和平均召回率(AR)的计算方法,以及各类目标大小的定义。通过实例分析,如ResNet检测器的表现,揭示定位误差、类别混淆和背景假正例对检测性能的影响。

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

1、概述:

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

2、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)检测器的分析结果
在这里插入图片描述
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.

当在 `/home/user/zyj/mmdetection/mmdet/evaluation/metrics/coco_metric.py` 文件的 `compute_metrics` 函数第465行出现 `'The testing results of the whole dataset is empty'` 错误时,通常意味着模型在测试数据集上没有产生任何有效的检测结果。以下是一些可能的解决办法: ### 1. 检查数据集 - **数据路径**:要保证数据集的路径配置无误,可查看配置文件里数据集的路径是否正确。 ```python # 示例配置文件中的数据集路径设置 data = dict( test=dict( ann_file='path/to/annotations.json', img_prefix='path/to/images/' ) ) ``` - **数据完整性**:确认数据集完整,没有损坏或者缺失的图像与标注文件。 - **标注格式**:确保标注文件格式符合要求,例如COCO格式的标注文件需要包含正确的类别、边界框等信息。 ### 2. 检查模型配置 - **模型权重**:保证使用的模型权重文件正确且已成功加载。可在代码中添加打印语句来确认权重是否加载成功。 ```python import torch model = ... # 加载模型 checkpoint = torch.load('path/to/checkpoint.pth') model.load_state_dict(checkpoint['state_dict']) print("Model weights loaded successfully.") ``` - **类别数量**:确保模型配置文件中的类别数量和数据集中的类别数量一致。 ### 3. 检查推理过程 - **推理参数**:检查推理过程中的参数设置,例如置信度阈值、NMS阈值等。如果阈值设置过高,可能会过滤掉所有的检测结果。 ```python # 示例推理参数设置 test_cfg = dict( nms=dict(type='nms', iou_threshold=0.5), min_bbox_size=0, score_thr=0.05 # 适当降低置信度阈值 ) ``` - **推理代码**:检查推理代码是否正确,确保模型能够正常进行前向传播并输出检测结果。 ### 4. 检查环境配置 - **依赖库版本**:确保使用的深度学习框架和相关依赖库的版本兼容。可以尝试更新或者回退某些库的版本。 - **GPU使用**:如果使用GPU进行推理,确保GPU驱动、CUDA和cuDNN等配置正确,并且GPU内存足够。 ### 5. 调试和日志记录 - **打印中间结果**:在推理过程中添加打印语句,输出中间结果,例如模型的输入、输出、检测结果等,以便定位问题。 ```python # 示例打印中间结果 outputs = model(inputs) print("Model outputs:", outputs) ``` - **查看日志文件**:查看训练和推理过程中的日志文件,可能会有更多的错误信息或者警告提示。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值