anchor在计算机视觉中有锚点或锚框,目标检测中常出现的anchor box是锚框,表示固定的参考框。
目标检测的任务:
在哪里有东西
难点:
目标的类别不确定、数量不确定、位置不确定、尺度不确定
传统算法的解决方式:
都要金字塔多尺度+遍历滑窗的方式,逐尺度逐位置判断"这个尺度的这个位置处有没有认识的目标",非常笨重耗时,并不能很好的推广适用。
现状:
近期顶尖(SOTA)的目标检测方法几乎都用了anchor技术
作用:
首先预设一组不同尺度不同位置的固定参考框,覆盖几乎所有位置和尺度,每个参考框负责检测与其交并比大于阈值 (训练预设值,常用0.5或0.7) 的目标,anchor技术将问题转换为"这个固定参考框中有没有认识的目标,目标框偏离参考框多远",不再需要多尺度遍历滑窗,真正实现了又好又快,如在Faster R-CNN和SSD两大主流目标检测框架及扩展算法中anchor都是重要部分。
举例:
1.预设anchor

2.识别结果与预设anchor的IOU计算

如按照上图所示,计算所有红色与绿色的IOU(交并比),根据阈值来过滤掉我们需要的后,可能如下图所示:

蓝色部分为符合阈值剩余的部分。
当然在实际中存在一些其他的问题来辅助最后的预算,比如非极大值抑制(NMS)来挑选一个置信度最高的相似目标。
注意:
上图的示例仅仅是一个示例
真实的anchor应该参考如下图的方式:

b图中,生成的anchor为:\(8*8*(预设anchor数量)\)
c图中,生成的anchor为:\(4*4*(预设anchor数量)\)
以上为我根据查找的资料观摩后的个人理解
并没有去深究代码实现和论文
仅供参考
如果理解有误,希望您能不吝赐教。
参考
https://zhuanlan.zhihu.com/p/55824651
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:目标检测 anchor 理解笔记 - Python技术站