【其他】【思考】目标检测的目标以及mAp(0)

一、简介

目标检测(object detection)是一个CV中一个经典的问题,相对于物体识别任务而言,它更加的复杂,应用也更加的广泛。目标检测(以下指general object detection)的任务是在场景中检测出给定的一组类别中所有的物体,这个类别组通常包含很多的类别,例如20类,为的是体现出检测任务的普适性(general)。检测分为两步,第一是对物体的位置(location)以及其大小进行明确,也就是给出b-box(bounding box),第二是对物体进行识别,判断其类别,也就是给出confidence。所以,我们可以从几个方面来对进行目标检测的检测器进行评价:

  1. 它是否将所有给定类别的物体都检测出来了,有没有漏检,更进一步,有没有冗余的检测,对于同一物体,有多个检测框与之对应。
  2. 它定位的准不准,它对物体大小的判断是否合适,与ground truth相比如何。
  3. 它识别的效果怎么样,识别的准确性如何。

 

二、明确任务

下面,我们来详细明确一下任务。

1.Ground Truth

Ground Truth是实现给定的正确结果。它标注了数据集中b-box,以及b-box中物体的类别。物体的类别数是事先给定的,比如说VOC2012数据集中就含有20个类别,在YOLO9000,作者使用了具有9000个以上类别的数据集,已经与"general"无异。

对于每一张图片,Ground Truth给出了其中所有给定类别中的物体的b-box以及对应的label。在VOC2012中,b-box是通过(xmin, ymin, xmax, ymax)来确定的,标定了b-box的top-left点以及bottom-right点。b-box也可以通过(x, y, w, h)来进行描述,x,y描述中心位置,w,h描述b-bow的宽和高。label就是物体的种类。

所以,一张图片中的Ground Truth会有如下形式:

图片2007_000027

pictureframe 176 206 225 266
heater 170 156 350 240
pottedplant 272 190 316 259
book 439 157 556 241
book 437 246 518 351
book 515 306 595 375
book 407 386 531 476
book 544 419 621 476
book 609 297 636 392
coffeetable 172 251 406 476
coffeetable 2 236 102 395
tvmonitor 2 10 173 238
bookcase 395 2 639 470
doll 482 83 515 107
vase 276 233 304 259

这张图片包含了15个物体,每一行描述了物体的(lable, xmin, ymin, xmax, ymax),是一个五元组。得到的b-box称为GT b-box(Ground Truth bounding box)。

2.Detection Result

Detection Result是我们的检测器给出的检测结果。对于一张图片,检测器给出了多个b-box以及b-box对应的confidence。confidence是检测对物体种类的预测结果,值为可能性大小。在DNN模型中,我们的输出是一个概率向量,描述了该b-box中所含物体属于各个类别的可能性大小,confidence就可以取其中最大的那个概率值,预测label为对应的物体。所以,检测结果具有如下格式:

图片2007_000027

tvmonitor 0.471781 0 13 174 244
cup 0.414941 274 226 301 265
book 0.460851 429 219 528 247
bottle 0.287150 336 231 376 305
chair 0.292345 0 199 88 436
book 0.269833 433 260 506 336
book 0.462608 518 314 603 369
book 0.298196 592 310 634 388
book 0.382881 403 384 517 461
book 0.369369 405 429 519 470
pottedplant 0.297364 259 183 304 239
pottedplant 0.510713 279 178 340 248
pictureframe 0.261096 187 206 237 258
book 0.272826 433 272 499 341
book 0.619459 413 390 515 459

 这张图片中预测出了15个物体,与上面的Ground Truth比对可以发现检测出来了一些多余的book,而doll则没有检测出来。输出的结果是一个6元组(label, confidence, xmin, ymin, xmax, ymax)。得到的b-box称为DR b-box(detection result bounding box)。

3.任务

检测器对每一张图片给出了detection result,我们也知道了ground truth,任务当然就是根据这些信息去衡量检测器的好坏啦。

 

三、分析目标

首先,我们需要一种方式去衡量定位的准确性。

1.空间准确率

使用IoU(Intersection over Union)可以做到这一点。对于一个Ground Truth b-box(GT b-box) B1,假如B2是检测器得到的关于B1中物体的一个b-box(DR b-box),IoU就是\frac{|B_1 \cap B_2|}{|B_1 \cup B_2|},它在[0, 1]之间,它既度量了我们位置估计的准确性,也度量了b-box大小的恰当程度。但是我们如何能够得知给定的DR b-box对应哪个GT b-box中的物体呢?

方法1:对于DR b-box B2, 我们取与其IoU最大的GT b-box作为对应的GT b-box。

方法2:对于GT b-box B1, 我们取与其IoU最大的DR b-box作为对应的DR b-box。

这两种方法都有缺陷。方法1,可能出现多个GT b-box与之对应,这说明检测器得出的DR b-box有冗余。如下图:

B1 和 B2 都算作了GT的检测框。一种方法是:在GT b-box被分配给了某一个DR b-box后,就将其剔除出匹配备用列表,不再参与匹配。但这样也有问题,假设有一个DR b-box D1,我们有GT b-box G1与之匹配,但是D1事实上是一个较差的检测框,而后面有一个很好的检测框DR b-box D2,它是检测器对于GT b-box G1的一个很好的检测框,而由于G1已经被剔除了,D2便不能与G1匹配,而是与某个G2匹配,它也成为了一个较差的检测框,如下图:

而如果我们颠倒一下检测顺序,那个D2匹配G1,D1匹配G2,则D1仍然较差,但是D2是一个较好的检测框。所以,这种改进方法会受到DR b-box检测顺序的影响,我们需要一种确定检测顺序的方法。

方法2也有缺陷,可能会有两个GT b-box选中了统一个DR b-box作为对应的检测框,这通常发生在检测器给出的检测框过少或者是GT b-box之间有较大重叠的时候,如下图:

婴儿的GT b-box和床的GT b-box重合了,它们都选取了D1作为对应。

我们可以将方法1和方法2结合,得到以下的问题:

设{G1, ... , Gm}和{D1, ..., Dn}分别为一张图片中的GT和DR,如果m!=n,我们可以通过添加零检测框来使得m=n。

得到以下的匹配问题:\max_{M}{\sum_{i=1}^n\sum_{j=1}^n{IoU(G_i, D_j)M_{ij}}}\\ s.t. \sum_iM_{ij}=\sum_jM{ij}=1, M_{ij}\in\{0,1\},其中Mij = 1代表Gi和Dj匹配,而且这种匹配是一一的。

在求出匹配之后,上面的匹配问题的目标函数值就作为该检测器的空间准确程度,为了消除b-box数量的影响,我们将其除以n,也就是得到IoU的平均值,作为位置准确的度量。///我们接下来考虑一下这种度量是否是好的。

GT b-box之间可能有三种位置关系:相交,不相交,包含。DR b-box的数量n和GT b-box的数量m有:m<n,m=n,m>n。

如果m<n,说明检测框有冗余,由于我们是对整体的IoU和进行考虑,所以有m个最优(总体上)的检测框与之匹配,那会不会出现这种情况,///

我们之所以这么执着于两者之间的匹配,一方面是出于我们想度量空间准确性,另一方面是为了后面分类准确率的判断。对于一个检测器的输出,我们只知道confidence和b-box,我们并不知道它提出的一个b-box究竟是对哪一个GT b-box的估计,我们只能够人为的去猜测这种关系,(或许有什么方法能够让检测器自己告诉我们它提出的DR b-box究竟对应哪一个GT b-box呢?),并将猜测视为它真实的想法。

2.分类准确率

对于已经匹配了GT b-box的DR b-box,我们通过比较他们的标签,就能够得到分类的准确率了。

3.TP、TN、FP、FN

3.1将定位与识别统一

如果DR b-box的数量更少,那么会存在GT b-box没有匹配上,这些GT b-box就是False Negative;如果GT b-box的数量更少,那么会存在冗余的DR b-box,那些匹配失败的DR b-box是False Positive。

在目标检测任务中,Positive指的是检测器认为这里(loc)有这种类别(label)的物体,是集定位和识别为一体的概念,对应于DR b-box。Negative就是检测器认为这里(loc)没有某种类别(lable)的物体。正样例就是GT b-box们,而负样例与Negative的概念类似,在训练集中这里(loc)没有某种类别(label)的物体。而TP、FP、FN、TN这四个概念指的是检测器判断的情况,是一种判断情况,不是b-box上的概念,这一点可以详细看:https://blog.csdn.net/u011956147/article/details/78967145

Ture Positive就是检测器认为loc有一个叫label的物体,实际上的确存在,可以用一种简单的阈值方法去判断:如果一个DR b-box与其匹配的GT b-box label相同并且IoU足够大,这种情况视为Ture Positive。

False Positive就是检测器认为loc有一个叫label的物体,但实际上没有,可以用一种简单的阈值方法去判断:如果一个DR b-box与其匹配的label不同或者IoU过小,该DR b-box视为False Positive。

Negative则较难定义,在判断是否的问题中,Negative指的是判断器判断为“否”的那些样本,在目标检测问题中,检测器只给出了它认为有物体的地方在哪里,而没有给出否定的方面,我们可以给出一些定义,Negative一方面就来源于定位上的否定:与DR b-box相差甚远的其他位置,另一方面来源于识别上的否定:它给出了一个物体的confidence,那么其他物体就是它的类别否定。我们也可以提出一个阈值方法来判断False Negative:

False Negative就是检测器认为loc没有标为label的物体,但实际上存在。我们对于物体存在与否是通过GT b-box来得知的,所以我们要通过GT b-box来判断。如果一个GT b-box与所有的DR b-box,IoU值小于某个阈值,或者虽然存在某个DR b-box使得IoU够大,但是label不同,那么这种情况就是False Negative。

Ture Negative指的是检测器认为loc没有标为label的物体,实际上也的确没有,由于我们只可以通过GT b-box来得知哪个地方有哪个物体,而无法得知哪个地方没有哪个物体,所以这种情况我们无法计算。

我们可以总结得到下表:

 TrueFalse
PositiveDR与其匹配的GT label相同并且IoU足够大DR与其匹配的GT label不同或者IoU过小
Negative无法判断GT与其匹配的DR IoU过小或者label不同

TP + FP是检测器认为的Positive样本,也就是DR b-box的数量,TP + FN是所有的正实例,也就是GT b-box的数量。假如GT的数量大于DR的数量的话,那么一定会出现FN;假如GT的数量小于DR的数量的话,那么一定会出现FP,这时FP与FN之间的区别。

3.2将定位与识别分开

我们也可以将TP、...这几个概念在定位与识别上分开来考虑,可以得到下面的表:

定位:

 TrueFalse
PositiveDR与其匹配的GT IoU足够大DR与其匹配的GT IoU过小
Negative无法判断GT与其匹配的DR IoU过小

识别:

 TrueFalse
PositiveDR与其匹配的GT label相同DR与其匹配的GT label不同
Negative无法判断

GT与其匹配的DR label不同

 

以上就是 目标检测的目标以及mAp 的一些介绍和思考,在接下来,我会对一些常见的评价标准进行详细介绍。

参考:

下面的这个文章中对于COCO中的评价方式进行了十分详尽的解析,写的也很好:

https://zhuanlan.zhihu.com/p/56899189

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值