【问题标题】:How to use keras image_dataset_from_directory with custom structures?如何将 keras image_dataset_from_directory 与自定义结构一起使用?
【发布时间】:2021-02-21 01:01:43
【问题描述】:

preprocessing 模块内的 Keras image_dataset_from_directory 将路径作为参数,并在这些图像存储在单独的子文件夹中时自动推断类。然而,就我而言,我有一个文件夹,然后在 DataFrame 中指定图像类。

.
├── datasets
│   ├── sample_submit.csv
│   ├── test_images
│   │   ├── test_0000.jpg
│   │   ├── test_0001.jpg
│   │   ├── test_0002.jpg
│   │   └── ...
│   ├── test_images.csv
│   ├── train_images
│   │   ├── train_0000.jpg
│   │   ├── train_0001.jpg
│   │   ├── train_0002.jpg
│   │   └── ...
│   └── train_images.csv
└── model.py

Tensorflow 的 documentation 指定当你不推断标签时,必须指定一个列表或元组,我从 DataFrame df 获得。但是,当我指定图像文件夹时,TensorFlow 会返回 ValueError,因为它没有找到图像:

In [1]: df = pd.read_csv('datasets/train_images.csv')
   ...: tds = keras.preprocessing\
   ...:    .image_dataset_from_directory('datasets/train_images', list(df['class']),
   ...:                                  validation_split=0.2, subset='training',
   ...:                                  seed=123, image_size(180, 180))

ValueError: Expected the lengths of `labels` to match the number of files in the target directory. len(labels) is 1102 while we found 0 files in datasets/train_images.

为什么 keras 无法识别文件夹中的图片?我尝试使用./datasets/train_images 设置“完整”相对路径,使用datasets/train_images/ 添加斜线以及绝对路径,但无济于事。这里缺少什么?或者,在这种情况下是否有更有效的方法,我仍然可以得到训练/测试拆分?


编辑: keras 似乎有一个限制,而这个 question 最初提出了它,但仍然太模糊而无法触及问题的核心。

简单明了:keras 似乎总是为图像抓取 directory 参数的子文件夹并构建数据集。 启用图像加载的解决方法是包装一个额外的文件夹(@ 987654332@) 并将其传递给directory

但是,我仍然对这种方法有问题,因为现在 keras 似乎无法将自定义类作为列表传递并输出 Found 1102 files belonging to 1 classes.(在这种情况下,现在子文件夹train_images),所以任何帮助仍然很感激。

【问题讨论】:

    标签: python keras tensorflow-datasets


    【解决方案1】:

    keras 似乎总是抓取图像的目录参数的子文件夹并构建数据集。启用图像加载的解决方法是包装一个附加文件夹(outer_train)并将其传递给目录。

    问题是image_dataset_from_directory 方法询问一个包含其他目录的目录,并开始从您输入的目录中获取当前目录中的图像。

    但是,这种方法仍然存在问题,因为现在 keras 似乎无法将自定义类作为列表和输出传递。

    我认为您无法阅读那样的图像。如果您希望该方法读取自定义类的图像,则必须将具有自定义图像类的文件夹放置在要读取的文件夹中,如下所示:

    • directory_to_read/

      • 类__1/

        • img1

        • img2

      • 类__2/

        • img1

        • img2

      • custom_class/

        • img1

        • img2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      • 2018-09-29
      • 2013-10-17
      • 2017-11-09
      • 2021-05-25
      • 1970-01-01
      相关资源
      最近更新 更多