如何使用自定义数据生成器进行 keras 图像增强?

2024-06-24

我正在使用 Keras 自定义生成器,我想对从自定义数据生成器返回的数据应用图像增强技术。

我想要这些图像增强技术

ImageDataGenerator(
        rotation_range=40,
        width_shift_range=0.2,
        height_shift_range=0.2,
        shear_range=0.2,
        zoom_range=0.2,
        horizontal_flip=True,
        fill_mode='nearest')

这是 keras 自定义生成器

def __data_generation(self, list_IDs_temp):
  'Generates data containing batch_size samples' # X : (n_samples, *dim, n_channels)
  # Initialization
  X = np.empty((self.batch_size, *self.dim, self.n_channels))
  y = np.empty((self.batch_size), dtype=int)

      # Generate data
      for i, ID in enumerate(list_IDs_temp):
          # Store sample
          X[i,] = tfk.preprocessing.image.load_img(self.list_IDs[ID])
    
          # Store class
          y[i] = self.labels[ID]
    
      return X, tkf.utils.to_categorical(y, num_classes=self.n_classes)

还没有尝试过,但我想你可以使用flow方法来自你的实例ImageDataGenerator。例如,您的自定义类可能如下所示:

class CustomDataGenerator(tf.keras.utils.Sequence):
    
    def __init__(self, batch_size=32):
        self.batch_size = batch_size
        self.augmentor = ImageDataGenerator(
            rotation_range=40,
            width_shift_range=0.2,
            height_shift_range=0.2,
            shear_range=0.2,
            zoom_range=0.2,
            horizontal_flip=True,
            fill_mode='nearest'
        )

    ...

    def __data_generation(self, list_IDs_temp):
      'Generates data containing batch_size samples' # X : (n_samples, *dim, n_channels)
      # Initialization
      X = np.empty((self.batch_size, *self.dim, self.n_channels))
      y = np.empty((self.batch_size), dtype=int)

      # Generate data
      for i, ID in enumerate(list_IDs_temp):
          # Store sample
          X[i,] = tfk.preprocessing.image.load_img(self.list_IDs[ID])
    
          # Store class
          y[i] = self.labels[ID]

      X_gen = self.augmentor.flow(X, batch_size=self.batch_size, shuffle=False)
      """do not perform shuffle here, the shuffling is performed beforehand
       by your custom class anyway, you just want the transformations to be 
      applied, and above all you want to keep your images synced with the 
      labels.""" 
      
      return next(X_gen), tkf.utils.to_categorical(y, num_classes=self.n_classes)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用自定义数据生成器进行 keras 图像增强? 的相关文章

随机推荐

  • 如何增加pyqt4中QTableWidget中标题标签的行高和行项目的字体大小

    在这里我想增加标题标签的行高和单元格项目的字体大小 在我的代码中我使用self table setRowHeight 方法 但它不起作用 所以请告诉我他们有什么方法可以增加标题标签的行高和单元格项目的字体大小 下面给出的是我的代码 impo
  • 检查 url 是否为 Mercurial 存储库(如 git ls-remote)

    如何检查 URL 是否指向 Mercurial 存储库 对于 git 我会使用git ls remote url并检查返回值 hg 有类似的东西吗 您可以使用hg identify为此 它可以针对远程存储库运行 如果给定的路径不是存储库 M
  • 在数据库中插入具有相同组合框的 2 个函数的字段。仅保存第一个函数的数据

    我有一个用 tkinter 制作的数据库管理器 我在其中插入和保存数据 它工作正常 一切正确 它正确保存一切 我尝试添加新插入 这就是我遇到问题的地方 但是 我无法从同一组合框添加新的字段插入 即同一组合框插入 2 个内容 我用2个不同的c
  • python:这是从字典中删除元素的错误方法吗?

    我用这种方法从字典中删除 emelment d ele data d ele None 我认为通过这个我可以删除原始元素上的引用 以便可以释放删除的数据 而不存在内存泄漏 这是正确的方法吗 您可以使用以下命令从字典中删除元素del gt g
  • 是否可以使用 JavaScript focus() 函数将焦点集中在

    是否可以专注于一个 div 使用JavaScriptfocus 功能 我有一个 div tag div You have 3 tries left div 我正在努力关注以上内容 div using document getElementB
  • 按正确的列(即 TemplateField)对 gridView 进行排序

    我在 gridView 中排序列时遇到问题 我只想选择列中名称等于 完成 的那些行 我的 gridView 由一些 BoundField 和 TamplateFields 组成 当我想按正确的 BoundField 排序时 我将正确的字符串
  • 如何在具有名为“attribute”的列的数据库上使用 ActiveRecord? (危险属性错误)

    我正在访问一个无法更改的数据库 它有一个名为attribute定义的 每当我尝试访问attribute 我得到这个异常 属性 由 ActiveRecord ActiveRecord DangerousAttributeError 定义 my
  • 如何减去日期分量?

    就像今天一样Friday 即6根据NSCalendar 我可以使用以下方法得到这个 Calendar current component weekday from Date 我如何获得工作日部分Saturday上周 应该是7 如果我做Cal
  • 从点集合创建 .stl 文件

    因此 我使用的软件接受轮廓或 stl 文件形式的 3D 对象 我的轮廓沿着 z 平面 每个平面都有一个唯一的 z 我必须修改实验的轮廓 现在轮廓对于每个平面没有唯一的 z 它们现在与 z 0 平面略有角度 这些点代表 3D 对象的边缘 获取
  • 显示 � 而不是 £

    从 mysql 数据库提取数据时 显示符号 而不是 有问题的字段已整理为 utf8 general ci 我也有在页面的 head 标签上 有什么想法吗 Use mysql query SET NAMES UTF8 在对数据库执行任何查询之
  • scala 元组拆包

    我知道这个问题已经以不同的方式出现过很多次 但我仍然不清楚 有没有办法达到以下目的 def foo a Int b Int foo a b right way to invoke foo foo getParams is there a w
  • 禁用在 Visual Studio 2017 中不起作用的 Azure Functions 属性

    我有带计时器触发器的 Azure 功能 public static void Run TimerTrigger 0 15 Disable True TimerInfo myTimer TraceWriter log 这里的Disable t
  • 如何使用 nexus/maven 将依赖项添加到第 3 方库

    我正在尝试专业地使用 Nexus m2eclipse maven 3 并且我有一个巨大的第 3 方库 需要很多依赖项 有没有什么方法可以通过将这个第三方库及其所有链接的依赖项上传到 Nexus 来减轻我的痛苦 这样任何需要它的人都只需为这个
  • Java棋盘游戏

    基本上 我正在用 java 创建一个棋盘游戏 并设法使用数组创建单元格 使其看起来像 10x10 网格 现在我已经对它们进行了编号 它们从左到右从上到下 如图所示 我正在创建一个类似于蛇和梯子游戏的游戏 但有自己的特色 问题是 如何创建类似
  • 使函数调用中的括号可选

    嘿 我即将重写我的 JavaScript 库的核心文件 并且我正在寻找更好的方法来完成所有事情 其中之一是我如何使括号可选 例如某些函数调用如下所示 Spark p content Hello World 还有其他人也这样 Spark br
  • 在 Android Studio 中重新启动系统后,项目视图未显示

    重新启动系统后 我无法查看 Android Studio 中任何项目的项目结构 以前 我可以通过进入 视图 gt 项目 来选择 项目视图 但 视图 菜单现在不显示此类选项 请看下图 今天早上这个问题就发生在我身上 解释 Fabric Cra
  • 如何在Linux下生成系统范围的唯一ID

    我正在使用多进程 Linux 系统 需要生成唯一的 ID 安全性不是考虑因素 因此 ID 生成器从零开始递增就可以了 而且它只是在本地计算机内 不涉及网络 显然 实现这一点并不难 但我只是想知道是否已经提供了任何东西 最好是轻量级的 这听起
  • GSM SIM800C 文本转语音音频流

    I have 我已经成功地能够向它发送 AT 命令并执行一些操作 但我真正想要的是文本转语音功能 我能够生成 AMR 音频文件 将其上传到模块的内部存储器 并在有人时播放它来电 但是来电者听到的消息将是动态的 并且 TTS 将实时运行 因此
  • 合并 PDF iTextSharp

    我在网上查看了一些示例 并提出了使用 iTextSharp 合并 pdf 的代码 但我收到一个错误 该文档没有页面 它失败于页面 writer GetImportedPage reader X 这是堆栈跟踪 at iTextSharp te
  • 如何使用自定义数据生成器进行 keras 图像增强?

    我正在使用 Keras 自定义生成器 我想对从自定义数据生成器返回的数据应用图像增强技术 我想要这些图像增强技术 ImageDataGenerator rotation range 40 width shift range 0 2 heig