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

时间:2018-11-18 11:52:27

标签: chainer chainercv

Github page

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

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

  

参考窗口的宽度和高度。

但是“参考窗口”是什么意思?

也说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

1 个答案:

答案 0 :(得分:1)

该方法是Faster R-CNN的实用功能,因此我假设您了解什么是Faster R-CNN中提出的“锚点”。

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

(我可能在下面的段落中写错了,如果我写错了,请更正。)

我认为需要将base_size设置为当前隐藏层的比例尺的大小。在chainercv更快的R-CNN实现中,extractor的功能被馈入rpn(区域提议网络),而generate_anchor_baserpn中被使用。因此,您需要注意extractor输出的功能是什么。 chainercv使用VGG16作为特征提取器,conv5_3层用作提取特征(请参见here),该层是max_pooling_2d被应用4次的地方,结果缩小了2 ^ 4 = 16倍。

对于另一个问题,我认为您的理解是正确的,py - h / 2将为负值。但是这个anchor_base值只是一个相对值。一旦在模型(here)初始化时准备好anchor_base,就会在anchor的每个前向调用(here)中创建实际(绝对值)_enumerate_shifted_anchor方法。