Open clw5180 opened 5 years ago
你好,我也发现了这个问题,跟您想的差不多。我对代码进行了修改,使得每个特征图上对应一个尺度的anchor,即RPN的写法
你好,我也发现了这个问题,跟您想的差不多。我对代码进行了修改,使得每个特征图上对应一个尺度的anchor,即RPN的写法
你好,请问是将倒数第二行改为size/stride吗?配置文件的anchor参数如何设置呢? def generate_anchors( stride=16, sizes=(8, 16, 32), aspect_ratios=(0.5, 1, 2), angle=(-30.0, 0.0, 30.0, 60.0, 90.0, 120.0) ): """Generates a matrix of anchor boxes in (x, y, w, h, theta) format. Anchors are centered on stride / 2, have (approximate) sqrt areas of the specified sizes, and aspect ratios as given. """ return generate_Ranchors( stride, aspect_ratios, sizes, angle )
对于FPN版本,作者推荐的anchor size为[2, 4, 8, 16, 32],和maskrcnn_benchmark默认的anchor size [32, 64, 128, 256, 512]差别较大,我看了一下生成anchor部分的代码还是有一定区别:
原始RPN:
而对于RRPN,这里sizes少除了一个stride:
而在函数内部, 对于RPN:
RRPN:
对于RPN的写法,generate_anchors相当于传入的是size / stride,即[8, 8, 8, 8, 8],即每个feature map上的size,如果换算到原图就要乘以各自层的stride,得到[32, 64, 128, 256, 512] 而对于RRPN这种写法,generate_anchors相当于传入的是size本身,即[2, 4, 8, 16, 32],换算到原图的实际anchor_size应该也要乘一个stride,变成[8, 32, 128, 512, 2048]。不知这样理解是否正确?