【论文阅读】Fitness NMS

论文题目:《Improving Object Localization with Fitness NMS and Bounded IoU Loss》
发现这篇文章网络上资源较少,来写一下自己看完这篇文章的一些想法,可能不成熟,欢迎指正。谢谢!
本文对于NMS进行了改进,提出了一个叫Fitness NMS的模块,在DeNet基础上进行的改进。
文章介绍了一下nms,这里 也简单写一下:
在这里插入图片描述
这里score(.)函数用来评价选择bbox的置信度,而same(.)用来检测两个框的iou值。因此算法的核心思想就是:对于Bounding Box的列表B及其对应的置信度S,采用下面的计算方式.选择具有最大score的检测框M,将其从B集合中移除并加入到最终的检测结果D中.通常将B中剩余检测框中与M的IoU大于阈值Nt的框从B中移除.重复这个过程,直到B为空.

本文就是对于上述的score及same函数进行了修改来得到一个新的nms。
在这里插入图片描述

作者先做实验对比了train和test采用不同iou阈值时的map表现结果:
在这里插入图片描述

结果可以看到只有当训练和测试选择iou阈值一致时输出的结果才比较好,而且0.5表现出来的map最高,这便引出了本文想要解决的问题:并不是要选择所有超过该阈值的所有bbox,而是要选择最高的一个。

  1. Detection Clustering

在这里插入图片描述
实验发现,提升matching iou 不使用nms和使用的两种情况下的召回值gap越来越大。这说明在roi预测阶段预测出来的一些对正样本在nms阶段被舍弃掉。单纯的使用nms是次优的选择,因为DeNet在训练中使用单一的matching iou值,使得它对于与GT不同iou值的bbox一视同仁(0.5,0.9),而这并不是一个最优的discriminator。

  1. Fitness NMS

作者首先提出了一个新的公式,对于score函数进行了增强:在这里插入图片描述
加上的E函数指的是你的bbox和GT重叠iou的期望值。作者加上E的实际目的就是为了对于与GT IOU值打的bbox对他进行score值放大。
原文给出了f的计算公式:
在这里插入图片描述
及E的计算公式:
在这里插入图片描述
其中,λn指的是最小iou覆盖。那么 如何求得公式中的Pr(fj)呢,这里作者给出了两种方法:
Independent Fitness
认为Pr(fj)与类别无关。将DeNet的预测层替换为预测Pr,这时我们便可以得到C+F+2个输出。

Joint Fitness
在这里插入图片描述
输出CF+1个量。

后面的ablation实验证明了上述方法的有效性:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这块有些不太理解:对于某个bbox,他与GT的fj不是一个定值吗,那后面的求和操作是怎么来的呢?还是通过网络输出的不同的fj对应的值是对于某个bbox iou的一个估计值?? 这里感觉需要看源代码。

在这里插入图片描述
最后作者还加了一个与soft nms适配性的实验,发现是可以双向并行的。

  1. Bounding Box Regression
    由于DeNet的角点采样提升了roi采样的准确性,许多人认为这部分的改进没有必要,作者这里则也进行实验给出了其必要性:
    在这里插入图片描述
    作者认为改进bbox regression 算法确实不是首要的 但是它与前面nms算法的改进相适配,会大幅提升recall。
    新提出的算法则是为了最大化roi与GT的iou并可以提供一个良好的梯度下降值。
    在这里插入图片描述
    上述公式为新提出的iou计算公式。
    在这里插入图片描述
    作者认为maximum IOU,应该设计一个更大的cost函数。同时作者给出了一个近似的函数:
    在这里插入图片描述
    在这里插入图片描述
    烧烛实验如上所示。。
    后面作者还对于在bbox层面还是在conner distribution 层面进行nms操作得到的结果进行了一定的对比。
    在这里插入图片描述
    在这里插入图片描述
    最后的结果 以上。

最后写写我的感想,我觉得作者在本文的主要工作实际上只有两项:增大score的值和增大same求出的iou值。让分类器能更加重视负样本的loss及对于与GT iou重叠大的bbox 在classification 和 regression过程中起到更加大的作用

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: nms.cpu_nms是一种非极大值抑制(Non-Maximum Suppression,NMS算法,主要用于目标检测领域中的物体框去重处理。在目标检测任务中,常常会生成多个候选框,这些框可能有一定的重叠区域,而NMS的作用就是根据一定的规则选择出最具代表性的框。 nms.cpu_nms是一个基于CPU的实现,其主要流程包括以下几个步骤: 1. 输入:nms.cpu_nms接受候选框列表作为输入,每个候选框由矩形框的坐标和其对应的置信度组成。 2. 按置信度排序:首先对所有候选框按照置信度进行降序排序,将置信度最高的框放在前面。 3. 计算重叠区域:对排序后的框从前往后依次遍历,计算当前框与其后面框的重叠区域。 4. 筛选框:若两个框的重叠区域大于一定的阈值,则保留置信度较高的框,否则将其舍弃。 5. 循环迭代:重复步骤3和4,直到遍历完所有的框。 6. 输出:最终得到筛选后的一组最具代表性的框。 nms.cpu_nms是一种计算复杂度较高的算法,由于其使用CPU进行计算,相对速度较慢。为了提高性能,也可以使用nms.gpu_nms等基于GPU加速的实现。目前,NMS在目标检测中广泛应用,并成功解决了多个候选框导致的冗余问题,提高了检测结果的准确性和效率。 ### 回答2: nms.cpu_nms是一种计算机视觉中的非极大值抑制(Non-Maximum Suppression,NMS)的算法。它主要用于目标检测任务中,将多个重叠的候选目标框缩减为较少的、最具代表性的目标框。其核心思想是通过消除掉重叠度较高的候选框,从而得到更准确的检测结果。 nms.cpu_nms的工作流程如下: 1. 输入:给定一组检测框候选区域和对应的置信度得分。 2. 根据置信度得分对所有候选区域进行降序排列。 3. 选择具有最高置信度得分的第一个候选框,并将其添加到最终的目标检测结果列表中。 4. 遍历剩余的候选框,并计算其与已选定的目标框的重叠度(如交并比)。 5. 如果重叠度高于一定阈值,则将该候选框丢弃;如果重叠度低于阈值,则将该候选框添加到最终的目标检测结果列表中。 6. 重复步骤4和5,直到所有的候选框都被遍历完成。 7. 输出:最终得到缩减后的目标检测结果列表。 nms.cpu_nms的实现通常基于CPU处理器,利用快速计算来实现高效的非极大值抑制。它是目标检测中不可或缺的一部分,可以帮助提高检测结果的准确性和稳定性。而nms.cpu_nms是其中一种算法的具体实现方式,在目标检测任务中得到了广泛应用。 ### 回答3: nms.cpu_nms是一个用于目标检测任务中的非极大值抑制算法,用于在检测结果中去除重叠的边界框。在目标检测任务中,检测器常常会生成多个边界框来覆盖目标物体,但是由于物体的大小、形状和姿态等因素的差异,这些边界框会存在一定的重叠。为了避免重复检测和提高检测结果的准确性,就需要使用非极大值抑制算法进行处理。 nms.cpu_nms是在CPU上执行的一种非极大值抑制算法,其原理是遍历所有的边界框,根据它们的置信度和重叠度进行筛选。具体来说,首先将所有边界框按照置信度进行排序,然后从置信度最高的边界框开始,计算它与其他边界框的重叠度,如果重叠度大于设定的阈值,就将其删除,否则保留。随后,继续处理下一个置信度最高的边界框,直到所有边界框都被遍历完成。 通过应用nms.cpu_nms,可以有效地减少冗余的检测结果,提高目标检测任务的准确性和效率。它常被广泛应用于各种计算机视觉任务中,如目标检测、行人检测、车辆检测等。另外,由于nms.cpu_nms是在CPU上执行的,相对于在GPU上执行的nms算法,它的计算速度可能会较慢。但是,由于CPU具有广泛的兼容性和可扩展性,因此nms.cpu_nms在一些需要在较低性能设备上运行的场景中仍然具有一定的优势。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值