论文地址:https://arxiv.org/pdf/1910.13302.pdf
代码地址:GitHub - ZFTurbo/Weighted-Boxes-Fusion: Set of methods to ensemble boxes from different object detection models, including implementation of "Weighted boxes fusion (WBF)" method.
1. NMS(Non-Maximum Suppression)
【原理】
(1)将所有获得的候选框按得分进行降序排列;
(2)选取得分最高的候选框作为基准,分别计算所有剩余候选框与该基准框的IoU(交并比),将IoU高于阈值的候选框进行剔除;
(3)在保留的非基准候选框中,重复第(2)步,直到所有的候选框都被当作基准框。最终剩下的候选框即为预测结果。
【缺点】
(1)需要手动设置阈值,且阈值会直接对结果产生影响;
(2)难以区分多个重叠度较高的目标。
2. Soft-NMS
【原理】
NMS算法比较强硬,超过阈值就剔除,低于阈值直接保留。所以当阈值较高时,容易造成误检,抑制效果不明显;当阈值较低时,容易产生漏检。因此就出现了soft-nms。
soft-nms通过IoU的值对候选框的得分进行惩罚衰减,不是直接去除候选框。衰减的策略有两种,一种是使用1-IoU与得分的乘积作为衰减后的值,第二种是高斯惩罚函数。
【缺点】最终还是删除了部分预测框的结果,不能充分利用所有候选框的信息。
3. Weighted boxes fusion
【原理】假设有N个模型的输出结果:
(1)将所有模型的预测结果添加到列表B中,并对B按置信度得分C进行排序;
(2)声明一个空列表L和F。其中,L用来存放边界框簇,每个位置可以存在多个边界框;F用来存放融合后的边界框,每个位置只能有一个边界框。F中每个位置的边界框是L中对应位置边界框簇融合后的结果。
(3)循环执行:逐个遍历B中的预测结果,在列表F中找到与之相匹配的框(IoU大于指定阈值,这里设置的阈值是0.55)。
(4)如果F中没有与之匹配的框,则将B中的这个框添加到列表L和F中作为一个新的簇,然后处理B中的下一个框。
(5)如果F中的第pos个框与之匹配,那么将B中的这个框添加到列表L中的第pos个簇中。
(6)用列表L[pos]的所有T个边界框重新计算F[pos]的边界框坐标和置信度得分。置信度得分C是所有T个边界框置信度得分的均值,边界框坐标由原始坐标与置信度得分加权计算得到。
【简单画了个示例】