【问题标题】:using imagedatagenerator in Keras to add more training dataset在 Keras 中使用 imagedatagenerator 添加更多的训练数据集
【发布时间】:2020-09-05 15:20:23
【问题描述】:

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

来自这篇博文: https://www.pyimagesearch.com/2019/07/08/keras-imagedatagenerator-and-data-augmentation/

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

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

【问题讨论】:

    标签: python image-processing keras dataset


    【解决方案1】:

    虽然 Keras ImageDataGenerator 不是您所说的加法运算,但如果您想在增强图像上训练模型,它仍然可以帮助您。以下是 ImageDataGenerator 的工作原理:您指定图像的目录和增强参数,然后在每个训练阶段,生成器获取图像并对其进行转换。因此,这意味着如果您总共有 300 张图像,那么使用 ImageDataGenerator 您将在每个 epoch 中获得 300 张不同的转换图像。

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

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

    from tensorflow.keras.preprocessing.image import ImageDataGenerator
    from PIL import Image
    import numpy as np
    
    image = Image.open('asd.png')
    image = np.array(image)
    image = np.expand_dims(image, 0)
    
    data_generator = ImageDataGenerator(
        rotation_range=30,
    )
    for _, _ in zip(data_generator.flow(
        image, 
        save_to_dir=<DIR_NAME>,
        save_prefix=<PREFIX>,
        save_format='png'
    ), range(N)):
        pass
    

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

    【讨论】:

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