为什么使用 matplotlib 无法正确显示 CIFAR-10 图像?

新手上路,请多包涵

我从训练集中拍摄了一张大小为 (3,32,32) 的图像 (‘img’)。我用过 plt.imshow(img.T)。图像不清晰。现在我必须对 image(‘img’) 进行更改以使其更清晰可见。谢谢。

这是我得到的图像

原文由 Siddharth 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 873
2 个回答

以下打印随机 Cifar10 图像的 5X5 网格。它并不模糊,但也不完美。欢迎任何建议。

 %matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
from six.moves import cPickle

f = open('data/cifar10/cifar-10-batches-py/data_batch_1', 'rb')
datadict = cPickle.load(f,encoding='latin1')
f.close()
X = datadict["data"]
Y = datadict['labels']
X = X.reshape(10000, 3, 32, 32).transpose(0,2,3,1).astype("uint8")
Y = np.array(Y)

#Visualizing CIFAR 10
fig, axes1 = plt.subplots(5,5,figsize=(3,3))
for j in range(5):
    for k in range(5):
        i = np.random.choice(range(len(X)))
        axes1[j][k].set_axis_off()
        axes1[j][k].imshow(X[i:i+1][0])

原文由 user3476359 发布,翻译遵循 CC BY-SA 3.0 许可协议

确保在要显示图像时不规范化数据集。

例子 :

装载机…

 import torch
from torchvision import datasets, transforms
import matplotlib.pyplot as plt

train_loader = torch.utils.data.DataLoader(
    datasets.CIFAR10('../data', train=True, download=True,
                     transform=transforms.Compose([
                         transforms.RandomHorizontalFlip(),
                         transforms.ToTensor(),
                        #  transforms.Normalize(
                        #      (0.4914, 0.4822, 0.4465), (0.247, 0.243, 0.261))
                     ])),
    batch_size=64, shuffle=True)

显示图像的代码…

 img = next(iter(train_loader))[0][0]
plt.imshow(transforms.ToPILImage()(img))

归一化

归一化

没有归一化

未归一化

原文由 Alexis Breton 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题