我正在尝试建立可以绘制肖像的GAN模型,我可以使用mnist数据集来做,而且我想将数据集更改为目标人物的肖像。我只有几个示例图像,所以我尝试使用ImageDataGenerator库扩展数据,并在其中添加了以下代码。我的第一个问题是我不确定这是否正确,这是我的第二个问题:这是我用于创建数据的代码:
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from matplotlib.image import imread
import matplotlib.image as mpimg
import os
from tensorflow.keras.preprocessing.image import ImageDataGenerator
import random
img_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的,就像它们是彩色图像一样。我没有注意这个问题,而是继续前进。我想像mnist数据集一样创建一个np数组。这是我要做的代码:
from tensorflow.keras.layers import Input,SimpleRNN,GRU,LSTM,Dense,Flatten,GlobalMaxPooling1D,Embedding, Dropout, LeakyReLU, BatchNormalization
from tensorflow.keras.models import Model, Sequential
from tensorflow.keras.optimizers import SGD, Adam
from tensorflow.keras.datasets import mnist
from sklearn.preprocessing import StandardScaler
import numpy as np
import pandas as pd
from matplotlib.image import imread
import matplotlib.pyplot as plt
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
from sklearn.model_selection import train_test_split
import os
img_dir = "C:\\Users\\Casper\\Desktop\\draw_ata\\pic_data\\"
data_train = os.listdir(img_dir)[:10000]
data_test = os.listdir(img_dir)[50000:]
for i in range(len(data_train)):
data_train[i] = imread(img_dir + data_train[i])
data_train = np.array(data_train)
print(data_train.shape)
输出是(10000,),但我希望它们的形状像(10000,150,150)-我的照片比例尺是150x150-,就像mnist数据集一样。我如何将它们设置为可训练的数据集,谢谢
编辑好,我在opencv库的帮助下解决了
由于您已经提到过使用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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句