锚框和NMS极大值抑制想必大家在诸多地方都遇到过,那么究竟什么是极大值抑制呢?
锚框也就是我们很多书中说的anchor。这是什么意思呢?实际上这就是在进行目标检测的时候在特征图上每个点都设置相同数量的框框这就叫锚框。 如图所示,我们可以看到左边的一堆方格子其实是特征层的像素点。 其中红色框出来的是一个3×3的卷积。 所有特征层的像素点都给分配k个锚框,如右图一样的锚框,每个像素点都有好几个。 然后映射到原图上去,如果图整体去网络采用的是vgg16,其中的3×3卷积层padding全部都是1,stride也都等于1,因此conv层不改变图像大小,只有pooling层改变大小,因此我们只需要关注有多少的pooling层,就可以将特征层的像素点对应到原图上去。
这些框框是用来做什么的呢?当然是用来检测的了! 首先呢我们关注一下IOU:
显而易见这就是IOU,衡量预测框的精准度,不过IOU也有缺点,有兴趣的小伙伴可以看看之后改进的方法。在得到诸多锚框之后,我们对锚框和正确的目标框计算IOU,设置阈值a,大于a则保存我们的锚框,经过深度学习的方法调整我们的锚框,之后进行的就是极大值抑制。
本图来源于《动手学深度学习》。
我们可以看到,在图中对狗检测的有很多个框,0.9,0.8,0.7,还有一个对猫的0.9。 NMS极大值抑制就是在不影响猫的框的情况下去除对狗检测的其它得分小的框。 设置阈值th,设对狗的最大的分框为a,然后是b,c。对猫的是d,用a分别对b,c,d,计算IOU值,将IOU值大于th的框都去除。这样保留猫的框框。 本次的介绍就到这里了谢谢大家!