无法更改 Faster RCNN 中的锚点

Can't change the Anchors in Faster RCNN

我是 pytorch 的新手,我试图在 pytorch 的 Faster RCNN 网络上放置一些自定义锚点。基本上,我使用的是 resnet50 backbone,当我尝试放置锚点时,出现不匹配错误。

这是我的代码:

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 的输入无效。

好吧,在深入研究 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
            )

它会起作用的!