WBF:优化目标检测,融合过滤预测框

导读

WBF已经成为优化目标检测的SOTA了。

目标检测是计算机视觉中最常见、最有趣的任务之一。最近的SOTA模型,如YOLOv5和EfficientDet,令人印象深刻。本文将介绍一种新的SOTA新技术,称为加权框融合,它优化了一个很大的目标检测问题。这是一种先进的目标检测技术,我是在当前的VinBigData Kaggle比赛中遇到它的。

如果你熟悉目标检测的工作原理,你可能知道总有一个主干CNN来提取特征。还有另一个阶段,要么生成区域建议(可能的边界框),要么过滤已经提出的建议区域。这里的主要问题是,这根本不是一个简单的任务,它实际上相当困难。这就是为什么物体检测模型要么生成很多框,要么生成的边框不够,最终导致平均精度较低的原因。已经提出了几种算法来处理这个问题,我会首先讨论一下。

如果你不感兴趣理论解释,你可以跳到最后编码教程中,我将展示如何将这种技术应用到一个非常具有挑战性的数据集上,我一直在努力的VinBigData。

给大家介绍一下背景,这个比赛是关于用x光检查肺部疾病的。你的模型必须能够区分14种不同的疾病,并且对每种疾病预测出疾病所在的边界框。这变得更加困难,因为每个图像可能有不止一种疾病(因此你必须预测多个不同的边界框)。

第一个问题是,这些疾病是由多个不同的放射科医生标记的,对于同一种异常可能有多个不同的边界框。所以我们必须过滤这些(或者在本例中“融合”它们),以避免混淆我们的模型。

第二个问题是一些密集疾病区域包含多个标签,这意味着一个小的包围框可以有多个疾病标签。如果我们使用像NMS这样的东西,会很困难,因为我们是根据IoU过滤框。因此,像NMS这样的方法很可能会删除有用的框。

注意,所有这些技术都可以以两种方式使用。要么对数据进行预处理,以过滤掉不精确标记的边界框(这就是我在这里将要做的),要么过滤掉你为提高准确性而训练的模型预测的边界框(或两者兼用)。

我将讨论每一种技术,包括使用该技术之前和之后的边界框的可视化。

1、非极大值抑制(NMS)

如果你熟悉目标检测,那么你可能听说过NMS。考虑到目标检测模型的每次预测都由包围框坐标、类标签和置信分数组成,NMS的工作如下:

  • 如果框与框的IoU高于指定的阈值参数,则这些框将被过滤为1个框。IoU本质上是两个框之间的重叠量。

这里的主要挑战是,如果这些物体靠的很近,其中一个将被过滤掉(因为IoU将相当高)。

2、Soft-NMS

第二种方法试图通过一种更“soft”的方法来解决NMS的主要问题。它不会完全移除那些IoU高于阈值的框,而是根据IoU的值降低它们的置信度分数。

“Soft”方法导致过滤掉更少的框(这就是为什么与NMS相比,右边的框更多)。

3、加权框融合 (WBF)

WBF算法的工作方式与NMS不同。它有点长,而且确实涉及到很多数学方程,但我将尽我最大的努力给你一个简单的概述,而不是让你厌烦的细节。

首先,它将所有边界框按照置信度分数的递减顺序进行排序。然后,它生成另一个可能的框“融合”(组合)列表,并尝试检查这些融合是否与原始框匹配。它通过检查IoU是否大于指定的阈值(hyperparameter)来实现这一点。

然后,它使用一个公式来调整坐标和框列表中所有框的置信度分数。新的置信度仅仅是它被融合的所有框的平均置信度。新坐标以类似的方式融合(平均),除了坐标是加权的(意味着不是每个框在最终融合的框中都有相同的贡献)。权重的值由置信度决定,这是有意义的,因为较低的置信度可能表明预测不正确。

当然,这是高层次的,如果你想深入研究数学和低层次的细节,我建议你查看这篇论文:https://arxiv.org/abs/1910.13302。然而,公平地说,当我理解某些东西如何在高层次上工作,实现它,测试它,然后只有在需要时才回到底层细节时,我通常会获得最大的价值。如果你总是钻研低层次的细节,你最终会了解到理论是如何工作的,但却无法真正实现其中的大部分。

值得一提的是,还有第四种方法称为非最大加权融合,它的工作方式与WBF类似,但性能不如WBF。这是因为它不会改变方框的置信值,而是使用IoU值来衡量方框,而不是更精确的度量,即置信值。他们的表现相当接近:

代码部分

理论部分已经讲够了,让我们开始写代码吧,衡量这篇论文是否真的好,最好的方法之一就是看看他们是否发布了高质量的代码,在这种情况下,他们确实发布了。你可以在https://github.com/ZFTurbo/Weighted-Boxes-Fusion上查看它。

它们提供了一个易于使用的库。下面是一个例子:

boxes, scores, labels = weighted_boxes_fusion(boxes_list, scores_list, labels_list, weights=weights, iou_thr=iou_thr, skip_box_thr=skip_box_thr)

如果你想尝试其他方法,你可以将“weighted_boxes_fusion”替换为“nms”或“soft_nms”,或“non_maxmimum_weighted”,它会工作得很好。我发现这个库/技术的最初原因是,在Kaggle的VinBigData竞赛中,数据集存在两个主要问题,导致物体检测模型性能不佳。

原来的数据包括边界框,每个图像的标签。所以这些将是上面WBF函数输入的一部分

因为我们将在这里使用它进行预处理,所以我们可以将“权重”和“得分”设置为1,这样每个框都将被平等对待(因为我们还没有预测)。这个库非常简单,只需要一行代码,传入一个边界框和分数列表,然后返回一个更干净的列表。

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 加权融合(Weighted Box Fusion,WBF)是一种目标检测算法中的后处理技术,用于将多个模型的检测结果进行融合,提高检测精度。在YOLOv5中,WBF被用于将多个检测模型的结果进行融合,从而得到更准确的目标检测结果。WBF的核心思想是对多个模型的检测结果进行加权平均,其中权重根据每个模型的置信度和重叠度进行计算。通过WBF,YOLOv5可以在保持高速度的同时,提高目标检测的准确性。 ### 回答2: 加权融合 (weighted box fusion, WBF) 是一种目标检测模型集成方法,最初是由 Ensemble of Exemplar-SVMs (EES) 的作者在其论文中提出的。WBF 可以通过对多个已有目标检测模型的结果进行融合,来提高检测精度。 相比于其他的融合方法,WBF 的优势在于能够考虑每个模型输出的盒子的置信度得分,而不仅是盒子的位置信息。这意味着在融合的过程中,WBF 会根据每个模型得出的结果的置信度,动态地为不同的盒子分配不同的权重系数,从而更准确地融合检测结果。在 YOLOv5 中,WBF 被应用于多个目标检测模型的集成中。 WBF 在实现上需要考虑到一些问题,比如盒子重叠和不同模型结果的一致性。具体来说,WBF 根据 NMS (non-maximum suppression) 的思想,对于同一类别的盒子,保留置信度最高的那一个,然后根据每个模型输出的盒子的置信度得分进行加权融合。 在 YOLOv5 中,WBF 开箱即用,使用起来非常简单。通过在训练集上训练多个目标检测模型,在测试时将每个模型输出的结果输入到 WBF 中进行融合,便可以提高检测精度。同时,YOLOv5 还考虑了 WBF 在 GPU 上的实现效率,通过使用 PyTorch 的并行计算技术,使得 WBF 的计算速度得到了很大提升。 总之,加权融合 (WBF) 对于提高目标检测模型的检测精度具有很大的帮助。在 YOLOv5 中,WBF 的应用方便,计算效率高,可以通过使用多个模型的集成,进一步提升模型的准确性。 ### 回答3: 加权融合(Weighted Boxes Fusion,WBF)是一种用于多物体检测融合的方法,能够有效地提高检测的准确率和鲁棒性。WBF在YOLOv5中被广泛应用,已经成为了一个重要的特性。 WBF将多个检测器的输出结合起来,形成最终的检测。这里所谓的“加权”是指融合过程中每个检测的权重不同,这些权重会在上下文中自动学习到。这个过程可以用以下几步来描述: 步骤一:定义IOU阈值 首先,WBF需要定义一个IOU阈值。对于两个检测A和B,如果它们的IOU(交并比)超过了这个阈值,那么它们就会被视为重叠的。 步骤二:计算权重 WBF利用历史检测的信息来估算每个检测的权重。权重是通过计算检测和历史检测之间的IOU得到的。具体来说,在一段时间内,如果一个物体没有移动太远,那么在下一帧中检测到的物体可以由上一帧检测到的做出修改,这也被称为跟踪信息。因此,WBF对于每个检测计算历史检测中对其影响最大的几个的IOU。 步骤三:融合 在定义IOU阈值和计算权重之后,WBF将使用融合来代表每个物体。融合的位置和形状与所有权重大于0的检测的位置和形状相似,但具有更高的置信度得分。具体而言,融合的位置和形状会根据所有权重大于0的检测的位置和形状进行加权求和平均。 步骤四:过滤 最后,WBF过滤掉得分低于一定阈值的融合过滤后,剩下的融合就是最终的检测结果。 总之,WBF是一种有效的多目标检测融合方法,能够有效地提高检测的准确性和鲁棒性。在YOLOv5中,WBF已经被广泛应用,并成为一个重要的特性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值