generate_anchor_base() 的参数是什么意思?

What does generate_anchor_base()'s arguments mean?

Github page

寻找generate_anchor_base方法,即ChainerCV中的Faster R-CNN util方法。

什么是base_size = 16?我在文档中看到它是

The width and the height of the reference window.

但是 "reference window" 是什么意思?

它还说 anchor_scales=[8, 16, 32] 是锚点的区域,但我认为这些区域是 (128, 256, 512)

另一个问题:
如果 base size 是 16 而 h = 128w=128,那是否意味着 anchor_base[index, 0] = py - h / 2 是一个负值? 因为 py = 8 和 h/2 = 128/2

该方法是 Faster R-CNN 的实用函数,因此我假设您了解 Faster R-CNN 中提出的 "anchor" 是什么。

base_sizeanchor_scales 决定锚点的大小。 例如,当 base_size=16anchor_scales=[8, 16, 32](以及 ratio=1.0)时,锚点的高度和宽度将是 16 * [8, 16, 32] = (128, 256, 512),如您所料。 ratio决定高宽比。

(以下段落可能有错误,如有错误请指正。)

我觉得需要设置base_size为当前隐藏层的scale的大小。在 chainercv Faster R-CNN 实现中,extractor 的特征被馈送到 rpn(区域提议网络)并且 generate_anchor_base 被用于 rpn。所以你需要注意 extractor 输出的特征是什么。 chainercv使用VGG16作为特征提取器,使用conv5_3层作为提取特征(参见here),这一层是max_pooling_2d应用了4次的地方,即结果 2^4=16 倍缩小特征。

另外一个问题,我觉得你的理解是正确的,py - h / 2会是负值。但是这个anchor_base值只是一个相对值。在 _enumerate_shifted_anchor 方法中的模型 (here), actual (absolute value) anchor is created in each forward call (here) 初始化时准备好 anchor_base