使用 Keras for CNN 从目录加载图像,但图像未在子文件夹中标记

问题描述 投票:0回答:1

我在目录

train_data = 'dataset/train'
中有一组用于手写阿拉伯字母的图像,但它只包含一个文件夹中的图像,并且没有划分为子文件夹,以便
ImageDataGenerator().flow_from_directory(train_data, class_mode='categorical', batch_size=64
函数理解我们想要分类的类。

当我第一次使用 Keras 进行 CNN 时,图像在训练目录中划分如下:

dataset/training_set/cats
dataset/training_set/dogs
,同样适用于测试集目录,
ImageDataGenerator().flow_from_directory()
的输出给了我这一行:
Found 8000 images belonging to 2 classes.

文件夹中的图像是这样命名的:

  • id_1_label_1.png

  • id_2_label_2.png

    这是一张图片,这样更清楚:

我的目录中的训练数据

标签是文件名的一部分,如上所示。

我尝试运行以下代码来读取图像:

train_datagen = ImageDataGenerator(rescale = 1./255,
                                   shear_range = 0.2,
                                   zoom_range = 0.2,
                                   horizontal_flip = True)
training_set = train_datagen.flow_from_directory('dataset/train',
                                                 target_size = (64, 64),
                                                 batch_size = 32,
                                                 class_mode = 'categorical')

但它给了我这个输出:

Found 0 images belonging to 0 classes.

如何使用 Keras for CNN 加载数据,以便

ImageDataGenerator
了解我们有多少个类?

python keras conv-neural-network tensorflow2.0 image-classification
1个回答
0
投票

请将阿拉伯字母分类并为每个字母创建一个子文件夹 分类。这是必要的,因为

ImageDataGenerator.flow_from_directory()
只能自动标记图像 如果它们被组织到主目录中的子文件夹中。如果所有图像 混合在一个文件夹中,它将无法正常工作。请参考这个gist

© www.soinside.com 2019 - 2024. All rights reserved.