首页 > 解决方案 > 如何在 tensorflow tf.data.Dataset 中使用 cv2 图像增强功能?

问题描述

tf.data.Dataset用来创建我的数据集并使用 keras 训练 CNN。我需要在图像上应用蒙版,蒙版取决于图像的形状,没有预定义的像素坐标。

在网上寻找答案时,我发现在 TensorFlow 中有两种访问图像形状的方法(在训练时):

  1. 使用急切执行(在我的情况下默认情况下未启用,我使用的是 tf v 12.0)

  2. 使用会话

我不想使用急切执行,因为它会减慢训练速度,并且不能使用会话,因为我使用 Keras 训练和测试 CNN(我将数据提供给model.train()使用 的迭代器tf.data.Dataset)。

结果,我无法知道图像的形状,因此无法访问特定像素以进行数据增强。

我使用应用掩码的 OpenCV (cv2) 编写了一个函数。有没有办法将它与 TensorFlow 数据管道集成?

编辑:我找到了解决方案。我使用tf.py_func来包装 python 函数

标签: tensorflowdeep-learningdata-augmentation

解决方案


注意:由于您需要图像增强,我想提供一些有关各种图像增强库的信息。这不会向您展示如何将 OpenCV 函数添加到您的 tfdata 管道中。但是,如果您的要求足够标准,您可以使用以下之一:

  • tf.keras.preprocessing.image.ImageDataGenerator
  • imaug
  • albumentations

Python中的数据增强

  1. 包: 库: url:Pythonalbumentations
    external
    albumentations

  2. 包::imaug星:
    库:external
    url:Pythonimaug

  3. 包: 库: url:Pyhon - TensorFlowtf.keras.preprocessing.image.ImageDataGenerator
    external
    ImageDataGenerator

例子

  1. 示例/使用albumentations

  2. 示例/使用imaug

  3. 示例/使用tf.keras.preprocessing.image.ImageDataGenerator


推荐阅读