非极大值抑制(NMS)和交并比(IoU)详解
非极大值抑制(NMS)和交并比(IoU)详解
非极大值抑制(Non-Maximum Suppression,NMS)是目标检测等计算机视觉任务中的重要操作,下面通过一个行人检测的例子来解释:
假设我们有一张包含多个行人的图片,使用目标检测算法对图片进行处理后,会得到很多可能包含行人的边界框(Bounding Box),这些边界框可能存在重叠的情况,并且每个边界框都有一个对应的置信度分数,表示该边界框内存在行人的可能性大小。非极大值抑制的作用就是去除那些冗余的、置信度较低的边界框,只保留最准确、最能代表行人的边界框。具体过程如下:
初始化:首先,将所有检测到的边界框按照置信度分数从高到低进行排序。假设我们得到了 5 个边界框,置信度分数分别为:0.9、0.85、0.8、0.75、0.7,排序后对应的边界框依次为 B1、B2、B3、B4、B5。
选择最高分边界框:选择置信度最高的边界框 B1 作为当前的最大值框,认为它是最有可能正确检测到行人的框。
计算重叠度:计算其余边界框与 B1 的重叠程度,通常使用交并比(Intersection over Union,IoU)来衡量。假设 B2 与 B1 的 IoU 为 0.6,B3 与 B1 的 IoU 为 0.4,B4 与 B1 的 IoU 为 0.3,B5 与 B1 的 IoU 为 0.2。
抑制重叠度高的边界框:设定一个 IoU 阈值,比如 0.5。如果某个边界框与当前最大值框的 IoU 大于阈值,就认为它是冗余的,将其抑制(删除)。在这个例子中,B2 与 B1 的 IoU 为 0.6 大于阈值 0.5,所以将 B2 删除。而 B3、B4、B5 与 B1 的 IoU 小于阈值,保留下来。
重复上述步骤:从剩下的边界框 B3、B4、B5 中,选择置信度最高的框作为新的最大值框,假设是 B3。然后计算 B4、B5 与 B3 的 IoU,假设 B4 与 B3 的 IoU 为 0.3,B5 与 B3 的 IoU 为 0.2,都小于阈值 0.5,所以 B4、B5 都保留。
最终结果:经过非极大值抑制操作后,最终保留下来的边界框 B1、B3、B4、B5 就是我们认为最能准确检测到行人的框,去除了那些重叠度高、置信度相对较低的冗余框,得到了更准确、更简洁的目标检测结果。
交并比(Intersection over Union,IoU)是目标检测、图像分割等计算机视觉任务中常用的一个评估指标,用于衡量两个边界框或区域之间的重叠程度。以下通过一个检测图片中汽车的例子来介绍:
假设我们有一张图片,图片中有一辆汽车,我们的目标是用一个边界框将汽车框出来。现在有两个边界框,一个是真实标注的边界框(Ground Truth Box),表示汽车的真实位置和大小,记为框 A;另一个是我们的目标检测算法预测出来的边界框(Predicted Box),记为框 B。
计算交集面积:框 A 和框 B 在图片中重叠的部分就是它们的交集。假设框 A 的左上角坐标为 (10, 10),右下角坐标为 (50, 50),框 B 的左上角坐标为 (20, 20),右下角坐标为 (60, 60)。通过计算可以得到,它们交集部分的左上角坐标为 (20, 20),右下角坐标为 (50, 50),那么交集的面积就是长乘以宽,即 (50 - 20)×(50 - 20)=900(这里假设坐标的单位是像素)。
计算并集面积:并集面积是指框 A 和框 B 所覆盖的总面积。可以通过分别计算框 A 和框 B 的面积,然后减去交集面积来得到并集面积。框 A 的面积为 (50 - 10)×(50 - 10)=1600,框 B 的面积为 (60 - 20)×(60 - 20)=1600,那么并集面积就是框 A 的面积加上框 B 的面积减去交集面积,即 1600 + 1600 - 900 =2300。
计算交并比:交并比就是交集面积与并集面积的比值,即 IoU = 交集面积 / 并集面积 = 900 / 2300≈0.39。
交并比的值在 0 到 1 之间,值越接近 1,说明预测的边界框和真实边界框的重叠程度越高,也就意味着目标检测的效果越好。比如在这个例子中,如果预测的边界框和真实边界框完全重合,那么它们的交集面积和并集面积就相等,交并比就为 1;如果两个边界框完全不重叠,那么交集面积为 0,交并比就为 0。
交并比的图示如下: