NMS(非极大值抑制)

NMS(non maximum suppression)是目标检测框架中的后处理模块,主要用于删除高度冗余的 bboxes。

前面的网络能为每个检测框给出一个score (如 RPN 中给出前景/背景分数信息),score越大证明框越接近期待值。如下图,之前的网络中判定两个目标分别有多个检测框。

NMS(非极大值抑制)

现在要去掉多余的检测框,分别在局部选出分数最大框,然后去掉和这个框IOU>0.7的框。非极大值抑制,就是只留下极大值的意思。只留下极大值之后,就是下面的样子了:

NMS(非极大值抑制)
-----------------------------------------------------------------------------------------------------------------------------------------

因为矩形框的表征方式不同,就衍生了不同版本的NMS,主要包括:标准NMS、locality-aware NMS(简称LNMS)、inclined NMS(简称INMS)、Mask NMS(简称MNMS)、polygonal NMS(简称PNMS),分别用在不同的领域。

1.1 标准NMS(SNMS)

一般用于水平的矩形框

NMS(非极大值抑制)
基本步骤
1)将所有检出的 output bboxes 按 cls scores 划分(含不含目标,无则不需要NMS) ;
2)在每个集合内根据各个bboxes 的 cls scores 做降序排列,得到一个降序的 list_k ;
3)从list_k 中 top1 cls score开始,计算该 bbox_x 与 list 中其他 bbox_y 的 IoU,若IoU大于阈值T,则剔除该bbox_y,最终保留bbox_x,从list_k中取出 ;
4)对剩余的bbox_x,重复step3中的迭代操作,直至 list_k 中所有 bbox 都完成筛选;
5)对每个集合的list_k,重复step3、4中的迭代操作,直至所有list_k都完成筛选。

1.2 局部感知NMS(LNMS)

LNMS一般用于水平矩形框,特别是离得很近的倾斜文本。LNMS是在EAST文本检测中提出的。
主要原因:像文本检测这种任务面临的是成千上万个几何体,如果用普通的NMS,其计算复杂度,n是几何体的个数,这是不可接受的。对上述时间复杂度问题,EAST提出了基于行合并几何体的方法,当然这是基于邻近几个几何体是高度相关的假设。注意:这里合并的四边形坐标是通过两个给定四边形的得分进行加权平均的,也就是说这里是“平均”而不是”选择”几何体*,目的是减少计算量。
基本步骤
1) 先对所有的output boxes集合结合相应的阈值(大于阈值则进行合并,小于阈值则不合并),依次遍历进行加权合并,得到合并后的bboxes集合;
2) 对合并后的bbox集合进行标准的NMS操作。

NMS(非极大值抑制)

1.3 倾斜NMS(INMS)

INMS是在2018的文章中提出的,主要是解决倾斜的文本行检测(即带方向的目标)。
基本步骤 (rbox代表旋转矩形框)
1)对输出的检测框rbox按照得分进行降序排序rbox_lists;
2)依次遍历上述的rbox_lists。具体的做法是:将当前遍历的rbox与剩余的rbox进行交集运算得到相应的相交点集合,并根据判断相交点集合组成的凸边形的面积,计算每两个rbox的IOU;对于大于设定阈值的rbox进行滤除,保留小于设定阈值的rbox;
3)得到最终的检测框实现。

NMS(非极大值抑制)

1.4 多边形NMS(Polygon NMS)

是在2017年Detecting Curve Text in the Wild: New Dataset and New Solution文章提出的,适用于不规则形状文本的检测,主要是针对曲线文本提出的。
基本步骤
其思路和标准NMS一致,将标准NMS中的矩形替换成多边形即可。

NMS(非极大值抑制)

1.5 掩膜NMS(MNMS)

MNMS是在FTSN文本检测文章中提出的,基于分割掩膜图的基础上进行IOU计算.如果文本检测采用的是基于分割的方法来的话,个人建议采用该方法。

  1. 它可以很好地区分相近实例文本
  2. 它可以处理任意形状的文本实例

具体步骤
1)先将所有的检测按照得分进行降序排序box_lists;
2)对box_lists进行遍历,每次遍历当前box与剩余box的IOU(它是在掩膜的基础上进行计算的,具体计算公式见文献,对于大于设定阈值的box进行滤除;
3)得到最终的检测框实现

NMS(非极大值抑制)

总结

在文本检测中,需要考虑到文本方向的多样化。
针对水平文本检测:标准的NMS就可以;针对基于分割方法的多方向文本检测,优先推荐Mask NMS,当然也可以采用Polygon NMS和Inclined NMS;针对基于检测方法的多方向文本检测,优先推荐Polygon NMS和Inclined NMS。

参考

知乎@燕小花
https://blog.****.net/leviopku