寻找generate_anchor_base
方法,这是ChainerCV中的Faster R-CNN util方法。
base_size = 16
是什么?我在文档中看到它是
参考窗口的宽度和高度。
但是“参考窗口”是什么意思?
也说anchor_scales=[8, 16, 32]
是锚点的区域,但我认为这些区域是(128,256,512)
另一个问题:
如果base size
为16,h = 128
和w=128
,是否意味着anchor_base[index, 0] = py - h / 2
为负值?
因为py = 8且h / 2 = 128/2
答案 0 :(得分:1)
该方法是Faster R-CNN的实用功能,因此我假设您了解什么是Faster R-CNN中提出的“锚点”。
base_size
和anchor_scales
确定锚点的大小。
例如,当您使用base_size=16
和anchor_scales=[8, 16, 32]
(以及ratio=1.0
)时,锚点的高度和宽度将为16 * [8, 16, 32] = (128, 256, 512)
。
ratio
确定高宽比。
(我可能在下面的段落中写错了,如果我写错了,请更正。)
我认为需要将base_size
设置为当前隐藏层的比例尺的大小。在chainercv
更快的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
值只是一个相对值。一旦在模型(here)初始化时准备好anchor_base
,就会在anchor
的每个前向调用(here)中创建实际(绝对值)_enumerate_shifted_anchor
方法。