【发布时间】:2021-11-02 07:07:30
【问题描述】:
我正在尝试使用 Pytorch 实现 Faster-RCNN 模型。
在结构中,模型的第一个元素是Transform。
from torchvision.models.detection import fasterrcnn_resnet50_fpn
model = fasterrcnn_resnet50_fpn(pretrained=True)
print(model.transform)
GeneralizedRCNNTransform(
Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
Resize(min_size=(800,), max_size=1333, mode='bilinear')
)
当图像通过Resize() 时,它们会根据宽度和高度的比例输出(800,h) 或(w, 1333)。
for i in range(2):
_, image, target = testset.__getitem__(i)
img = image.unsqueeze(0)
output, _ = model.transform(img)
Before Transform : torch.Size([512, 640])
After Transform : [(800, 1000)]
Before Transform : torch.Size([315, 640])
After Transform : [(656, 1333)]
我的问题是如何获得那些调整大小的输出以及他们为什么使用这种方法?论文里查不到资料,也看不懂fasterrcnn_resnet50_fpn中关于transform的源码。
对不起我的英语
【问题讨论】:
-
什么是
model.transform?是你实施的吗? -
我编辑了我的代码。这是
torchvision中的 Faster-RCNN 模型。 -
我无法重现这个,因为
GeneralizedRCNNTransformResize和Normalize没有被导入。请您发布一个可重现的最小示例,以便我可以提供更好的帮助吗?
标签: python pytorch faster-rcnn