我正在处理尺寸为grayscale
的{{1}}张图片,并希望使用75 by 75
执行一些增强技术。
但是想知道如果我们多次运行,我们是否可以重复ImageDataGenerator
。我不是在谈论时代,而是像运行整个代码来模仿完全相同的增强图像以获得相同的结果。
我正在附加output consistently
:
sample grayscale image
如何在上面的代码中一致地重复增强输出?
我知道这段代码编写得很糟糕,对代码优化的任何建议也非常感谢。
谢谢,
戈皮
答案 0 :(得分:3)
您可以将seed
设置为flow
方法:
aug_iter = gen.flow(image, seed = 0)
通过将此参数设置为特定的整数,您将始终获得相同的随机改组/转换序列。
答案 1 :(得分:1)
您可以运行生成器并保存图像,然后只需加载图像:
# Trial #1
# Generate batches of augmented images from this image
aug_iter = gen.flow(image)
# Get 10 samples of augmented images
aug_images1 = [next(aug_iter)[0].reshape(75,75).astype(np.uint8) for i in range(10)]
如果内存不是问题,可以使用numpy保存:
aug_images1 = np.array(aug_images1)
np.save(filename, aug_images1)
然后加载它:
aug_images1 = np.load(filename)
如果您愿意,可以使用Pillow等图像库将每个图像保存为正确的图像文件(占用的内存较少):
from PIL import Image
for (im,filename in zip(aug_images1,list_of_names)):
im = Image.fromarray(im) #make sure you have a uint8 from 0 to 255 array.
im.save(filename)
稍后,加载文件:
aug_images1 = [np.array(image.open(filename)) for filename in list_of_names]
aug_images1 = np.array(aug_images1)
如果您不想在内存中同时加载所有图像,并保存图像,则可以创建新的ImageDataGenerator
,但不需要任何增强,只需要纯粹的图像加载器。
然后使用gen.flow_from_directory()
从目录中获取图像。
在文档中阅读更多内容:https://keras.io/preprocessing/image/