anchor通常设置为3ratio*3scales=9anchors,但实际使用时可能需要进行调整。改变anchor数量或尺寸。
先看Faster R-CNN源码产生anchors的部分,位置$Faster RCNN/lib/rpn/generate_anchors.py:
def generate_anchors(base_size=16, ratios=[0.5, 1, 2],
scales=2**np.arange(3, 6)):
"""
Generate anchor (reference) windows by enumerating aspect ratios X
scales wrt a reference (0, 0, 15, 15) window.
"""
base_anchor = np.array([1, 1, base_size, base_size]) - 1
ratio_anchors = _ratio_enum(base_anchor, ratios)
anchors = np.vstack([_scale_enum(ratio_anchors[i, :], scales)
for i in xrange(ratio_anchors.shape[0])])
return anchors
这个函数三个参数base_size, ratios 和scales,且都有默认值。base_size要和scales集合起来看,anchor的基础尺度=base_size*scales,例如这里默认base_size=16, scales=(8,16,32),那么三个基本尺度分别是128,256和512。然后在这三个基本尺度上才有3个ratio。