[实例分割/目标检测评价指标] mAP

目标检测/实例分割任务

  • 输入:单张图像
  • 输出:边界框(x, y, w, h)+置信度

IOU, TP, FP, FN

  • IOU:预测框与Ground Truth(GT)的交并比

  • TP:预测框中与对应的GT边界框中置信度大于置信度阈值且Ground Truth对应的预测框中最大的

  • FP:预测框集合-TP

  • FN:GT-TP

Precision, Recall, PR-curve

  • precision = #TP/#预测框
  • recall = #TP/#GT
  • PR-curve: precision随着recall增加的变化曲线

AP

为了计算所有类别的mAP,先要计算每个类别的AP

设定

假定数据有Image 1和Image 2两张图片,预测框为:P1、P2、P3、P4,IOU阈值设为0.5
在这里插入图片描述
该数据集GT、预测框的置信度、预测框与对应GT的IOU如下
在这里插入图片描述

按置信度排序

将以上预测结果按其置信度排序,得到如下表格
在这里插入图片描述
从上到下,计算累计precision和recall

  • 累计precision = 累计TP/累计预测框
  • 累计recall=累计TP/#GT

画P-R曲线

不难看出,从上到下累计recall一定是单调非减的(因为累计TP是单调非减的),根据累计recall和累计precision即可得到P-R curve

AP计算的是等间隔recall(如[0:.01:1])下,precision的平均值,描述的是不同recall下precision的总体情况

需要注意的是,这里的precision是插值得到的请添加图片描述

mAP

通过计算得到了每个类别下的AP,各个类别的AP的均值即为mAP

mAP(COCO)

  • COCO使用[0:.01:1] 作为recall的阈值
  • COCO使用[0.5:.05:0.95] 作为IOU的阈值,即
  • COCO计算流程:
    • 计算每类下不同IOU阈值AP的均值

    • 计算所有类别的平均值

可以说,AP是precision的平均(所有recall阈值)的平均(所有IOU阈值)的平均(所有类别)

讨论

优点

  • 目标检测/实例分割是比较复杂的任务,mAP用一个数值就刻画了模型性能的好坏

缺点

  • 对于实例分割任务,mAP没有体现分割mask质量的好坏

参考
[1] https://jonathan-hui.medium.com/map-mean-average-precision-for-object-detection-45c121a31173
[2] https://kharshit.github.io/blog/2019/09/20/evaluation-metrics-for-object-detection-and-segmentation
[3] https://towardsdatascience.com/map-mean-average-precision-might-confuse-you-5956f1bfa9e2
[4] https://manalelaidouni.github.io/Evaluating-Object-Detection-Models-Guide-to-Performance-Metrics.html

版权声明:本文为CSDN博主「notzy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_17030183/article/details/122677147

notzy

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

【目标检测】YOLO、SSD、CornerNet原理介绍

目标检测是计算机视觉中比较简单的任务,用来在一张图篇中找到某些特定的物体,目标检测不仅要求我们识别这些物体的种类,同时要求我们标出这些物体的位置。其中类别是离散数据,位置是连续数据。 目

目标检测篇之---YOLO系列

YOLO系列 首先先说一下目标检测之one-stage和two-stage网络是什么意思?有什么区别? 刚开始看目标检测的时候总能看见单阶段(one-stage)和两阶段(

分享 | 物体检测和数据集

因为最近学习任务比较紧(但也不妨碍元旦摆烂三天),所以中间有几个实战Kaggle比赛就跳过了,等以后有时间再回头来看看。物体检测和数据集这一节花了有一天的时间,一直有一个bug困扰,后来改了代码把box