深度神经网络基础-NMS非极大值抑制

1、NMS介绍

在执行目标检测任务时,算法可能对同一目标有多次重复检测。能让你确保算法只对每个对象得到一个检测框的方法。

2、NMS 算法的大致过程:

在正式使用NMS之前,通常会有一个候选框预清理的工作(简单引入一个置信度阈值),如下图所示:每轮选取置信度最大的 Bounding Box(简称 BBox) 接着关注所有剩下的 BBox 中与选取的 BBox 有着高重叠(IoU)的,它们将在这一轮被抑制。这一轮选取的 BBox 会被保留输出,且不会在下一轮出现。接着开始下一轮,重复上述过程:选取置信度最大 BBox ,抑制高 IoU BBox。(关于Bounding Box Regression的详细介绍,我强力推荐我的另一篇博文)

IoU可以理解预测框和真实框的交并比

NMS步骤:
第一步:对 BBox 按置信度排序,选取置信度最高的 BBox(所以一开始置信度最高的 BBox 一定会被留下来);
第二步:对剩下的 BBox 和已经选取的 BBox 计算 IOU,淘汰(抑制) IOU 大于设定阈值的 BBox(在图例中这些淘汰的 BBox 的置信度被设定为0)。
第三步:重复上述两个步骤,直到所有的 BBox 都被处理完,这时候每一轮选取的 BBox 就是最后结果。

框中的数字什么意思? —置信度
图片中置信度最高的为红色的0.9,优先选择出来,设置IOU阈值为0.5,所以大于阈值的被过滤掉,粉色被pass得分设成了0(得分是置信度吗),所以最终的框为黄色和红色。

深度神经网络基础-NMS非极大值抑制_第1张图片在上面这个例子中,NMS 只运行了两轮就选取出最终结果:第一轮选择了红色 BBox,淘汰了粉色 BBox;第二轮选择了黄色 BBox,淘汰了紫色 BBox 和青色 BBox。注意到这里设定的 IoU 阈值是0.5,假设将阈值提高为0.7,结果又是如何?可以看到,NMS 用了更多轮次来确定最终结果,并且最终结果保留了更多的 BBox,但结果并不是我们想要的。因此,在使用 NMS 时,IoU 阈值的确定是比较重要的,但一开始我们可以选定 default 值(论文使用的值)进行尝试。

你可能感兴趣的:(计算机视觉,深度学习,目标检测)