在使用机器学习解决实际问题时,通常有很多模型可用。每个模型都有自己的怪癖(quirks),并且基于各种因素,性能会有所不同。
模型性能的评定都是在某个数据集上进行的,通常这个数据集被称为 “validation 或 test” 数据集。模型性能的评价常用的指标有:accuracy、precision、recall等。这些指标的选择需要根据应用场景具体而定。对于特定应用,使用合适的评价指标来客观地比较不同模型的性能是非常重要的。
在本篇,我们将讨论目标检测问题中常用的评价指标 —– Mean Average Precision (mAP)。
一般来说,评价指标是很容易理解、计算的。例如,在二分类任务中,precision 和 recall 是最简单、最容易想到的评价指标。但目标检测与二分类任务不同。目标检测不仅需要检测有没有目标,还需要检测在哪里,什么类别。因此怎么来定量地评价目标检测系统的性能变得有点难度。
1. 目标检测问题
要定量地评估一个目标检测系统的性能,那你首先得知道目标检测系统到底解决的问题是什么?
目标检测问题:给定一张图像,找出其中有哪些物体,给出物体的位置,以及类别(原文:Given an image, find the objects in it, locate their position and classify them)。
目标检测模型训练使用的数据集一般只有固定数量的类别,所以模型只能定位、分类图像中特定类别的物体。另外,目标检测系统一般采用 矩形边框 表示目标的位置。
下面的图片展示了 “分类”、“分类+定位”、“目标检测”、“实例分割” 四个任务的目的及区别。
mAP 一般用于目标检测算法(需要同时检出 目标的位置、类别)。当然,mAP 对于 “分类+定位”、“实例分割” 任务的模型的评估也非常有用。
2. 目标检测模型的评估
2.1 为什么选择 mAP ?
在目标检测中,每张图片可能包含多个类别的多个目标。因此,目标检测模型的评价需要同时评价模型的 定位、分类效果。
因此,在图像分类问题中常使用的 precision 指标不能直接用于目标检测。这时 mAP 进入了人们的视野。我们希望你看完本篇文章后,知道 “什么是 mAP” 及 “其代表的实际意义”。
2.2 什么是 Ground Truth?
对于任何算法,评估的过程其实就是 评估预测值与真实值的差距。我们只知道 训练、验证、测试集上的真实值(ground truth)。
对于目标检测问题,ground truth 包括 “image”、“classes of the objects in it” 及 “true bounding boxes of each of the objects in that image”。
一个例子:
我们有实际的 image 及 annotations(bbox(x,y,w,h) 和 class)。
对这个特定的例子,我们的模型在训练过程中可以利用的信息有:
以及三组标记(假设图像的尺寸为 1000×800px,并且所有的位置是像素级别的)。
类别 |
x 坐标 |
y 坐标 |
边框宽度 |
边框高度 |
Dog |
100 |
600 |
150 |
100 |
Horse |
700 |
300 |
200 |
250 |
Person |
400 |
400 |
100 |
500 |
2.3 计算 m