[读论文]Weighted Boxes Fusion 代替NMS的result ensemble

arxiv链接

0x01 从NMS到Soft-NMS

在detection中,通常为了避免prediction boxes的重合会使用非极大值抑制的方法筛选候选框,最简单的做法是将bounding box的Confidence排序后依次从C最大的box与其他计算IOU,设置一个固定的阈值,IOU超过阈值的bbox则被删除,将所有bbox遍历一次后得到最终的结果;这样的做法对有些模型来说会降低Recall,因此为了改进这个情况提出了Soft-NMS,即不直接删除掉IOU过高的候选框,而是降低IOU过高的框的C,再进行计算,如果置信度过低再将之剔除。

0x02 TTA & model ensembling

在后处理的方法上,除了NMS用的比较多的还有TTA(Test-Time Augmentation),将原图和增强后的图片都输入到model然后将结果平均。以分类为例来说,做模型融合是一个非常显而易见的问题:我可以训练a~c三个(或更多)模型,并将分类结果的概率求均值即可得到ensemble model的result。

0x03 WBF

wbf的提出我觉得还是比较自然的,直接像NMS一样把prediction丢掉(也许)会损失一部分信息,因此如何高效利用model的输出也是提高score的一环也是说得通的。原文写的是

However, both NMS and soft-NMS discard redundant boxes, and thus can not produce averaged localization predictions from different models effectively.

Both NMS and soft-NMS exclude some boxes, while WBF uses all boxes. Thus, it can fix cases where all boxes are predicted inaccurately by all models.

wbf的算法流程如下:

  1. 将每个bbox添加到一个空的list(B),并按Confidence排序.

  2. 创建两个新的列表L和F分别用于存放bbox的聚类结果和融合后的bbox,其中L的组织形式如下L=[[box1, box2], [box3,box4,box5]...],每个子list包含的是一个boxes集合(应该就是相近的用于融合的bboxes),F的组织形式如下F=[box1, box2, box3...],代表L中每一个子集的融合结果。

  3. 对每个在B中的box与F中的结果进行matching,计算IOU, 并根据阈值判断matching结果(论文中写的是他们用的THR=0.55)。

  4. 对B中的元素,如果没在F中找到IOU大于阈值的结果,则将B目前的box添加到F和L中,并进行下一次迭代.

  5. 如果找到了对应的matching,将B当前的box添加到L中对应F中matching位置的前方.

  6. 使用L中每个子集对F中的box重新计算坐标和Confidence
    [读论文]Weighted Boxes Fusion 代替NMS的result ensemble

  7. 对B中所有box计算完后,还需要重新整理下F中的Confidence,具体做法是将C乘cluster中box个数再除以模型的个数(这里不说我差点忘了是model ensemble了= =)这样做的原因是如果一个类的box少意味着比较少的模型预测出了这个结果,因此它可能是不可信的,所以需要降低对应的C。
    [读论文]Weighted Boxes Fusion 代替NMS的result ensemble

0x04 NMW

Non-Maximum Weighted(NMW)和wbf有点类似,但是它的结果并没有改变box的confidence,而是使用IOU去作为boxes的权重,与NMS的思路差不多,将C最大的暂时作为gt,然后将融合后的box作为gt和后面的比,迭代了属于是,多的不表了。

0x05 实验结果

对ensemble model效果明显好于NMS、SoftNMS。

  • 不同模型ensemble

COCO
[读论文]Weighted Boxes Fusion 代替NMS的result ensemble

Open Image
[读论文]Weighted Boxes Fusion 代替NMS的result ensemble

  • 相同模型不同backbone ensemble
    [读论文]Weighted Boxes Fusion 代替NMS的result ensemble

在single model下使用Retinanet(Res152)反而不如直接使用NMS。
[读论文]Weighted Boxes Fusion 代替NMS的result ensemble

作者对此给出的解释是单个模型可能会给出过多错误的预测框导致WBF之后错误累积了

0x10086 拾遗

  • 迭代中融合box的Confidence居然也是对子集类中的boxes求平均。。。但融合box的坐标是有权重的,根据Confidence来的,因此C高的会contribute更多,河里。
    Set the confidence score for the fused box as the average confidence of all boxes that form it
    [读论文]Weighted Boxes Fusion 代替NMS的result ensemble

  • 在discussion最后作者也说了现在使用WBF的速度大概是NMS的三倍。刷刷分还行,实际应用场景估计不指望了。

  • 感觉实验做出来结果反过来推可能的原理都挺形而上的。。

  • code available here: github仓库3D目标检测

上一篇:“类云”的存储服务什么样?Pure Storage发布Pure Fusion等系列新品


下一篇:VMware Fusion 12现已发布,提供macOS Big Sur支持及更多功能