什么是MAP? 理解目标检测模型中的性能评估

【导读】近日,机器学习工程师Tarang Shah发布一篇文章,探讨了机器学习中模型的度量指标的相关问题。本文首先介绍了机器学习中两个比较直观和常用的度量指标:精确度和召回率,然后详细讲解了目标检测领域最常用的度量指标——均值平均精度(mAP),并图解了给定边界框的正确性的度量标准IoU – 交并比。通过阅读本文,你将掌握机器学习模型,特别是目标检测领域的各种度量指标,这有助于在科研和项目中衡量你的模型。专知内容组编辑整理。

What is mAP ? Understanding the statistic of choice for comparing Object Detection models

对于使用机器学习解决的大多数常见问题,通常有多种可用的模型。每种模型都有自己的特点,会根据各种因素表现不同。

在数据集上判断模型的性能,通常称为“验证/测试”数据集 。这种性能是使用各种统计数据 - 准确度,精确度,召回率等来衡量的。选择的性能度量通常是针对您的特定应用和使用情况来定。而对于每个应用程序来说,找到可用于客观比较模型的度量标准至关重要。

在本文中,我们将讨论用于目标检测问题的最常用的度量指标 - 均值平均精度,即mAP。(对每个类的AP再求平均)

大多数时候,这些指标很容易理解和计算。例如,在二元分类中,精确度和召回率是一个简单直观的统计量。

目标检测另一方面是一个相当不同的...有趣的问题。

即使您的物体检测器在图像中检测到猫,但如果您无法找到它所在的图像中的哪个位置,它也是无用的。

由于您预测了图像中目标的发生位置 ,因此我们如何计算这个度量值是非常有趣的。

首先,让我们定义目标检测问题。

▌目标检测问题



“目标检测问题”是指:

给定一个图像,找到其中的目标,找到他们的位置和并且对目标进行分类。

目标检测模型通常是在一组固定的类上进行训练的,所以模型只能定位和分类图像中的那些类。

此外,目标的位置通常是边界矩形的形式。所以,目标检测涉及图像中目标的位置信息和对目标进行分类

图1 图像处理几个经典问题示意图

如下所述,均值平均精度(Mean Average Precision),特别适用于我们预测目标与类的位置的算法。 因此,从图1中,我们可以看出它对于评估模型定位性能,目标检测模型性能和分割模型性能是有用的。

▌评估目标检测模型



为什么选择mAP?

目标检测问题中的每个图像都可能具有不同类别的不同目标。 如前所述,模型的分类和定位都需要进行评估。 因此,在图像分类问题中使用的精度的标准度量不能直接应用于此。 这就是mAP(均值平均精确度)出现的地方。 我希望在这篇文章的最后,你将能够理解它的含义和意义。

关于Ground Truth

对于任何算法,度量总是与数据的真实值(Ground Truth)进行比较。 我们只知道训练,验证和测试数据集的Ground Truth信息。

对于物体检测问题,Ground Truth包括图像,图像中目标的类别以及该图像中每个目标的边界框。

一个例子:

图显示实际人手工标注的ground truth

我们给了一个真实的图像(JPG,PNG等)和其他标注信息作为文本(边界框坐标(X,Y,宽度和高度)和类),其中上图的红色框和文本标签仅仅是为了更好地理解,手工标注可视化显示。

所以对于这个特定的例子,我们的模型在训练中得到的是这个

和3组数字定义的ground truth (让我们假设这个图像是1000x800px,所有这些坐标都是构建在像素层面上的)

现在,让我们看看如何计算mAP。

我将在另一篇文章中介绍各种目标检测算法,方法和性能。 现在,让我们假设我们有一个已经训练好的模型,我们正在验证集上评估它的结果。

▌计算mAP(Calculating the mAP)



假设原始图像和真实的标注信息( ground truth)如上所述。 训练和验证数据以相同的方式都进行了标注。

该模型将返回大量的预测,但是在这些模型中,其中大多数都具有非常低的置信度分数,因此我们只考虑高于某个置信度分数的预测信息。

我们通过我们的模型运行原始图像,在置信阈值确定之后,下图是目标检测算法返回的带有边框的图像区域(bounding boxes)。

现在,由于我们人类就是目标检测的专家,所以我们可以说上面这些检测区域是正确的。 但是我们如何在实际中量化呢?

我们首先需要知道每个检测的正确性。 告诉我们一个给定的边界框的正确性的度量标准是IoU – 交并比(检测评价函数), 这是一个非常简单的视觉量。

有人会说这个名词可以意会,但是我们需要更好的解释。 我将以简短的方式解释IoU,对于那些真正想要详细解释的人,Adrian Rosebrock有一篇很好的文章,你可以参考。

https://www.pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/

IoU

交并比是预测的框和真实ground truth的框的交集和并集之间的比例。 这个数据也被称为Jaccard指数,并于20世纪初由Paul Jaccard首次发表。

为了得到交集和并集值,我们首先将预测框叠加在ground truth实际框的上面。 (见图)

现在对于每个类,与预测框和真实框重叠的区域是交集区域,并且两者的总面积是并集框。

图是马的一个IoU示意图

在上面的目标马的交集和联合看起来是这样的,

图上两者的交集蛮大的

交集包括重叠区域(青色区域),并集包括橙色和青色区域。

IoU将会像这样计算

识别正确的检测和计算精度

使用IoU,我们现在必须确定检测是否正确。 最常用的阈值是0.5 - 如果IoU> 0.5,则认为是真实的检测(true detection),否则认为是错误的检测(false detection)。

我们现在计算模型得到的每个检测框(置信度阈值后)的IoU值。 使用这个值和我们的IoU阈值(比如0.5)比较,我们计算图像中每个类的正确检测次数(A)。

现在,对于每个图像,我们都有ground truth的数据(即知道每一张图像的真实目标信息),它告诉我们该图像中给定类别的实际目标(B)的数量。 而且我们已经计算了正确预测的数量(A)(True possitive)。 因此,我们现在可以使用这个公式来计算该类模型的精度(A / B)。

公式是给定一张图像的类别C的Precision = 图像的正确预测(True Positives)的数量除以在图像上这一类的总的目标数量。

对于给定的类,我们能够为验证集中的每张图像计算此值。 假设我们在验证集中有100个图像,并且我们知道每个图像都有其中的所有类(基于ground truth)。

现在我们将有100个精度值(每个图像1个值)。 让我们取这100个值的平均值。 这个平均值被称为该类的平均精度。

一个类C的平均精度= 在验证集上所有图像对于类C的精度值的和 / 有类C这个目标的所有图像的数量

现在,我们整个集合中有20个类。 对于每个类别,我们都会遵循相同的方法来计算IoU - >精度 - >平均精度。 所以我们现在有20个不同的平均精度值。 使用这些平均精度的值,我们可以轻松地判断任何给定类别的模型的性能。

为了用一个单一的数字来表示一个模型的表现(一个度量来统一它们),我们取所有类的平均精度值的平均值。 这个新的价值,是我们的均值平均精度 - MAP! (非常有创意地命名,我必须说)

MAP =所有类别的平均精度求和除以所有类别

所以,均值的平均精度就是数据集中所有类的平均精度的平均值。

当我们比较MAP值时要记住一些重要的点

  • MAP总是在固定数据集上计算。
  • 它不作为量化模型输出的绝对度量,但它是一个相当好的相对度量。当我们在流行的公共数据集上计算这个度量时,这个度量可以很容易地用来比较不同目标检测方法。
  • 根据训练数据中类的分布情况,平均精确度值可能会因某些类别(具有良好的训练数据)而非常高(对于具有较少/较差数据的类别)而言非常低。所以你的MAP可能是适中的,但是你的模型可能对某些类非常好,对某些类非常不好。因此,建议在分析模型结果的同时查看各个类的平均精度。这些值也可以作为我们是不是需要添加更多训练样本的一个依据。

原文载于:

http://tarangshah.com/blog/2018-01-27/what-is-map-understanding-the-statistic-of-choice-for-comparing-object-detection-models/

参考链接:

https://towardsdatascience.com/what-is-map-understanding-the-statistic-of-choice-for-comparing-object-detection-models-1ea4f67a9dbd

原文发布于微信公众号 - 专知(Quan_Zhuanzhi)

原文发表时间:2018-02-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏红色石头的机器学习之路

Coursera吴恩达《神经网络与深度学习》课程笔记(2)-- 神经网络基础之逻辑回归

上节课我们主要对深度学习(Deep Learning)的概念做了简要的概述。我们先从房价预测的例子出发,建立了标准的神经网络(Neural Network)模型...

27900
来自专栏计算机视觉战队

通过部分感知深度卷积网络进行人脸特征点定位

人脸特征点定位是一个非常具有挑战性的研究课题。由于纹理和形状的不同,不同人脸特征点的定位精度差异很大。但大多数现有的方法不能考虑特征点的部分位置。 为了解决这个...

32760
来自专栏机器学习算法工程师

AdaBoost 算法原理及推导

AdaBoost(Adaptive Boosting):自适应提升方法。 1、AdaBoost算法介绍 AdaBoost是Boosting方法中最优代表性的提升...

82380
来自专栏磐创AI技术团队的专栏

Tensorflow系列专题(四):神经网络篇之前馈神经网络综述

从本章起,我们将正式开始介绍神经网络模型,以及学习如何使用TensorFlow实现深度学习算法。人工神经网络(简称神经网络)在一定程度上受到了生物学的启发,期望...

13130
来自专栏郭耀华‘s Blog

平均精度均值(mAP)——目标检测模型性能统计量

  在机器学习领域,对于大多数常见问题,通常会有多个模型可供选择。当然,每个模型会有自己的特性,并会受到不同因素的影响而表现不同。

11420
来自专栏SIGAI学习与实践平台

用一张图理解SVM的脉络

SVM在之前的很长一段时间内是性能最好的分类器,它有严密而优美的数学基础作为支撑。在各种机器学习算法中,它是最不易理解的算法之一,要真正掌握它的原理有一定的难度...

1.2K10
来自专栏人工智能头条

什么是mAP ? 比较目标检测模型性能的统计量,了解一下?

16340
来自专栏专知

深入广义线性模型:分类和回归

【导读】本文来自AI科学家Semih Akbayrak的一篇博文,文章主要讨论了广义的线性模型,包括:监督学习中的分类和回归两类问题。虽然关于该类问题的介绍文章...

52360
来自专栏机器学习算法与Python学习

干货 | 深度学习之损失函数与激活函数的选择

关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第二 【Python】:排名第三 【算法】:排名第四 前言 在深度神经网络(DNN)反向传...

64860
来自专栏机器学习算法与Python学习

干货 | 卷积神经网络入门这一篇就够了

【机器学习算法】:排名第一 【机器学习】:排名第一 【Python】:排名第三 【算法】:排名第四 先明确一点就是,Deep Learning是全部深度学习算法...

408100

扫码关注云+社区

领取腾讯云代金券