【问题标题】:Convert PNG or JPEG images to the format accepted by GAN algorithm将 PNG 或 JPEG 图像转换为 GAN 算法接受的格式
【发布时间】:2019-03-13 11:58:23
【问题描述】:

我是 GAN 领域的新手,我尝试了一些教程,但是大部分教程都使用了 Cifar 或 mnist 数据集。所以大多数都是以这样的格式(xxxx、28、28)构建的。

最近,我想试试我们的另一张照片。例如,

from scipy import misc
data = misc.imread("1.PNG") #this can be any images from JPEG or any
print(data.shape)

我的输出:

(842, 1116, 4) # Seriously I dont understand what does this mean. 842 means 842 files? I thought I have only 1 image loaded.

我的预期输出:

由于我是新手,我真的很想提出问题,应该是 (1, 28, 28) 还是其他?这样我就可以适应 GAN,因为它在教程中使用了 784

通常,在 mnist 的数据集中,我们有 (60000, 28, 28),这意味着 60k 张图片,每张图片的形状为 28x28。我上面的输出呢? (842, 1116, 4) 不是指 842 张 1116 x 4 的图片吧?我只加载了一张图片。有人可以帮助我如何转换它并理解它。谢谢

【问题讨论】:

    标签: python numpy machine-learning generative-adversarial-network


    【解决方案1】:

    imread 使用 PIL 或 Pillow 读取图像,它以以下格式返回图像: 高 x 宽 x 通道 其中通道通常是 3 个通道(正常彩色图像的红色、绿色、蓝色 [RGB])或有时是 4 个通道(红色、绿色、蓝色、alpha/透明度 [RGBA])。

    因此,您读取了具有 4 个颜色通道的大小为 842x1116 像素的图像。你说你使用形状 (xxxx, 28, 28) 的训练数据,所以你使用灰度而不是彩色图像。第一步是将彩色图像转换为灰度。 Pillow(作为 PIL 的替代品)是一个很好的图像操作库。或者,您可以只使用一个频道

    gray_data = data[:,:,0]
    

    要将其用作训练数据,您现在可以将其调整为 28x28 或从中提取 28x28 大小的小块。

    small_data = gray_data[:28,:28]
    

    这将导致 (28,28)。大多数学习算法需要的不是一张,而是几张图像,主要是格式(#images、height、width)。所以你需要重塑它:

    final_data = small_data.reshape(1,28,28)
    

    应该这样做。但是,适当的 RGB(A) 到灰度转换和调整大小将是更好的解决方案。详情请查看 Pillow 文档。

    【讨论】:

    • 非常感谢!这真的对我有很大帮助,而且您列出的示例和建议也有很大帮助!我会检查更多并尝试现在理解它。再次感谢您
    【解决方案2】:

    图像 x、y (842x1116) 的大小(以像素为单位)和颜色通道数 - 4(R、G、B、Alpha)

    【讨论】:

    • 我明白了,所以如果我想重塑它,我该怎么做呢?我可以把它做成 (1,784) 的形状吗?
    • 我对GAN算法以及需要什么格式一无所知。如果 (N, x,y) 其中 N 是图片数量,x, y 是尺寸,则您可以使用 scipy.misc.imresize docs.scipy.org/doc/scipy/reference/generated/… 将 1.PNG 的大小调整为 28x28
    猜你喜欢
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-18
    • 2011-09-09
    • 2022-08-22
    • 1970-01-01
    • 2010-11-19
    相关资源
    最近更新 更多