目标检测性能指标
(1)代表框中。
学习视频:
目标检测mAP计算以及coco评价标准_哔哩哔哩_bilibili
4.14、目标检测精度和召回计算_哔哩哔哩_bilibili
4.15、目标检测PR曲线和MAP指标_哔哩哔哩_bilibili
目录
1.前置知识
1.1 交并比IOU

1.2 置信度
这里我们以YOLO的中的置信度为例,YOLO模型的输出中包含置信度confidence这一项,置信度得分可以有效帮助我们筛选检测较差的结果。如图中预测bbox的右上角的数值即为置信度得分。置信的得分是0-1之间的数值。

上述的置信度很多人认为是该类别的概率值,例如上图的蓝色框的0.96代表检测到鸡的概率,紫色框的0.95代表检测到篮球的概率,但这样的答案是片面的。作者在原论文中提到了两种情况下的置信度,一种是是否有物体的置信度,另一种是在有物体的前提下,检测的不同类别物体的置信度。
置信度作用定义有两重:
(1)代表框中是否有物体的置信度;即bbox与真实框之间的IOU交并比:
P(object)表示该bbox框对应的网格是否为Ground Truth的中心点区域。非0即1(2) 类别置信度,即在bbox框有物体的前提下,对应类别的置信度:
而YOLO模型输出的即为类别置信度。由类别置信度的计算公式可知,最终的类别置信度值既包含该框是否包含物体的概率值,也包含物体情况下对于类别的概率值。
2.性能指标
2.1 目标检测查准率和召回率计算
目标检测的检测结果怎么才算检测正确?
(1)IOU大于指定阈值
(2)类别正确
(3)confidence大于指定阈值

TP:意思是正确的正类,就是将一个我们关注的目标检测为我们关注的目标
FP :意思是错误的正类,就是将一个原本不是我们关注的目标检测成我们关注的目标;
FN: 意思是错误的反类,就是将一个我们关注的目标检测为错误检测为反例,这里需要注意的是漏检的也属于 FN 中,本质上漏检就是将我们关注的目标检测为背景因此不显示出来。

对于上图,我们以检测篮球为正例(此时只关注篮球,其他类别不关注)
黑色框为篮球的真实框,紫色框为预测框,由上图可以看出图中4个篮球的bbox和真实框的IOU均大于0.5,且置信度都大于0.5,所以此时TP=4,FP=0,FN=0。即4个我们关注的目标都被正确检测为我们关注的目标。
上述情况为最理想的情况,即我们关注的目标全部检测正确,那么在不理想的情况下怎么确定FP和FN呢?我们看下一个例子
如上图所示,仍然是将篮球视为正类。
(1)对于TP,图中真正检测到篮球的只有两个,即第一张和第四张图片,因此TP=2
(2)对于FP,图中有一个背景(图1)、鸡头(图2)、还有鸡爪(图4)检测为篮球,很显然是错误检测,因此 FP=3,即有三个bbox将我们不关注的目标检测为我们关注的目标
(3)对于FN,图中有一个篮球错误检测为鸡类别(图2),有一个篮球漏检测(图3,即把篮球检测成背景了),因此 FN=2,即有三个bbox将我们关注的目标检测为我们不关注的目标
(4)对于TN,目标检测性能指标的计算不需要用到TN,所以我们不讨论
所以将篮球视为正例的检测结果:

为了加深印象,我们将鸡视为正例,计算其性能指标

如上图所示,将鸡视为我们关注的类别,其他类别不关注
(1)对于TP,图1,3,4真正检测到鸡,所以TP=3
(2)对于FP,图2错误将篮球检测为鸡,图3错误将背景检测为鸡,所以FP=2
(3)对于FN,图2漏检,将图2的鸡检测为背景了,所以FN=1
所以将鸡视为正例的检测结果为:

2.2 目标检测PR曲线和mAP指标
2.2.1 PR曲线
不同的IOU阈值和置信度阈值可以得出不同的TP、FP、FN。那么即可以得出不同的Precision和Recall,由此就可以绘制出PR曲线,同时计算出AP评价指标和mAP评价指标。
下面我们来看一个具体的例子,看对于某一个类别其PR曲线如何绘制
首先固定IOU阈值为0.5,利用网络模型来检测多张图像中的人、球、鸡这三种目标。已知,这多张图片中一共有10个人、8个球、7只鸡;通过网络的检测,检测结果如下

注意:
(1)每一种类别下,我们需要按照预测出来的bbox的置信度降序排序
(2) 上面表格中的“结果对错”如果为对,则TP+1,即该bbox将我们关注的类别正确检测为我们关注的类别;如果为错,则FP+1,即该bbox将我们不关注的类别错误检测为我们关注的类别
以检测人为例,计算所有置信度下的 TP、FP、FN+TP(FN+TP=10,即为人的真实框数量)在目标检测中小于置信度阈值的检测框都会被过滤掉,其中就可能包含正确的检测框,这就会导致检测框的漏检。
首先,我们要计算出在每个置信度下的TP和FP,以及FN+TP(已知FN+TP=10),因为检测为人的bbox有14个,而且每个bbox的置信度值不同,所以我们需要计算14个置信度情况下的TP和FP
第一轮:把置信度拉到0.99,只看第一个检测结果,计算出一组Precision和Recall

TP=1,FP=0,又因为TP+FN=10,所以FN=9,因此,在置信度为0.99的情况下,P和R为:
第二轮:把置信度拉到0.95,只看前两个检测结果,计算出一组Precision和Recall

TP=2,FP=0,又因为TP+FN=10,所以FN=8,因此,在置信度为0.95的情况下,P和R为:
第三轮:把置信度拉到0.91,只看前三个检测结果,计算出一组Precision和Recall

TP=2,FP=1(因为第3个bbox的检测结果为错),又因为TP+FN=10,所以FN=8,因此,在置信度为0.91的情况下,P和R为:
以此类推计算到第14轮,每种置信度下的P和R结果如下

然后将Recall作为X轴,Precision作为Y轴,绘制出P-R曲线图,这样即画出了在IOU阈值为0.5情况下网络模型检测人的P-R曲线,如下图所示

2.2.2 mAP
mAP即为所有类别AP值之和的平均。那AP(Average Precision)是什么呢?前面提到,我们已经得到模型检测某个类别的P-R曲线了,那么该P-R曲线的面积即为该类别的AP值,通常来说就是一个积分:

但是一般不会直接去这么算,会简化一下做一个近似计算:

上述简化公式看不懂没关系,我们举一个具体的例子
这个是原先的P-R曲线图,可以看到有很多地方不好计算面积,利用上述简化公式之后,曲线图如下,红色部分即为转化之后的P-R曲线图,显然计算AP会更加方便
综上,mAP(mean average precision)这个就很清晰了,就是计算不同类别的 AP 值后相加求平均值即可计算出 mAP,如本例子计算人、鸡、球的检测结果的 AP 值后相加除以 3 后就能得到 mAP 值。
补充:
(1)在一些论文中会看到mAP@0.5等性能指标,该指标就是表示在IO阈值为0.5的情况下的mAP值
(2)COCO数据集的AP和 mAP是一个概念,都是不同类别的AP值之和求平均,非但如此,COCO 中的AP还使用了不同的10个IOU得到的结果进行了平均,IOU取值范围 0.5 到 0.95,取值间隔 0.05。所以无需纠结到底是AP还是 mAP,最终还是要看具体的实现是怎样。
2.3 模型检测速度评价指标
检测速度很好理解,简单的说就是一秒钟该模型可以检测多少张图片,使用的指标是FPS。不同的目标检测技术会有不同mAP和检测速度。
需要注意的是FPS通常与mAP是互相制衡的。如果要想在模型的mAP上有提升,那必须要牺牲一点FPS;如果要在FPS上有提升,那必须牺牲一点mAP
以下是作者在YOLOv1-YOLOv3中作的一些表格

YOLOv1

YOLOv2

YOLOv3(inference time是推理时间)
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐








所有评论(0)