目录
什么是IOU?
IOU,全称为Intersection over Union,是一种测量在特定数据集中检测相应物体准确度的方法。它常用于评估计算机视觉任务中物体检测算法的性能,如目标检测、实例分割等。
IOU主要测量预测边界框与真实边界框之间的重叠程度,以评估算法预测的准确性。具体而言,IOU通过计算预测边界框与真实边界框之间的交集面积,并将其与两个边界框的并集面积进行比较,从而得到两个边界框的交并比。这个值越高,表示预测的边界框与真实的边界框越接近,检测的准确度越高。
交并比的解释
交并比(IOU, Intersetion Over Union),意思就是交集和并集的比值,用来评价两个几何图形的面积重合度,在目标检测算法模型中,通常被用来计算预测框与真实框的误差(损失函数)或者在非极大值抑制(NMS)算法中用于过滤多余重叠的目标,亦或者在计算mAP时用于判断目标是否被预测到。这是一个应用非常广泛的算法,这里详细介绍一下它的算法原理。
原理
开始计算之前,我们首先进行分析下交集和并集到底应该怎么计算:我们首先需要计算交集,然后并集通过两个边框的面积的和减去交集部分即为并集,因此 IoU 的计算的难点在于交集的计算。
为了计算交集,你脑子里首先想到的方法应该是:考虑两个边框的相对位置,然后按照相对位置(左上,左下,右上,右下,包含,互不相交)分情况讨论,来计算交集。
上图就是你的直觉,这样想没有错。但计算一个交集,就要分多种情况讨论,要是程序真的按照这逻辑编写就太搞笑了。因此对这个问题进行进一步地研究显得十分有必要。
让我们重新思考一下两个框交集的计算。两个框交集的计算的实质是两个集合交集的计算,因此我们可以将两个框的交集的计算简化为:
通过简化,我们可以清晰地看到,交集计算的关键是交集上下界点(图中蓝点)的计算。
我们假设集合 A 为 [x 1 x_{1}x1,x 2 x_{2}x2],集合 B 为 [y 1 y_{1}y1,y 2 y_{2}y2]。然后我们来求AB交集的上下界限。
交集计算的逻辑
- 交集下界 z 1 z_{1}z1:max ( x 1 , y 1 ) \text{max}(x_{1}, y_{1})max(x1,y1)
- 交集上界 z 2 z_{2}z2:min ( x 2 , y 2 ) \text{min}(x_{2}, y_{2})min(x2,y2)
- 如果 z 2 − z 1 z_{2}-z_{1}z2−z1 小于0,则说明集合 A 和集合 B 没有交集。