当前位置:网站首页>FasterRCNN示例代码测试1:令anchor_generator = None

FasterRCNN示例代码测试1:令anchor_generator = None

2022-07-23 00:50:00 Eden_mm

关注RPN一栏目:

import torch
import torchvision
from torchvision.models.detection import FasterRCNN
from torchvision.models.detection.rpn import AnchorGenerator

# 定义backbone
backbone = torchvision.models.mobilenet_v2().features

backbone.out_channels = 1280

##!!!! RPN,关注这里
#anchor_generator = AnchorGenerator(sizes=((32, 64, 128, 256, 512),), aspect_ratios=((0.5, 1, 2),))
anchor_generator = None

# 定义哪个feature将会被使用进行RoIAlign
roi_pooler = torchvision.ops.MultiScaleRoIAlign(featmap_names=['0'],
                                                output_size=7,
                                                sampling_ratio=2)

# 整合进模型

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

model.eval()

# 编个数据
x = [torch.rand(3, 500, 689), torch.rand(3, 400, 654)]


a = model(x)

print(a)

——————————————————————————————————————————

##!!!! RPN,关注这里
#anchor_generator = AnchorGenerator(sizes=((32, 64, 128, 256, 512),), aspect_ratios=((0.5, 1, 2),))
anchor_generator = None

一般情况可用自己设置的anchor_generator,也可以系统默认的,参考fast-rcnn源码

def _default_anchorgen():
    anchor_sizes = ((32,), (64,), (128,), (256,), (512,))
    aspect_ratios = ((0.5, 1.0, 2.0),) * len(anchor_sizes)
    return AnchorGenerator(anchor_sizes, aspect_ratios)

        if rpn_anchor_generator is None:
            rpn_anchor_generator = _default_anchorgen()

——————————————————————————————————————————————
但是我使用默认的,就发生了报错

  assert condition, message
AssertionError: Anchors should be Tuple[Tuple[int]] because each feature map could potentially have different sizes and aspect ratios. 
There needs to be a match between the number of feature maps passed and the number of sizes / aspect ratios specified.

推测:默认的def _default_anchorgen(),这个是FPN的,多尺度生成。

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

(32,), (64,), (128,), (256,), (512,)分别代表五个feature_map上取值大小;
aspect_ratios =((0.5, 1.0, 2.0), (0.5, 1.0, 2.0), (0.5, 1.0, 2.0), (0.5, 1.0, 2.0), (0.5, 1.0, 2.0))
这都是我猜的。。。。。。。。还没看锚框生成,暂定

原网站

版权声明
本文为[Eden_mm]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_45583898/article/details/125927213