介绍
非极大值抑制(non-maximum suppression,简称NMS),通常用在目标检测的后处理中。即在通过模型推理得到预测的多个bounding box之后,进一步通过NMS算法得到最终输出的预测框。
TODO:添加NMS示意图
具体步骤
- 经过某个目标检测的模型,如YOLO或SSD或Faster RCNN之后,得到一个bounding box的列表
prediction
这里以COCO数据集下YOLOV3模型的输出为例子,对于任意单张图片而言prediction
的shape为(total_num_bbox, 85)。其中第一个维度total_num_bbox为模型输出的bounding box(即bbox)个数,第二个维度85由三部分组成,前4个值为bbox的中心点和宽高xywh,第5个为该bbox的物体置信度obj_conf,后面80个为预测的类别置信度cls_conf。 - 过滤掉低于某个置信度阀值
conf_thres
=0.4的框,得到新的prediction
prediction
中的所有bbox按照每个类别的置信度从大到小排序- 对于Faster RCNN而言,直接取每个bbox每个类别的类别置信度来排序
- 对于YOLOV3的实现而言,没有将这个过程放在每个类别的for循环中,而是为每个bbox计算
来排序,即这个bbox的物体置信度与最大类别置信度的乘积才是用在这里排序的值
- 选出
prediction
中置信度最高的放到结果列表keep_boxes
中