1. 目标检测中两个重要的概念:IOU和NMS
1, 具体来说,它是两边界框相交部分面积与相并部分面积之比,如下所示:
2.原理
这里详细解释一下计算的原理:
一般来说我们给定框的坐标有两种形式:[x,y,w,h]
(或者说是[x,y,h,w]
原理一样) 其中这里的x,y代表框的中心坐标,w代表宽,h代表高度。那么我们用中心坐标分别加上(减去)w/2和h/2就能把框四个角的坐标求出来。[x1,y1,x2,y2]
x1,y1代表左上角的顶点坐标,x2,y2代表右下角的坐标。也就是把对角的两个坐标给出。两种形式计算IoU的区别不大,以第一种形式为例子:
我们想要把两个框相交区域的面积(即深蓝色区域)S求出来,那么就要知道这个区域的宽和高,也就是图中的w和h。首先,我们根据给的[x,y,w,h]
坐标框可以把两个框的所有坐标计算出来:
看上图的两个虚线框,虚线框将两个框的上边线(下边线)框在了一起,要求h,我们只需要看Y轴方向,两条上边线的Y坐标分别是4(篮框)和3(黄框),两者取小即Ymax=3
,同理下边线要取大即Ymin=2
,很明显:
h=Ymax-Ymin=1,w同理。总结就是上取小下取大,右取小左取大,
IOU全名为(Intersection over Union),又称为交并比,通常被应用在目前目标检测算法的评价中,IOU值越高,说明算法对目标的预测精度越高,下面本文将以图的方式来解释IOU的定义。
假设A是真实框(人为标记的框),C为预测框(目标检测算法预测的框),B为真实框A和预测框C的交集。
IOU的计算公式为:
IOU值越大,代表预测框和真实框的重叠面积越大,说明预测框预测的越为精准,此预测框的参数可以更好的代表该目标物在图像中的位置。
上图中黑框1代表的是人工标记真实框,红框2和黄框3分别是不同目标检测算法确定的预测框,其中预测狂3和真实框1的IOU值大于预测狂2和真实框1的IOU值,说明确定预测框3的目标检测算法较确定预测框2的目标检测算法精度高。
IOU虽然可以用来检测算法性能的好坏,但是其存在一些弊端,如下图,当预测框3太大时,此时框3的IOU和框2的IOU一样大,但是框2和框3所对应的目标检测算法性能却不相同。
3.IoU计算
下面我来带大家手动计算一下IoU:
如上图所示,黄色矩形与蓝色矩形相交,他们的顶点A、B、C、D分别是:
A:(0,0) B:(3,2) C:(6,8) D:(9,10)
此时IoU的计算公式应为:
所以,别看两个矩形相交了不少,但IoU的值其实只有0.23。
4. NMS
NMS也即非极大值抑制
所谓非极大值抑制:依靠分类器得到多个候选框,以及关于候选框中属于类别的概率值,根据分类器得到的类别分类概率做排序,具体算法流程如下:
(1)将所有框的得分排序,选中最高分及其对应的框
(2)遍历其余的框,如果和当前最高分框的重叠面积(IOU)大于一定阈值,我们就将框删除。(为什么要删除,是因为超过设定阈值,认为两个框的里面的物体属于同一个类别,比如都属于狗这个类别。我们只需要留下一个类别的可能性框图即可。)
(3)从未处理的框中继续选一个得分最高的,重复上述过程。
举例说明:(1)(2),这里设定交并比>=0.6就删除对比框图,留下最高分的框图;对于低于阈值的框图留下,然后在剩下的框图中排序,选出置信度值高的框图,然后重复交并比比较这个过程。
(1)选出Dog这个框图
依次类推,最终保留一个置信度最大的值的框.