Невозможно изменить якоря в Faster RCNN

Я новичок в pytorch, и я пытался разместить некоторые пользовательские привязки в моей сети Faster RCNN в pytorch. В основном я использую магистраль resnet50, и когда я пытаюсь поставить якоря, я получаю ошибку несоответствия.

Это код, который у меня есть:

backbone = torchvision.models.detection.backbone_utils.resnet_fpn_backbone('resnet50', True)
backbone.out_channels = 256

anchor_generator = AnchorGenerator(sizes=((4, 8, 16, 32, 64, 128),),
                                    aspect_ratios=((0.5, 1.0, 2.0),))

roi_pooler = torchvision.ops.MultiScaleRoIAlign(featmap_names=[0],
                                                    output_size=7,
                                                    sampling_ratio=2)

model = FasterRCNN(backbone, 
                   num_classes=10,
                   rpn_anchor_generator=anchor_generator,
                   box_roi_pool=roi_pooler)

Я получил следующую ошибку: фигура '[1440000, -1]' недопустима для ввода размера 7674336.


person mCalado    schedule 10.07.2019    source источник


Ответы (1)


Хорошо, покопавшись в исходном коде PyTorch Faster RCNN, я нашел, как они инициализируют якоря:

anchor_sizes = ((32,), (64,), (128,), (256,), (512,))
            aspect_ratios = ((0.5, 1.0, 2.0),) * len(anchor_sizes)

rpn_anchor_generator = AnchorGenerator(
                anchor_sizes, aspect_ratios
            )

Следуя тому же шаблону для моих пользовательских якорей, код будет следующим:

anchor_sizes = ((4,), (8,), (16,), (32,), (64,), (128,))
            aspect_ratios = ((0.5, 1.0, 2.0),) * len(anchor_sizes)

rpn_anchor_generator = AnchorGenerator(
                anchor_sizes, aspect_ratios
            )

Это будет работать!

person mCalado    schedule 16.07.2019
comment
Магистраль по умолчанию предполагает 5 размеров / соотношений. Я предполагаю, что ваш последний добавленный (128,) будет проигнорирован. - person Cynichniy Bandera; 03.09.2020