NMS 算法在目标检测,目标定位领域有较广泛的应用。
算法原理
非极大值抑制算法(Non-maximum suppression, NMS)的本质是搜索局部极大值,抑制非极大值元素。
算法的作用
当算法对一个目标产生了多个候选框的时候,选择score最高的框,并抑制其他对于改目标的候选框
适用场景
一幅图中有多个目标(如果只有一个目标,那么直接取score最高的候选框即可)。
算法的输入
算法对一幅图产生的所有的候选框,以及每个框对应的 score (可以用一个 5 维数组 dets 表示,前 4 维表示四个角的坐标,第 5 维表示分数),阈值thresh。
算法的输出
正确的候选框组(dets 的一个子集)。
细节
起始,设所有的框都没有被抑制,所有框按照 score 从大到小排序。
从第 0 个框(分数最高)开始遍历:对于每一个框,如果该框没有被抑制,就将所有与它 IoU 大于 thresh 的框设为抑制。
返回没被抑制的框。
参考代码
# --------------------------------------------------------
# Fast R-CNN
# Copyright (c) 2015 Microsoft
# Licensed under The MIT License [see LICENSE for details]
# Written by Ross Girshick
# --------------