快速理解NMS在物体检测中的应用原理

在物体检测的过程中,模型会生成大量的候选框,通过NMS(Non-Maximum Suppression,非极大值抑制)可以筛选出最优的候选框,原理非常直观,简单来说就是选出所有的局部最大值.
最大值容易找,主要就是如何定义局部,通过IoU就OK啦~

NMS执行流程

假定最终选取的候选框集合为res,开始时res是空集; 假定模型输出的大量候选框集合为A,A中的各个候选框有对应的得分

首先从A中选出分数最高的候选框a,将a放入集合res,同时从A中剔除a,接着计算a与A中剩下的各个候选框x的IoU,如果a和某个x的IoU>0.7 (这里取0.7只是用来举例),说明a和x重叠的范围太多,所以框出的是同一个物体,不过x的分数不如a高,所以就要抑制x,也就是从A中剔除x. 这样筛选多次后,A中剩下的候选框与a的重叠范围很小,说明框出的是其他物体了

再从A中选出得分最高的候选框b,将b放入集合res,同时从A中剔除b,接着计算b与A中剩下的各个候选框的IoU……其实你已经发现这都是重复上面的操作了
经过多次循环后,就为图片中每个可能的物体选取了最合适的候选框,存储在res中

NMS前

nms1.png

NMS后

nms2.png

0%