一、背景:
传统的非极大值抑制(NMS)算法在目标检测中存在一个问题,即当一个物体的检测框与具有最高得分的检测框M有重叠(在预定义的重叠阈值内)时,会将该检测框的得分设置为零,从而导致该物体可能被遗漏,降低了平均精度。为了解决这个问题,作者提出了Soft-NMS
算法。
本文将YOLOv11
默认的NMS
修改成GIoU-NMS
、DIoU-NMS
、CIoU-NMS
、SIoU-NMS
、 EIou-NMS
。
专栏目录:YOLOv11改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进
专栏地址:YOLOv11改进专栏——以发表论文的角度,快速准确的找到有效涨点的创新点!
二、原理
Soft-NMS
- 用一行代码改进对象检测
2.1 NMS原理
在目标检测等任务中,通常会产生多个可能的检测框或候选区域。这些检测框可能会有重叠,并且可能会对同一个目标进行多次检测。
NMS 的核心思想就是在这些检测结果中,找到局部最大值并抑制非极大值。
具体来说,对于一组检测结果,按照某个分数(如置信度)进行排序,然后依次选取分数最高的检测框,将其与其他检测框进行比较,如果其他检测框与该框的重叠度超过一定阈值,则认为该检测框不是最优的,将其抑制(通常是将其分数置为 0 或降低其分数)。
2.2 Soft-NMS的原理
- 传统NMS算法的问题:传统的NMS算法从具有得分S的检测框列表B开始,选择得分最高的检测框M,将其从B中移除并添加到最终检测集D中,同时移除B中与M重叠大于阈值$N_t$的任何框。该算法的主要问题是将相邻检测的得分设置为零,若物体实际上在该重叠阈值内,就会被遗漏,导致平均精度下降。
- Soft - NMS的改进:
Soft-NMS
通过修改传统NMS算法的得分衰减方式来解决这个问题。它不是将与M有高重叠的检测框的得分直接设置为零,而是根据与M的重叠程度来降低其分类得分。具体来说,提出了两种重新评分函数:- 线性衰减函数:$s_i = \begin{cases} s_i, & iou(\mathcal{M}, b_i) < N_t \ s_i(1 - iou(\mathcal{M}, b_i)), & iou(\mathcal{M}, b_i) \geq N_t \end{cases}$,该函数将重叠阈值(N_t)以上的检测得分进行线性衰减。
- 高斯衰减函数:$s_i = s_i e^{-\frac{ka(\mathcal{M}, b_i)^2}{\sigma}}, \forall b_i \notin \mathcal{D}$,对与M有重叠的检测框的得分进行高斯衰减。
- 计算复杂度:
Soft-NMS
中每一步的计算复杂度为$O(N)$(N为检测框的数量),因为需要更新所有与M有重叠的检测框的得分,所以对于N个检测框,Soft-NMS
的计算复杂度为$O(N^2)$,与传统的贪心NMS相同。由于NMS并非应用于所有检测框(在每次迭代中会修剪具有最小阈值的框),所以这一步并不昂贵,不会影响当前检测器的运行时间。
2.3 Soft-NMS的优势
- 性能提升:在标准数据集(如PASCAL VOC2007和MS - COCO)上,通过简单地改变NMS算法为
Soft-NMS
,无需任何额外的超参数,就能使coco-style mAP指标得到持续改进。例如,在PASCAL VOC2007上,RFCN和Faster-RCNN的性能提高了1.7%;在MS-COCO上,R-FCN提高了1.3%,Faster-RCNN提高了1.1%和1.1%。使用Deformable-RFCN,Soft-NMS
将目标检测的最先进水平从39.8%提高到40.9%。 - 易于集成:
Soft-NMS
不需要任何额外的训练,且实现简单,因此可以很容易地集成到任何目标检测管道中。 - 对不同类型检测器的适用性:对于基于提议(proposal - based)的检测器,如RFCN和Faster - RCNN,Soft - NMS能显著提高性能;对于非基于提议的检测器,如SSD和YOLOv2,使用线性函数时,
Soft-NMS
也能获得一定的性能提升(约0.5%)。 - 稳定性和灵活性:通过敏感性分析可知,
Soft-NMS
的参数$\sigma$在一定范围内(如0.4到0.7)性能稳定,且在不同重叠阈值下的表现优于传统NMS。低$\sigma$值在较低的$O_t$下表现更好,高$\sigma$值在较高的$O_t$下表现更好,并且可以通过调整$\sigma$来提高检测器在不同定位情况下的性能,而传统NMS中较大的$N_t$对AP的提升非常小。 - 精度与召回率的平衡:在精度与召回率的关系上,随着$O_t$和召回率的增加,Soft - NMS在精度上有显著提升。因为传统NMS将与M重叠大于$N_t$的所有框的得分设置为零,导致许多框被遗漏,精度在召回率较高时不增加。而Soft - NMS重新评分相邻框而不是完全抑制它们,从而在召回率较高时提高了精度。在较高的$O_t$下,即使召回率较低,Soft - NMS也能获得显著的改进,因为在这种设置下,近失更有可能发生。
- 定性结果优势:从定性结果来看,
Soft-NMS
在一些情况下表现更好,例如当错误检测(false positives)与好的检测(true positive)有小重叠或低重叠时,它能降低错误检测的得分,从而抑制这些错误检测;对于一些动物图像,当NMS抑制检测框时,Soft-NMS
能为相邻框分配稍低的得分,从而能够检测到真正的阳性结果。
论文:https://openaccess.thecvf.com/content_ICCV_2017/papers/BodlaSoft-NMS--_Improving_ICCV_2017_paper.pdf
源码:https://github.com/bharatsingh430/soft-nms
三、实现代码及YOLOv11修改步骤
模块完整介绍、个人总结、实现代码、模块改进、二次创新以及各模型添加步骤参考如下地址: