image-processing - PyTorch 在使用 Dataloader 加载时平铺图像
问题描述
我正在尝试使用 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
解决方案
Pytorch 以通道优先格式存储张量,因此 3 通道图像是形状为 (3, H, W) 的张量。Matplotlib 期望数据采用通道最后格式,即 (H, W, 3)。重塑不会重新排列尺寸,因为您需要Tensor.permute。
plt.imshow(images[6].permute(1, 2, 0))
推荐阅读
- javascript - 将div元素转换为ul?
- php - PHP AJAX相互依赖的下拉列表不起作用
- c# - 如何使用 C# 将 excel 动态列名称插入 sql
- android - 更改默认拨号器的请求未在某些设备上显示系统对话框
- r - 在 R 的 data.table 中,如何在数据表中创建一个新列,其值匹配并对应于列元素和另一个表?
- python - Python如何在循环中解析json usng标签
- steam - 如何检查 Steam 帐户是否是 Steam 上现有已开发游戏的开发者帐户?
- python - 使用 pyqt5 和 malplotlib 进行图形滚动
- c - 测量 CUDA 内核时时序不同
- delphi - 如何将 TPath 数据保存为 `.jpg` 图像