我正在尝试构建一个可以绘制肖像的 GAN 模型,我可以使用 mnist 数据集来完成,我想将我的数据集更改为目标人物的肖像。我只有几个示例图像,所以我尝试使用ImageDataGenerator库扩展我的数据,我在下面添加了代码。我的第一个问题是我不确定这是否正确,这是我的第二个问题:这是我用于创建数据的代码:import numpy as npimport pandas as pdimport seaborn as sns import matplotlib.pyplot as pltfrom matplotlib.image import imreadimport matplotlib.image as mpimgimport osfrom tensorflow.keras.preprocessing.image import ImageDataGeneratorimport randomimg_dir = "C:\\Users\\Casper\\Desktop\\draw_ata\\atam\\"image_shape = (150,150,3)if not os.path.exists('pic_data'): os.makedirs('pic_data')for i in range(60000): random_img_path = img_dir + random.choice(os.listdir(img_dir)) image_gen = ImageDataGenerator(rotation_range=10,width_shift_range=0.1,height_shift_range=0.1,rescale=1/255, shear_range=0.05, zoom_range=0.1,horizontal_flip=True,fill_mode="nearest") img = imread(random_img_path, 0) new_img = image_gen.random_transform(img) mpimg.imsave("pic_data/%d.png" % i, new_img)它已成功保存图像,但现在我的下一个目标是获得可用于 GAN 模型的正确形状。我的照片是灰度的,但不知何故,它们的形状是 3D 的,就像它们是彩色图像一样。我没有注意这个问题,并试图继续前进。我想创建一个 np 数组,就像 mnist 数据集一样。这是我的代码:from tensorflow.keras.layers import Input,SimpleRNN,GRU,LSTM,Dense,Flatten,GlobalMaxPooling1D,Embedding, Dropout, LeakyReLU, BatchNormalizationfrom tensorflow.keras.models import Model, Sequentialfrom tensorflow.keras.optimizers import SGD, Adamfrom tensorflow.keras.datasets import mnistfrom sklearn.preprocessing import StandardScalerimport numpy as npimport pandas as pdfrom matplotlib.image import imreadimport matplotlib.pyplot as pltfrom tensorflow.keras.preprocessing.text import Tokenizerfrom tensorflow.keras.preprocessing.sequence import pad_sequencesfrom sklearn.model_selection import train_test_splitimport osimg_dir = "C:\\Users\\Casper\\Desktop\\draw_ata\\pic_data\\"data_train = os.listdir(img_dir)[:10000]data_test = os.listdir(img_dir)[50000:]并且输出是 (10000,) 但我希望它们的形状像 (10000,150,150) - 我的照片比例是 150x150- 就像 mnist 数据集一样。如何将它们设置为可训练数据集,谢谢编辑好的我在opencv库的帮助下解决了它
1 回答
收到一只叮咚
TA贡献1821条经验 获得超4个赞
既然您提到您使用 OpenCV 解决了这个问题,我正在使用 OpenCV 为社区编写下面的解决方案。
from matplotlib.image import imread
import os
import cv2
path = "path"
data_train = os.listdir(path)
for i in range(len(data_train)):
data_train[i] = cv2.resize(cv2.imread(path + data_train[i]), (150, 150))
data_train = np.array(data_train)
添加回答
举报
0/150
提交
取消