加权框融合 WBF(Weighted Boxes Fusion: combining boxes for object detection models)

文章标题:《Weighted Boxes Fusion: combining boxes for object detection models》
文章PDF地址:https://arxiv.org/abs/1910.13302
GitHub地址:https://github.com/ZFTurbo/Weighted-Boxes-Fusion

简介

作者认为,在目标检测任务中,当实时性要求不强时,集成多个推理模型有助于我们得到更好的结果。

于是作者在文中提出了一种方法,可以把多个目标检测模型的预测结果结合起来。
这个方法称为 weighted boxes fusion,简称 WBF


在筛选预测框的过程中,常用的方法是非极大值抑制(non-maximum, NMS),还有一种 soft-NMS 方法也被用于改进筛选性能。这些方法在单个模型上效果不错,但只能简单地从预测框中,“筛选” 框框。不能有效地结合多个模型的预测结果来产生一个平均的框框。与单一模型相比,结合多个模型的预测会得到更好更准确的效果,这样做在打比赛中通常名列前茅。

NMS、soft-NMS等方法只是简单地删除部分预测框。
与之不同,作者提出的 WBF 方法用上了所有预测框的置信度(得分),来构造出融合的框框。

在实际应用中,还有一种技术也经常被用到,叫做测试时增强(test-time augmentation, TTA),它类似于训练时的数据增强。举个例来说,测试的时候使用一个训练好的模型,对原始图片推理、又把图像做垂直/水平反转等变换,分别推理,把这几个结果平均,作为一次最终的结果。这种有多个结果的情况也可以用 WBF


WBF 的过程


关于 NMSsoft-NMS 资料网上很多,这里主要介绍 WBF 的过程。


假设用多个模型对下面这张图做目标检测,得到许多框框。
(单个模型也能生成这么多框,把分数阈值设低一点)

在这里插入图片描述

为了便于理解,我对这些框进行了分类,相同颜色的框表示它们选中了同一个目标。
这里有 3 朵花,每朵花上应该只保留 1 个框,这是我们本次任务的目标。
先透露一下,用 WBF 处理过后,可以得到这样的结果:

在这里插入图片描述

显然我们也可以用 NMS 直接干掉那些重叠的框,最后得到 3 个干净的框,效果也差不多。
WBF 不是这么做的。它不是直接干掉这些框,而是对现有的框进行融合,生成新的框。
这个例子里,它把 3 个蓝色的框融合成 1 个框;2 个黄色的框融合成1个框;4 个红色的框融合成 1 个框。



WBF 首先对这些框做一个预处理,把这些框按照得分从高到低进行排序,放在一个数组里:

在这里插入图片描述
上面的图示中,对 9 个框(3个蓝框,4个红框,2个黄框)进行了排序,右边那一列是排序的结果。数组的每个元素里面记录了该框框的得分和坐标。然后从最高分的开始,一个一个取出来,进行加权融合。




  先说一下:
  在我们的程序里面,每个框的数据只有坐标和分数,并不知道哪个框属于哪朵花。
  所以哪个框要和哪个框融合?首先要这些框进行聚类:把同一朵花上面的框归到一起。
  这可以通过 IOU(交并比)做到,我们一步一步来。 (只能把这些框归到一起,但仍然不知道是哪朵花)


  再给你讲一个公式(论文里的),我把它叫做融合框公式。假设现在有两个很接近的框,分别为:
   b o x A : [ A x 1 , A y 1 , A x 2 , A y 2 , A s ] boxA:[Ax_{1},Ay_{1},Ax_2, Ay_2, As] boxA:[Ax1,Ay1,Ax2,Ay2,As] b o x B : [ B x 1 , B y 1 , B x 2 , B y 2 , B s ] boxB:[Bx_{1},By_{1},Bx_2, By_2, Bs] boxB:[Bx1,By1,Bx2,By2,Bs]
  其中 ( x 1 , y 1 x_1,y_1 x1,y1) 代表该 b o x box box 左上角的坐标, ( x 2 , y 2 x_2,y_2 x2,y2) 代表该 b o x box box 右下角的坐标, s s s 代表该 b o x box box 的置信度 (得分)。

  通过 b o x A boxA boxA b o x B boxB boxB 融合得到 b o x C boxC boxC,如图所示:

在这里插入图片描述
  可以看到,这里用框的得分作为权值,把两个框的坐标进行融合,得到一个新的框。
  所以得分越高的框,权值越大,在生成新框的过程中,它的贡献更大。
  新框的形状和位置更偏向于权值大的框。

  对于 2 个以上的框,也是按照这个公式往后面加就行了。

  论文提供的源码里还有一种计算方式,是直接求平均的,没有把得分作为权值来用。具体可以看代码。



回到 WBF 的处理流程,对这 9 个框排序完成之后,再维护 2 种容器(可以用数组之类的东西):

其中一种容器叫做 clusters,是聚类的结果,用于存放同一朵花上面的所有框。
在这个例子中,有 3 个聚类:clusterAclusterBclusterC,分别代表这 3 朵花上面的框。

另外一种容器叫做 fusions,一个 fusion 对应一簇 cluster
把某 cluster 中所有的框用融合框公式算出一个新的框,记录在fusion 里。
同理这里也有 3 个:fusionAfusionBfusionC,是与其对应的 3 种 cluster 各自融合的结果。




为了快速描述 WBF 的处理流程,假设现在已经按照排序顺序,处理完数组里的前 6 个数据了:
在这里插入图片描述

处理完前面 6 个数据后,已经得到 2 组 cluster 和 2 个 fusion 了。
它们是怎么来的呢? 再看第 7 个数据是怎么处理的就知道了。



现在从 preDatas 中取出第 7 个数据(黄色的框),首先对它做聚类,聚类的方法是:
把这个新来的 7 号框,与现有 fusions 中的所有 fusion 做 IOU,如果 IOU 结果大于指定阈值,则聚类成功,把这个框放到该 fusion 对应的 cluster 中。

按照上述说法,我们分别把 7 号框与 fusionAfusionB 的框做 IOU,发现都小于阈值。
显然 7 号框不属于 clusterA,也不属于clusterB,应该给它新建一个 cluster。聚类完毕。

姑且把这个新的 cluster 命名为 clusterC,把 7 号框放到 clusterC 里面。
同时对 clusterC 里所有的框做 加权融合(用上面讲的融合框公式),得到 fusionC
由于 clusterC 里只有一个框,所以融合的结果 (fusionC) 就是它自己。

在这里插入图片描述

现在已经处理完第 7 个框了,接下来第 8 个也同样处理。
第 8 个是红色的框,经过聚类(算IOU) 后,它被分到 clusterB 里了。
分配完后,对 clusterB 里的所有框(此时共有4个)做加权融合,得到新的 clusterB
结果如图:在这里插入图片描述


可以看到现在 clusterB 里有 4 个框, 这 4 个框就是下面那朵花上的 4 个框。
第 9 个框的处理方式也一样,我就不画了。

所有数据处理完毕后,得到 3 个fusion,这 3 个框就是 WBF 算法的结果。
把这个 3 个框画到图片上,就得到文章开头展示的结果:

在这里插入图片描述


总结

这个 WBF 算法可以直接用来代替 NMS,不过计算量可能会大一点。

对于一张图片,可以用多个不同的模型来做预测,然后对所有预测结果运用 WBF 算法,得到 1 个结果。作者说这个结果可能好过单个模型的预测结果。作者提出 WBF 算法也是主要应用于这种场景。

如果只有 1 个模型,也可以用 WBF 算法。方法就是把得分阈值设低一点,让网络输出一堆框框,然后对这些框做 WBF。如果网络判别能力强,得分低的框往往是一些垃圾框,它在融合过程中也没什么权重,所以直接做 WBF 应该没有问题。


在一些情况下,WBF 还能用于改善漏检、误检等问题。
在这里插入图片描述

不过 WBF 的能力有限,毕竟它还得依赖于网络输出结果,并不能颠覆这个结果。



另外,WBFNMS 选哪个,还要看具体应用和具体情况。

  • 49
    点赞
  • 157
    收藏
    觉得还不错? 一键收藏
  • 23
    评论
### 回答1: 加权融合Weighted Box FusionWBF)是一种目标检测算法中的后处理技术,用于将多个模型的检测结果进行融合,提高检测精度。在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 FusionWBF)是一种用于多物体检测融合的方法,能够有效地提高检测的准确率和鲁棒性。WBF在YOLOv5中被广泛应用,已经成为了一个重要的特性。 WBF将多个检测器的输出结合起来,形成最终的检测。这里所谓的“加权”是指融合过程中每个检测的权重不同,这些权重会在上下文中自动学习到。这个过程可以用以下几步来描述: 步骤一:定义IOU阈值 首先,WBF需要定义一个IOU阈值。对于两个检测A和B,如果它们的IOU(交并比)超过了这个阈值,那么它们就会被视为重叠的。 步骤二:计算权重 WBF利用历史检测的信息来估算每个检测的权重。权重是通过计算检测和历史检测之间的IOU得到的。具体来说,在一段时间内,如果一个物体没有移动太远,那么在下一帧中检测到的物体可以由上一帧检测到的做出修改,这也被称为跟踪信息。因此,WBF对于每个检测计算历史检测中对其影响最大的几个的IOU。 步骤三:融合 在定义IOU阈值和计算权重之后,WBF将使用融合来代表每个物体。融合的位置和形状与所有权重大于0的检测的位置和形状相似,但具有更高的置信度得分。具体而言,融合的位置和形状会根据所有权重大于0的检测的位置和形状进行加权求和平均。 步骤四:过滤 最后,WBF会过滤掉得分低于一定阈值的融合。过滤后,剩下的融合就是最终的检测结果。 总之,WBF是一种有效的多目标检测融合方法,能够有效地提高检测的准确性和鲁棒性。在YOLOv5中,WBF已经被广泛应用,并成为一个重要的特性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值