在使用机器学习解决实际问题时,通常有很多模型可用。每个模型都有自己的怪癖(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 计算 mAP 的准备工作
目标检测时,模型返回很多的 predictions,但是其中大多数有非常低的 confidence,因此我们只考虑 confidence 大于指定阈值的 predictions。
带 bbox 的 image:
因为人类是目标检测专家,所以我们能够说这些检测是正确的,但是我们该怎么量化评估这些预测呢?
我们首先需要去判断每个预测的正确性。(Intersection over Union)IoU 可以告诉我们每个预测 bbox 的正确性。IoU 是一个非常简单、可视化评价指标。
从 IoU 的字面来看,其的意思显而易见,但是我们需要一个更加详细的解释。我将用一个简单的形式解释 IoU,如果想看更加详细的解释,Adrian Rosebrock 有一篇文章你可以参考。
2.3.1 什么是 IoU?
预测的边框 和 真实的边框 的交集和并集的比例 称为 IoU(Intersect