由于工作中经常会遇到NMS算法,因此想好好的把这个算法吃透。现整理如下:
按照我的理解(刚入职的小白),NMS算法是除去在目标检测中同一目标重叠检测框的。
输入的量:一幅图像中检测出来的所有的boxes,所有box的scores(或者说置信度),以及一个为overlap设定的阈值threshold。
输出的量:去掉重叠box后的boxes。
NMS的思想:其实理解了还蛮简单,就是计算重叠框中score最高的框与其它的框的overlap,如果这个overlap大于我们设定的threshold,说明这些框很可能检测的目标是同一个目标,因此我们保留score最高的框,将其它的框去掉。如果overlap小于我们设定的threshold,说明其它的框可能检测是是别的目标,保留即可。
先记录到这里,我看到网上有不少matlab及python的实现,哪天有空我写下C++的实现。