Python 在Keras中使用imagedatagenerator添加更多训练数据集

Python 在Keras中使用imagedatagenerator添加更多训练数据集,python,image-processing,keras,dataset,Python,Image Processing,Keras,Dataset,我有汽车图像,我的目标是扩展我的训练数据集,我想结合新生成的图像和原始图像,并基于它们训练一个深度神经网络来执行分类任务 来自此博客帖子: “Keras ImageDataGenerator类不是一个“加法”操作。它不是获取原始数据,随机转换,然后返回原始数据和转换后的数据。” 您建议用什么方法扩展数据集?尽管KerasImageDataGenerator并不像您所说的那样是一个加法操作,但如果您想在增强图像上训练您的模型,它仍然可以帮助您。以下是ImageDataGenerator的工作原理:

我有汽车图像,我的目标是扩展我的训练数据集,我想结合新生成的图像和原始图像,并基于它们训练一个深度神经网络来执行分类任务

来自此博客帖子:

“Keras ImageDataGenerator类不是一个“加法”操作。它不是获取原始数据,随机转换,然后返回原始数据和转换后的数据。”


您建议用什么方法扩展数据集?

尽管KerasImageDataGenerator并不像您所说的那样是一个加法操作,但如果您想在增强图像上训练您的模型,它仍然可以帮助您。以下是ImageDataGenerator的工作原理:您指定图像的目录和增强参数,然后在每次训练时,gererator拍摄图像并进行转换。这意味着,如果你总共有300张图像,使用ImageDataGenerator,你将在每个历元获得300张不同的变换图像

如果这不是你想要的方式,你可以尝试另一种方式。使用OpenCV库读取图像并通过一些转换(如缩放、剪切等)将其副本保存到一个目录中。这样,每个历元可以生成任意多个图像。当你制作它们时,使用不带任何参数的ImageDataGenerator。这里有一个问题——图像总是一样的。在第一种情况下,每个时代的图像都应该不同

要保存新的增强图像,您可以使用:

来自tensorflow.keras.preprocessing.image import ImageDataGenerator的

从PIL导入图像
将numpy作为np导入
image=image.open('asd.png')
image=np.数组(image)
图像=np。展开尺寸(图像,0)
数据发生器=图像数据发生器(
旋转范围=30,
)
对于zip中的u,u(data_generator.flow(
形象,,
将_保存到_目录=,
保存前缀=,
保存\u format='png'
),范围(N)):
通过

其中,N是要使用1个基本图像创建的增强图像的数量

您所说的“一个问题-图像总是相同”是什么意思?例如,您希望旋转图像。在第二种情况下,您可以创建其他图像。因此,最终的数据集可以包含图像,以及旋转10度、20度和30度的图像。在这种情况下,您的模型将从旋转4次的图像中学习。在第一种情况下,只需指定
rotation=30
。在这种情况下,
ImageDataGenerator
将创建以0到30度的随机角度旋转的图像。因此,在这种情况下,您的模型将在旋转11度、29度、8.5度等角度的图像上进行训练。每个时代都不同,谢谢你。能否将生成的图像添加到原始图像中并保存在培训目录中?我的一个班级有300张图片,其他班级有4000张图片,我正在努力平衡它们。我们可以使用图像处理技术吗?使用“ImageDataGenerator”的优点是什么?我可以轻松地从目录图像生成新图像,然后将它们保存到同一文件夹中。然后,我可以使用该文件夹来训练我的网络。使用ImageDataGenerator有什么好处?是的,您可以。ImageDataGenerator只是可以让您的工作更轻松的东西。如果您对其他技术感到满意,请继续