【问题标题】:PyTorch is tiling images when loaded with DataloaderPyTorch 在使用 Dataloader 加载时平铺图像
【发布时间】:2021-02-18 15:22:44
【问题描述】:

我正在尝试使用 PyTorch 数据加载器加载图像数据集,但生成的转换是平铺的,并且没有像我期望的那样将原始图像裁剪到中心。

transform = transforms.Compose([transforms.Resize(224),
                             transforms.CenterCrop(224),
                             transforms.ToTensor()])

dataset = datasets.ImageFolder('ml-models/downloads/', transform=transform)
dataloader = torch.utils.data.DataLoader(dataset, batch_size=32, shuffle=True)


images, labels = next(iter(dataloader))
import matplotlib.pyplot as plt
plt.imshow(images[6].reshape(224, 224, 3))

生成的图像是平铺的,而不是中心裁剪的。[![如此处的 Jupyter 快照所示][1]][1]

提供的转换有问题吗? (图片如下链接所示:) [1]:https://i.stack.imgur.com/HtrIa.png

【问题讨论】:

  • 我意识到原始图像和处理后的图像在我的共享代码中引用的不是同一个文件,所以我检查了其他文件,发现这种转换适用于所有文件。如有必要,我可以更新帖子中的原始图片以显示此内容。

标签: image-processing pytorch torchvision


【解决方案1】:

Pytorch 以通道优先格式存储张量,因此 3 通道图像是形状为 (3, H, W) 的张量。 Matplotlib 期望数据采用通道最后的格式,即 (H, W, 3)。整形不会重新排列尺寸,因为你需要Tensor.permute

plt.imshow(images[6].permute(1, 2, 0))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-02
    • 2018-10-07
    • 2020-03-10
    • 2011-12-18
    • 1970-01-01
    • 2014-02-25
    • 2022-01-24
    • 2023-03-10
    相关资源
    最近更新 更多