0

我是 pytorch 的新手,我试图在 pytorch 的 Faster RCNN 网络上放置一些自定义锚点。基本上,我使用的是 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的输入无效。

4

1 回答 1

2

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

它会起作用的!

于 2019-07-16T13:55:17.277 回答