【问题标题】:How to resize a PyTorch tensor?如何调整 PyTorch 张量的大小?
【发布时间】:2020-02-28 18:45:17
【问题描述】:

我有一个大小为 (5, 1, 44, 44)(批次、通道、高度、宽度)的 PyTorch 张量,我想将其“调整大小”为 (5, 1, 224, 224)

我该怎么做?我应该使用哪些功能?

【问题讨论】:

  • 你想如何调整它的大小?通过用0s 填充?通过放大图像?

标签: python computer-vision pytorch image-resizing tensor


【解决方案1】:

您似乎正在寻找interpolatenn.functional 中的一个函数):

import torch.nn.functional as nnf

x = torch.rand(5, 1, 44, 44)
out = nnf.interpolate(x, size=(224, 224), mode='bicubic', align_corners=False)

如果你真的关心插值的准确性,你应该看看ResizeRight:一个 pytorch/numpy 包,它可以在调整图像大小时准确处理各种“边缘情况”。这在直接合并不同尺度的特征时会起作用:不准确的插值可能会导致错位。

【讨论】:

  • 关于双三次插值的警告是,结果的范围可能比输入的范围更宽。如果这比你可以使用双线性更重要
【解决方案2】:

TorchVision transforms.functional.resize() 功能正是您要找的:

import torchvision.transforms.functional as F

t = torch.randn([5, 1, 44, 44])
t_resized = F.resize(t, 224)

如果您希望使用双线性以外的其他插值模式,可以使用 interpolation 参数指定。

【讨论】:

    猜你喜欢
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    • 1970-01-01
    • 2019-04-21
    • 2020-08-31
    • 2020-12-16
    相关资源
    最近更新 更多