目标检测这个东西从来都不是一个可以直接端到端的东西,往往需要很多的联合训练,调整试错,前处理后处理等等。


对于目标检测算法,它包含了三个要素:Backbone + Head + Postprocess,上一篇文章介绍了Light Head R-CNN,它是对“head”部分的优化,对于Postprocess部分,最早用的是NMS,后面出现了Soft NMS和Softer NMS,本文将分别解释它们的动机和原理,希望能对大家有所帮助。

1 NMS

NMS,它的全称为“non-maximum supression”。为什么要使用nms呢?因为在目标检测任务中,不管是one-stage还是two-stage的算法,最终算法都会预测出多个proposals。在后处理部分中,需要对这些proposals做筛选。

1.1 动机

(1)优先选择分类score较高的proposal;
(2)跟分类score重叠较多的proposals,可以视为冗余的预测框;

1.2 步骤

(1)将算法预测出的所有proposals,按照不同的类别标签分组;
(2)对于每一个类别的所有proposals,记作 B B B BB B BBBNt的proposals,使用加权平均更新其位置坐标,从而达到提高定位精度的目的。因为softer-NMS关注的是单个框的定位精度,而NMS和soft-NMS关注的是单个框的冗余性,显然关注点不同,所以softer-NMS可以和soft-NMS组合使用,此时效果更佳。

4 总结

NMS:只适用于图片中目标比较稀疏的场景,即目标之间的间距较大;

soft-NMS:可以部分解决出现稠密目标的情况(ps:Face++提出了RepLoss,从模型的角度解决这一问题,大家感兴趣也可以去读读该论文);

softer-NMS:该后处理方法采用"bagging"的思想,通过后处理提高定位精度,可以和soft-NMS组合使用。


5 参考文献

https://arxiv.org/pdf/1704.04503.pdf

https://arxiv.org/pdf/1809.08545.pdf

https://megvii.com/newscenter/119

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐