将PNG或JPEG图像转换为GAN算法接受的格式

问题描述 投票:0回答:2

我是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
2个回答
1
投票

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

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

gray_data = data[:,:,0]

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

small_data = gray_data[:28,:28]

这将导致(28,28)。大多数学习算法都期望不是一个而是几个图像,主要是格式(#images,高度,宽度)。所以你需要重塑它:

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

应该这样做。但是,正确的RGB(A)到格雷转换和调整大小将是更好的解决方案。查看枕头文档了解详细信息。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.