【发布时间】:2020-02-28 18:45:17
【问题描述】:
我有一个大小为 (5, 1, 44, 44)(批次、通道、高度、宽度)的 PyTorch 张量,我想将其“调整大小”为 (5, 1, 224, 224)
我该怎么做?我应该使用哪些功能?
【问题讨论】:
-
你想如何调整它的大小?通过用
0s 填充?通过放大图像?
标签: python computer-vision pytorch image-resizing tensor
我有一个大小为 (5, 1, 44, 44)(批次、通道、高度、宽度)的 PyTorch 张量,我想将其“调整大小”为 (5, 1, 224, 224)
我该怎么做?我应该使用哪些功能?
【问题讨论】:
0s 填充?通过放大图像?
标签: python computer-vision pytorch image-resizing tensor
您似乎正在寻找interpolate(nn.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 包,它可以在调整图像大小时准确处理各种“边缘情况”。这在直接合并不同尺度的特征时会起作用:不准确的插值可能会导致错位。
【讨论】:
TorchVision transforms.functional.resize() 功能正是您要找的:
import torchvision.transforms.functional as F
t = torch.randn([5, 1, 44, 44])
t_resized = F.resize(t, 224)
如果您希望使用双线性以外的其他插值模式,可以使用 interpolation 参数指定。
【讨论】: