stu*_*t17 9 python machine-learning computer-vision keras tensorflow
我正在尝试使用Inception V3模型进行图像分类。ImageDataGenerator
Keras 是否会创建新图像并添加到我的数据集中?如果我有1000张图像,是否可以使用此功能将其翻倍到用于训练的2000张图像?有没有一种方法可以知道创建了多少图像并将这些图像输入到模型中?
Mar*_*rko 26
这是我的尝试回答,因为我也有这个问题。
ImageDataGenerator
不会将新图像添加到您的数据集,因为它不会使您的时代变大。相反,在每个 epoch 中,它都会提供稍微改变的图像(取决于您的配置)。不管你有多少个时代,它总是会生成新的图像。
所以在每个 epoch 模型都会在不同的图像上进行训练,但不会有太大的不同。这应该可以防止过度拟合,并以某种方式模拟在线学习。
所有这些更改都发生在内存中,但如果您想查看这些图像,您可以将它们保存到光盘中,检查它们,查看其中生成了多少并了解其ImageDataGenerator
工作原理。要做到这一点,传递save_to_dir=/tmp/img-data-gen-outputs
给函数flow_from_directory
。请参阅文档。
tod*_*day 15
简短的答案: 1)所有原始图像仅在每个时期都经过转换(即旋转,缩放等),然后用于训练,并且2)[因此]每个时期中的图像数量等于原始图像的数量你有。
长答案:在每个时期,都会对ImageDataGenerator
您拥有的图像进行转换,并使用转换后的图像进行训练。转换集包括旋转,缩放等。通过这种方式,您正在以某种方式创建新数据(即,也称为数据增强),但是显然生成的图像与原始图像并不完全不同。这样,当在相同图像的不同变体上对其进行训练时,所学习的模型可能更加健壮和准确。
您需要将method 的steps_per_epoch
参数设置fit
为n_samples / batch_size
,其中n_samples
是您拥有的训练数据的总数(即您的情况下为1000)。这样,在每个时期中,每个训练样本仅增加一次,因此在每个时期中将生成1000个变换图像。
正如这里 正式写的那样ImageDataGenerator
,具有实时数据增强的张量图像数据的批处理生成器。数据将被循环(分批)。这意味着将即时将变换随机应用于一批图像。例如:
train_datagen = ImageDataGenerator(
rescale=1./255, #scale images from integers 0-255 to floats 0-1.
shear_range=0.2,
zoom_range=0.2, # zoom in or out in images
horizontal_flip=True) #horizontal flip of images
Run Code Online (Sandbox Code Playgroud)
在每个新的时代,都会应用新的随机变换,这样我们一次就可以训练出稍微不同的图像。并非总是能够获得或获得更多数据,使用ImageDataGenerator
这种方式很有帮助。
归档时间: |
|
查看次数: |
4501 次 |
最近记录: |