目标检测任务的性能指标通常分为两大类,一方面要判断检测是否准确,另外一方面要评估算法是否足够高,具体如下:
- 检测精度:Precision,Recall,Accuracy,F1 Score,IoU(Intersection over Union),P-R curve(Precision-Recall curve),AP(Average Precision),mAP(mean Average Precision)。
- 检测速度:前传耗时,每秒帧数FPS(Frames Per Second),浮点运算量(FLOPS floating-point operations per second)。
接下来,本文将会逐一对其解释并做比较。
首先我们给出混淆矩阵示意图(confusion matrix):T、F、P、N分别是Ture(实际为真)、False(实际为假)、Positive(预测为真)、Negative(预测为假)的缩写,其中TP和TN都是正确的预测。有了混淆矩阵,我们就可以给出相应指标的计算公式,如图右所示。
- Precision即精度,用来评估预测的准不准,又称为查准率。其看的是预测列即图中蓝色圆圈。
- Recall即召回率,用来评估预测的全不全,又称为查全率。其看的是预测行即图中红色圆圈。
- Accuracy即准确度,是用正确检测框的个数(绿色的格子)除以全部检测框(所有格子相加)所得值。
- F1 Score是Precision和Recall的调和平均。用调和平均数算法将Precision和Recall产出的结果进行平均,其取值范围为从0到1,1代表模型的输出结果最好,0代表模型的输出结果最差。
- 通常情况下,我们将与Ground Truth的IoU≥0.5的检测框叫做TP(True Positive),将与Ground Truth的IoU<0.5的检测框叫做FP(False Positive)。如果网络没有检测到已存在的Ground Truth,则会给网络分配一个FN。TN是网络没有给出左边框的除了Ground Truth外图片的其他部分,而这部分对目标检测通常没有用处,因此我们通常不考虑TN。
接着我们说明AP(Average Precision)和 mAP(mean Average Precision),其在PASCAL VOC数据集和CoCo数据集中的含义是不一样的,对于PASCAL VOC数据集而言:
- AP是网络在每个类别上的好坏。
- mAP是网络在所有类别上的好坏,即所有类别的AP加和再除以类别数。
接下来是重点:
- 为什么有要有AP:因为仅仅通过Precision或Recall无法评判目标检测网络的好坏。
- 对于PASCAL VOC数据集而言,如果IoU>0.5,则预测框为TP。如果同一目标有多个IoU>0.5的检测框,则仅将其中一个作为TP,其余为FP(这一条CoCo也适应)。
- 对于CoCo数据集而言,AP@0.5即为IoU=0.5时求出来的AP。AP@0.75即为IoU=0.75时求出来的AP。但是这个AP的含义是所有类别的AP,即PASCAL VOC中的mAP,而CoCo数据集中的mAP又有自己的定义。在CoCo数据集中,首先有一个定义:AP@[.5:.95],其含义是IoU有0.5、0.55、0.6、···、0.95一共十个值,因此可以求出10个CoCo所定义的AP(PASCAL VOC中的mAP)。最终,CoCo中所定义的mAP公式如下:
接下来用一个例子演示AP的计算
设数据集一共有5个目标,网络有10个预测,有正确的,也有错误的。根据预测的置信度对其进行排名,Rank1代表置信度最高,Rank2代表置信度最低。表中的第二列表示预测是否正确,且IoU≥0.5为正确的预测,否则为错误的预测。
- 首先第一个预测为正确预测,因为只有一个预测,那么根据Precision的计算公式,分子为1,分母也为1,则其值为1。而Recall的分子为1,分母为5,因此其值为0.2。以此类推,可以计算所有的Precision和Recall。
- Recall随着包含更多的预测而不断的增加,Precision会上下的波动。因此可以画出PR曲线如下图所示:
- AP在概念上可以视为在precision-recall曲线下方的面积。当然这个面积的计算有之前的11点法,也有2010年之后也就是现在默认的积分法(AUC曲线法)。如下图所示,其实就是补全为一个一个的矩形,然后算面积,这样算被认为更准确:
- 当然,整个AP计算表的顺序是按照置信度从上向下排列的,如果统计期间有更高的置信度,则要在中间插入。如下图所示,其中num_ob是数据集中的目标个数,GTID是标注框的索引,OB是检测是否正确(按IoU为0.5划分)。
- 另外要注意的是:以上所提到的检测框均是通过非极大值抑制后所得到的检测框。
检测速度评价指标
- 前传耗时(ms):从输入一张图像到输出结果所耗费的时间。其包括前处理耗时(图像归一化),前向推理耗时和后处理耗时(非极大值抑制)。
- 每秒帧数FPS(Frames Per Second):每秒钟能处理的图片的数量。
- 浮点运算量(FLOPS floating-point operations per second):处理一张图像所需要的浮点运算数量。
其中,前传耗时和每秒帧数与软硬件的配置有很大的关系,而浮点运算量和具体的软硬件无关,因此可以公平地比较不同算法之间的检测速度。
最后给出CoCo评价指标的含义
- AP IoU=0.5即AP@0.5,也就是PASCAL VOC数据集中的mAP(所有类别AP加和再除以类别数),因为PASCAL VOC数据集中默认的IoU为0.5。
- AP,即CoCo数据集所定义的mAP,是CoCo数据集中最中药的评价指标。其是10个AP的均值,也就是前面的那个公式:
- AP IoU=0.75即AP@0.75,是一个比较严格的指标,也就是目标的定位必须非常准。
- AP Small即按尺度划分AP,如果应用场景是小目标检测则更应关注这个值。
- AR max=xx代表每张图片最多只提供xx个检测框时的查全率。其实很多时候max=10和max=100差别不大,因为所有图片不可能都有很多目标。
- AR Small,同理AP Small。