Этот метод является утилитарной функцией 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
Faster R-CNN функция extractor
подается в rpn
(сеть региональных предложений), а generate_anchor_base
используется в rpn
.Поэтому вам нужно позаботиться о том, что является особенностью вывода extractor
.chainercv
использует VGG16 в качестве экстрактора объектов, а слой conv5_3
используется в качестве извлеченного объекта (см. здесь ), этот слой является местом, где max_pooling_2d
применяется 4 раза, в результате 2 ^ 4= 16-кратная малая особенность.
По другому вопросу, я думаю, ваше понимание верно, py - h / 2
будет отрицательным значением.Но это anchor_base
значение является лишь относительным значением.Как только anchor_base
подготовлено при инициализации модели ( здесь ), фактическое (абсолютное значение) anchor
создается в каждом прямом вызове ( здесь ) в методе _enumerate_shifted_anchor
.