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

我刚开始接触GAN领域,尝试了几种教程,但大多数都使用了Cifar或mnist数据集。所以大多数是这种内置格式形状(xxxx, 28, 28)。

最近,我想尝试使用其他图片。例如,

from scipy import miscdata = misc.imread("1.PNG") #这可以是任何JPEG或其他格式的图片print(data.shape)

我的输出:

(842, 1116, 4) # 说实话,我不明白这是什么意思。842是指842个文件吗?我以为我只加载了一张图片。

我期望的输出:

由于我是新手,我真的很想问一下是否应该变成(1, 28, 28)或者其他什么?这样我就可以适应GAN,因为教程中使用了784

通常,在mnist数据集中,我们有(60000, 28, 28),这意味着6万张图片,每张图片的形状为28×28。那我的上述输出呢?(842, 1116, 4)并不意味着842张图片,形状为1116 x 4,对吗?我只加载了一张图片。有人能帮我转换并理解它吗?谢谢


回答:

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

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

gray_data = data[:,:,0]

要将其用作训练数据,你现在可以将其调整大小至28×28,或者从中提取28×28大小的较小图像块。

small_data = gray_data[:28,:28]

这将导致(28,28)。大多数学习算法期望不止一张而是多张图像,大多数情况下格式为(#images, height, width)。所以你需要重塑它:

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

这样应该可以了。然而,适当的RGB(A)到灰度转换和调整大小将是更好的解决方案。请查看Pillow文档以获取详细信息。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注