Confluence: A Robust Non-IoU Alternative to Non-Maxima Suppression in Object Detection
PDF: https://arxiv.org/pdf/2012.00257.pdf PyTorch: https://github.com/shanglianlm0525/PyTorch-Networks PyTorch: https://github.com/shanglianlm0525/CvPytorch
1 概述
- Confluence作为一种优于NMS的非IoU替代方案
- Confluence不像NMS一样在边界框保留和抑制方面依赖于最大置信度得分IoU。Confluence通过使用曼哈顿距离,在一个cluster中选取和其他框都是距离最近的那个框,然后去除那些附近的高重合的框。。
- 在YOLOv3、RetinaNet和Mask R-CNN等检测器上实验证明,Confluence比NMS性能更强,更可靠!
2 Confluence
A. Manhattan Distance
曼哈顿距离MD,是两个点之间垂直和水平距离的总和。因此定义任意两个边界框之间的接近程度P为
P值比较小表示高度Confluence的边界框,而P值比较高表示候选框不是由同一物体产生得到的,它们可能只是在某种程度上重叠,或者完全不相交。
B. Normalization
上面计算的P只在边界框大小相似的情况下适用,对于目标及其对应的边框将差异较大的时候需要归一化边界框坐标缩放到0到1之间。
标准化允许通过使任意两个大的目标内边界框与任意两个小的目标间边界框的关系相比较来区分目标内边界框和目标间边界框。
C. Intra-Cluster Retention and Removal
由于所有坐标对都归一化在0到1之间,因此对于任何一对相交的边界框的P值都小于2。假设它们属于同一簇。一旦识别出簇,通过对P值升序排序,找到簇内最优边界框。保留第n个位置P值最小的边界框为最Confluence的边界框。
一旦选择了最Confluence的边界框,所有接近值低于预定义阈值的簇内边界框将被移除。递归地重复这个过程,直到处理完所有的边界框。
D. Confidence Score Weighting
Confluence通过综合考虑置信分数c和与之竞争的边界框的P值来评估给定边界框b的最优性,即
由于c是一个介于0.05和1之间的值(置信度c低于0.05的所有边界框都不考虑),人为地增大了高置信度框被选出的概率。反之,低置信框的WP值会更大。
E. pseudo-code
步骤:
- 1、对所有的类别进行遍历。
- 2、得到对应类别的所有的检测框。
- 3、计算对应类别的所有检测框的两两接近度p,计算的时候使用坐标的归一化。
- 4、遍历对应类别中的每一个检测框,对每个检测框,把p值小于2的归到一个簇里面,并计算对应的置信度加权接近度。
- 5、找到一个簇里面具有最小加权p值(最优)的那个框,找到之后,保存这个框,并且将其从总的框列表里删除。
- 6、对于其他的所有的框,其接近度小于预设阈值的全部去除。
- 7、循环处理所有的框。
- PyTorch代码:
3 Experimental
实验结果可以看出,对Recall的提升还是很大的。