【论文阅读】NMS系列 结合代码学习 solov2 Matrix NMS

本文详细介绍了NMS、Soft NMS以及Matrix NMS在目标检测中的应用,强调了Matrix NMS为解决Soft NMS串行计算问题而提出的并行优化策略。通过矩阵运算提高计算效率,同时解释了如何计算decay factor以更新置信度,最终实现更高效的目标筛选。
摘要由CSDN通过智能技术生成


solov2提出了Matrix NMS,这一篇就想把NMS系列总结一下。
Non-Maximum Suppression的翻译是非“极大值”抑制,而不是非“最大值”抑制。这就说明了这个算法的用处:找到局部极大值,并筛除(抑制)邻域内其余的值。

NMS

参考:https://zhuanlan.zhihu.com/p/78504109
在目标检测中,我们需要NMS从堆叠的类别一样的边框中挑出最好的那个。

主要实现的方法就是对于相同类别的,把置信度比自己低,和自己的重叠度即iou大于某一阈值的剔除(把置信度置位0)

算法流程:

  • 将所有的框按类别划分,并剔除背景类,因为无需NMS。
  • 对每个物体类中的边界框(B_BOX),按照分类置信度降序排列。
  • 在某一类中,选择置信度最高的边界框B_BOX1,将B_BOX1从输入列表中去除,并加入输出列表。
  • 逐个计算B_BOX1与其余B_BOX2的交并比IoU,若IoU(B_BOX1,B_BOX2) > 阈值TH,则在输入去除B_BOX2。
  • 重复步骤3~4,直到输入列表为空,完成一个物体类的遍历。
  • 重复2~5,直到所有物体类的NMS处理完成。
  • 输出列表,算法结束

Soft NMS

参考:https://blog.csdn.net/app_12062011/article/details/77963494
motivation:图片上有重叠的两个类别一样的物体,用传统的nms置信度较低的那一个很可能被去除,但其实他们框的是两个不一样的物体。

解决办法:不是一遇到重叠度过高的就去除,而是将阈值降低,降低的方式有liner和高斯。

Matrix NMS

Matrix NMS是在Soft NMS的基础上改进的,因为Soft NMS整个流程是sequential即串行的,不能并行实现(implemented in parallel。

Our Matrix NMS is motivated from Soft- NMS [1].
However, such process is sequential like tradi- tional Greedy NMS and could not be implemented in parallel.

那么作者就想,怎么能实现并行呢?(soft nms求decay factor也就是每次置信度要乘的那个f(iou)是串行的)

decay factor

Matrix NMS就从另一个角度看待问题,他考虑的是一个预测出来的mask m j m_j mj 是如何被抑制的。
对于 m j m_j mj它的decay factor受两方面影响:

  • 每个预测的 m i m_i mi m j m_j mj的penalty ( s i > s j s_i>s_j si>sj)
    这个penalty通过 f ( i o u i , j ) f(iou_{i,j}) f(ioui,j)就直接可以得到
  • m i m_i m
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值