一文打尽NMS技术( 二 )

  • 只能在CPU上运行 , 速度太慢的改进思路有三个 , 一个是设计在GPU上的NMS , 如CUDA NMS , 一个是设计更快的NMS , 如Fast NMS , 最后一个是掀桌子 , 设计一个神经网络来实现NMS , 如ConvNMS 。
  • IoU的做法存在一定缺陷 , 改进思路是将目标尺度、距离引进IoU的考虑中 。如DIoU 。
  • 下面稍微介绍一下这些方法中常用的一部分 , 另一部分仅提供链接 。
    Soft NMS根据前面对目标检测中NMS的算法描述 , 易得出标准NMS容易出现的几个问题:当阈值过小时 , 如下图所示 , 绿色框容易被抑制;当过大时 , 容易造成误检 , 即抑制效果不明显 。因此 , 出现升级版soft NMS 。
    一文打尽NMS技术

    文章插图
     
    Soft NMS算法伪代码如下:
    一文打尽NMS技术

    文章插图
     
    标准的NMS的抑制函数如下:
    一文打尽NMS技术

    文章插图
     
    IOU超过阈值的检测框的得分直接设置为0 , 而soft NMS主张将其得分进行惩罚衰减 , 有两种衰减方式 , 第一种惩罚函数如下:
    一文打尽NMS技术

    文章插图
     
    这种方式使用1-Iou与得分的乘积作为衰减后的值 , 但这种方式在略低于阈值和略高于阈值的部分 , 经过惩罚衰减函数后 , 很容易导致得分排序的顺序打乱 , 合理的惩罚函数应该是具有高iou的有高的惩罚 , 低iou的有低的惩罚 , 它们中间应该是逐渐过渡的 。因此提出第二种高斯惩罚函数 , 具体如下:
    一文打尽NMS技术

    文章插图
     
    这样soft NMS可以避免阈值设置大小的问题 。
    Soft NMS还有后续改进版Softer-NMS , 其主要解决的问题是:当所有候选框都不够精确时该如何选择 , 当得分高的候选框并不更精确 , 更精确的候选框得分并不是最高时怎么选择。论文值得一看 , 本文不作更多的详解 。
    此外 , 针对这一阈值设置问题而提出的方式还有Weighted NMS和Adaptive NMS 。
    Weighted NMS主要是对坐标进行加权平均 , 实现函数如下:
    一文打尽NMS技术

    文章插图
     
    其中Wi = Si *IoU(M,Bi),表示得分与IoU的乘积 。
    Adaptive NMS在目标分布稀疏时使用小阈值 , 保证尽可能多地去除冗余框 , 在目标分布密集时采用大阈值 , 避免漏检 。
    Softer NMS论文链接:
    https://arxiv.org/abs/1809.08545
    Softer NMS论文代码:
    https://github.com/yihui-he/softer-NMS
    Weighted NMS论文链接:
    https://ieeexplore.ieee.org/document/8026312/
    Adaptive NMS论文链接:
    https://arxiv.org/abs/1904.03629
    DIoU NMS
    一文打尽NMS技术

    文章插图
     
    当IoU相同时 , 如上图所示 , 当相邻框的中心点越靠近当前最大得分框的中心点 , 则可认为其更有可能是冗余框 。第一种相比于第三种更不太可能是冗余框 。因此 , 研究者使用所提出的DIoU替代IoU作为NMS的评判准则 , 公式如下:
    一文打尽NMS技术

    文章插图
     
    DIoU定义为DIoU=IoU-d²/c² , 其中c和d的定义如下图所示 。
    一文打尽NMS技术

    文章插图
     
    在DIoU实际应用中还引入了参数β , 用于控制对距离的惩罚程度 。
    一文打尽NMS技术

    文章插图
     
    当 β趋向于无穷大时 , DIoU退化为IoU , 此时DIoU-NMS与标准NMS效果相当 。
    当 β趋向于0时 , 此时几乎所有中心点与得分最大的框的中心点不重合的框都被保留了 。
    注:除了DIoU外 , 还有GIoU , CIoU , 但这两个都没有用于NMS , 而是用于坐标回归函数 , DIoU虽然本身也是用于坐标回归 , 但有用于NMS的 。


    推荐阅读