anchor在计算机视觉中有锚点或锚框,目标检测中常出现的anchor box是锚框,表示固定的参考框

目标检测的任务:

在哪里有东西

难点:

目标的类别不确定、数量不确定、位置不确定、尺度不确定

传统算法的解决方式:

都要金字塔多尺度+遍历滑窗的方式,逐尺度逐位置判断"这个尺度的这个位置处有没有认识的目标",非常笨重耗时,并不能很好的推广适用。

现状:

近期顶尖(SOTA)的目标检测方法几乎都用了anchor技术

作用:

首先预设一组不同尺度不同位置的固定参考框,覆盖几乎所有位置和尺度,每个参考框负责检测与其交并比大于阈值 (训练预设值,常用0.5或0.7) 的目标,anchor技术将问题转换为"这个固定参考框中有没有认识的目标,目标框偏离参考框多远",不再需要多尺度遍历滑窗,真正实现了又好又快,如在Faster R-CNN和SSD两大主流目标检测框架及扩展算法中anchor都是重要部分。

举例:

1.预设anchor
目标检测 anchor 理解笔记

2.识别结果与预设anchor的IOU计算
目标检测 anchor 理解笔记

如按照上图所示,计算所有红色与绿色的IOU(交并比),根据阈值来过滤掉我们需要的后,可能如下图所示:
目标检测 anchor 理解笔记
蓝色部分为符合阈值剩余的部分。
当然在实际中存在一些其他的问题来辅助最后的预算,比如非极大值抑制(NMS)来挑选一个置信度最高的相似目标。

注意:

上图的示例仅仅是一个示例
真实的anchor应该参考如下图的方式:
目标检测 anchor 理解笔记

b图中,生成的anchor为:\(8*8*(预设anchor数量)\)
c图中,生成的anchor为:\(4*4*(预设anchor数量)\)

以上为我根据查找的资料观摩后的个人理解
并没有去深究代码实现和论文
仅供参考
如果理解有误,希望您能不吝赐教。

参考

https://zhuanlan.zhihu.com/p/55824651