tf.keras.preprocessing.image_dataset_from_directory值错误:找不到图像



下面是我的代码,用于确保文件夹中有图像,但tf.keras.preprocessing.image_dataset_from_directory未返回任何图像。我做错了什么?谢谢

DATASET_PATH = pathlib.Path('C:\Users\xxx\Documents\images')
image_count = len(list(DATASET_PATH.glob('.\*.jpg')))
print(image_count)

输出=2715

batch_size = 4
img_height = 32
img_width = 32
train_ds = tf.keras.preprocessing.image_dataset_from_directory(
DATASET_PATH.name,
validation_split=0.8,
subset="training",
seed=123,
image_size=(img_height, img_width),
batch_size=batch_size)

输出:

Found 0 files belonging to 0 classes.
Using 0 files for training.
Traceback (most recent call last):
File ".tensorDataPreProcessed.py", line 23, in <module>
batch_size=batch_size)
File "C:UsersxxxAnaconda3envsxxxlibsite-packagestensorflowpythonkeraspreprocessingimage_dataset.py", line 200, in image_dataset_from_directory
raise ValueError('No images found.')
ValueError: No images found.

这里有两个问题,首先image_dataset_from_directory需要目录中每个类的子文件夹。通过这种方式,它可以自动识别并为图像分配类标签。

所以TF的标准文件夹结构是:

data
|
|___train
|      |___class_1
|      |___class_2
|
|___validation
|      |___class_1
|      |___class_2
|
|___test(optional)
|___class_1
|___class_2

另一个问题是,您试图只使用一个类来创建模型,这是不可行的。该模型需要能够区分您试图使用GAN生成的类,但要做到这一点,它需要不属于该类的图像样本。

如果你在进行无监督学习,并且你真的只有一个类,那么tf.keras.utils.image_dataset_from_directory有一个称为labels:的论点

注意: 如果您不确定这是否适用于您的问题,您应该首先确定。仅仅复制这个解决方案而不知道它是否是你的问题所需要的是一个坏主意

来自文档:

标签:任一";推断的";(标签由目录结构生成(、None(无标签(或与目录中找到的图像文件数量大小相同的整数标签列表/元组。标签应该根据图像文件路径的字母数字顺序进行排序(通过Python中的os.walk(目录(获得(。

因此,您可以将标签设置为None,它将把所有图像导入到一个类中。

最新更新