2019/12/5
anchors_1
anchors的作用就是用于生成前述第2段中的bbox_targets,同时也就是第3段中的“真实的建议框”。我们在准备训练faster rcnn的数据集时,准备的是某具体目标的类别标签和位置信息,并没有直接给定“真实建议框”的类别和位置信息。解决该问题的方法就是利用anchors机制,选择图像的m*n个位置,每个位置生成9个矩形框(也就是9个anchors),然后利用数据集中目标的类别和位置信息给anchors分类——如果某个anchor与真实目标的矩形框交叠率足够大,则认为该anchor类别为“正”;如果太小,则为“负”。此外还会用到其他一些机制,比如非极大值抑制,正anchor和负anchor各选128个用于训练,以及去除超出图像边界的anchor等。这样,图像中保留的anchors都分好了类别(前景/背景),而且它们都自带坐标信息,这些信息就可以作为建议框的标签信息,用于训练rpn了。
anchors_2
关于anchor我觉得比较“清晰”的说法:
一般是在最末层的 feature map 上再用3 * 3的窗口去卷积特征。当3 * 3的卷积核滑动到特征图的某一个位置时,以当前滑动窗口中心为中心映射到原图的一个区域(注意 feature map 上的一个点是可以映射到原图的一个区域的,这个很好理解,感受野起的作用啊~…),以原图上这个区域的中心对应一个尺度和长宽比,就是一个anchor了。fast rcnn 使用3种尺度和3种长宽比(1:1;1:2;2:1),则在每一个滑动位置就有 3*3 = 9 个anchor。