论文阅读: Soft-NMS

Soft-NMS通过调整传统NMS算法,不再直接删除高度重叠的目标框,而是降低其置信度,有效避免了误删问题。该方法尤其适用于高度重叠物体的场景,能提高检测精度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Introduction

传统的NMS (Non-Maximum Supression)去重过程如下:
这里写图片描述

但是对于两个“高度重合的object”,却容易“误杀”,导致只剩下一个bbox:
这里写图片描述

Innovation

针对传统的NMS计算公式:
这里写图片描述

Bharat Singh等人提出了soft版的NMS:
这里写图片描述

即:

不再删除所有与highest-score的bbox大于IoU阈值的框,而改为降低它们的置信度。

根据新公式易知,soft-nms对于 低overlap (注意不是低score)的bbox 保留得更好

落实到代码中真的就是“One line of code”:
这里写图片描述

Result

作者的实验显示,在相同召回率的情况下,不论阈值取0.6、0.7还是0.8,Soft-NMS的accuracy都要稍高过传统NMS一丢丢:
这里写图片描述

作者找了一些higly-overlap objects的场景图来验证Soft-NMS的优越性:
这里写图片描述

Thinking

  • Soft-NMS加强了对highly-overlap objects的正确区分,同时却也削弱了对light-overlap objects的区分能力;

  • 本质上是对overlap情形的一种overfit,所以它只能算是对trade-off的offset;

  • 只有在highly-overlap objects的场景下才能真正发挥作用,普通场景下并没有多少highly-overlap,所以甚至可能有反效果;

  • 个人觉得Soft-NMS其实可以叫做“Overlap-NMS”。


[1] Soft-NMS – Improving Object Detection With One Line of Code

### Soft-NMS算法的发展历程 Soft-NMS(Non-Maximum Suppression)是一种改进的传统NMS方法,旨在解决传统NMS中存在的问题。传统的NMS通过设定一个固定的阈值来筛选检测框,可能会导致部分重叠较高的真实目标被错误抑制。而Soft-NMS则引入了一种平滑的方式,通过对高重叠度的目标赋予较低的置信度分数,从而保留更多可能的真实目标。 #### 背景与发展 Soft-NMS的概念最早由Bodla等人于2017年提出,在论文《Soft-NMS – Improving Object Detection With One Line of Code》中首次介绍[^4]。该论文指出,传统NMS存在一定的局限性,即当两个边界框具有较高IoU(Intersection over Union)时,即使其中一个可能是真实的正样本,也会因为超过预设阈值而被移除。为了缓解这一问题,Soft-NMS采用一种连续函数调整其他候选框的得分,而不是简单地将其剔除。 具体而言,Soft-NMS的核心思想是对与当前最高分预测框有较大交并比的其他框施加惩罚因子,其公式如下: ```python score_i = score_i * exp(-gamma * IoU(box_i, box_max)^2) ``` 其中`box_max`表示当前得分最高的边界框,`box_i`为其余待评估的边界框,`gamma`是一个超参数用于控制衰减程度。这种方式能够更灵活地处理多个高度重叠的对象实例。 #### 进一步的研究进展 随着目标检测技术的进步,后续许多工作基于Soft-NMS进行了扩展和优化。例如,一些研究尝试结合注意力机制或者神经网络模型来自适应地调节权重分配策略;还有学者探索了多阶段式的非极大值抑制流程以进一步提升性能表现。然而值得注意的是,尽管这些变体形式各有特色,但它们大多继承自最初的Soft-NMS设计理念,并在此基础上做出针对性改良。 对于希望深入了解此领域的朋友来说,除了上述提到的基础文献外还可以关注近年来CVPR/ECCV等顶级会议上的相关投稿文章获取最新动态和发展趋势信息[^5]。 ```python def soft_nms(dets, sigma=0.5, Nt=0.3, threshold=0.001, method=1): """ Implementation example of the Soft-NMS algorithm. Parameters: dets (list): List of detections with format [x1,y1,x2,y2,score]. sigma (float): Sigma parameter used in Gaussian decay function. Nt (float): Overlap threshold. threshold (float): Minimum detection confidence to keep a bounding box. method (int): Method type for applying suppression {1: linear, 2: gaussian}. Returns: list: Remaining boxes after performing Soft-NMS operation. """ pass # Placeholder implementation details omitted here. ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值