YOLOv11改进策略【损失函数篇】| 引入Soft-NMS,提升密集遮挡场景检测精度,包括GIoU-NMS、DIoU-NMS、CIoU-NMS、SIoU-NMS、 EIou-NMS

简介: YOLOv11改进策略【损失函数篇】| 引入Soft-NMS,提升密集遮挡场景检测精度,包括GIoU-NMS、DIoU-NMS、CIoU-NMS、SIoU-NMS、 EIou-NMS

一、背景:

传统的非极大值抑制(NMS)算法在目标检测中存在一个问题,即当一个物体的检测框与具有最高得分的检测框M有重叠(在预定义的重叠阈值内)时,会将该检测框的得分设置为零,从而导致该物体可能被遗漏,降低了平均精度。为了解决这个问题,作者提出了Soft-NMS算法。

本文将YOLOv11默认的NMS修改成GIoU-NMSDIoU-NMSCIoU-NMSSIoU-NMSEIou-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修改步骤

模块完整介绍、个人总结、实现代码、模块改进、二次创新以及各模型添加步骤参考如下地址:

https://blog.csdn.net/qq_42591591/article/details/142818485

目录
相关文章
|
10月前
|
算法 固态存储 计算机视觉
Focaler-IoU开源 | 高于SIoU+关注困难样本,让YOLOv5再涨1.9%,YOLOv8再涨点0.3%
Focaler-IoU开源 | 高于SIoU+关注困难样本,让YOLOv5再涨1.9%,YOLOv8再涨点0.3%
297 0
|
10月前
|
机器学习/深度学习 计算机视觉
YOLOv5改进 | EIoU、SIoU、WIoU、DIoU、FocusIoU等二十余种损失函数
YOLOv5改进 | EIoU、SIoU、WIoU、DIoU、FocusIoU等二十余种损失函数
2097 0
|
1月前
YOLOv11改进策略【损失函数篇】| 通过辅助边界框计算IoU提升检测效果(Inner_GIoU、Inner_DIoU、Inner_CIoU、Inner_EIoU、Inner_SIoU)
YOLOv11改进策略【损失函数篇】| 通过辅助边界框计算IoU提升检测效果(Inner_GIoU、Inner_DIoU、Inner_CIoU、Inner_EIoU、Inner_SIoU)
155 4
YOLOv11改进策略【损失函数篇】| 通过辅助边界框计算IoU提升检测效果(Inner_GIoU、Inner_DIoU、Inner_CIoU、Inner_EIoU、Inner_SIoU)
|
1月前
|
计算机视觉
RT-DETR改进策略【损失函数篇】| Shape-IoU:考虑边界框形状和尺度的更精确度量
RT-DETR改进策略【损失函数篇】| Shape-IoU:考虑边界框形状和尺度的更精确度量
58 1
RT-DETR改进策略【损失函数篇】| Shape-IoU:考虑边界框形状和尺度的更精确度量
|
1月前
RT-DETR改进策略【损失函数篇】| 通过辅助边界框计算IoU提升检测效果(Inner_GIoU、Inner_DIoU、Inner_CIoU、Inner_EIoU、Inner_SIoU)
RT-DETR改进策略【损失函数篇】| 通过辅助边界框计算IoU提升检测效果(Inner_GIoU、Inner_DIoU、Inner_CIoU、Inner_EIoU、Inner_SIoU)
79 0
RT-DETR改进策略【损失函数篇】| 通过辅助边界框计算IoU提升检测效果(Inner_GIoU、Inner_DIoU、Inner_CIoU、Inner_EIoU、Inner_SIoU)
|
1月前
|
人工智能
YOLOv11改进策略【损失函数篇】| 2024 引进Focaler-IoU损失函数 加强边界框回归 (Focaler-DIoU、Focaler-GIoU、Focaler-CIoU)
YOLOv11改进策略【损失函数篇】| 2024 引进Focaler-IoU损失函数 加强边界框回归 (Focaler-DIoU、Focaler-GIoU、Focaler-CIoU)
122 4
|
1月前
|
人工智能
RT-DETR改进策略【损失函数篇】| 2024 引进Focaler-IoU损失函数 加强边界框回归 (Focaler-DIoU、Focaler-GIoU、Focaler-CIoU)
RT-DETR改进策略【损失函数篇】| 2024 引进Focaler-IoU损失函数 加强边界框回归 (Focaler-DIoU、Focaler-GIoU、Focaler-CIoU)
56 1
|
1月前
|
计算机视觉
YOLOv11改进策略【损失函数篇】| Shape-IoU:考虑边界框形状和尺度的更精确度量
YOLOv11改进策略【损失函数篇】| Shape-IoU:考虑边界框形状和尺度的更精确度量
142 4
|
4月前
|
算法 数据可视化 PyTorch
IoU已经out了,试试这几个变体:GIoU、DIoU和CIoU介绍与对比分析
本文探讨了目标检测中常用的交并比(IoU)及其变体,包括广义交并比(GIoU)、距离交并比(DIoU)和完全交并比(CIoU)。这些指标不仅提高了模型在处理不重叠、距离较远或形状差异大的边界框时的表现,还为模型的学习过程提供了更深入的洞察。文章详细解释了各指标的计算方法及应用场景,并提供了相应的代码示例,帮助读者更好地理解和应用这些先进的评估指标。
330 7
IoU已经out了,试试这几个变体:GIoU、DIoU和CIoU介绍与对比分析
|
5月前
|
机器学习/深度学习 算法 PyTorch
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现
这篇文章详细介绍了多种用于目标检测任务中的边界框回归损失函数,包括IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU和WIOU,并提供了它们的Pytorch实现代码。
838 1
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现