tf.keras.utils.image_dataset_from_directory()找不到图像异常

wnvonmuf  于 2023-04-30  发布在  其他
关注(0)|答案(2)|浏览(219)

我有以下代码从目录中读取jpeg图像:

data_dir_str = "./photo/pults/samsung_small"
data_dir = pathlib.Path(data_dir_str)
image_count = len(list(data_dir.glob('*.*')))
print('images in directory: ' + str(image_count)) # 12 files in directory

sams_pults = list(data_dir.glob('*.jpg'))
img = PIL.Image.open(str(sams_pults[0]))
img_width, img_height = img.size
#img.show()  # This works well - shows image

batch_size = 10

train_ds = tf.keras.utils.image_dataset_from_directory(
  data_dir_str, #data_dir,
  validation_split=0.2,
  subset="training",
  #seed=123,
  image_size=(img_height, img_width),
  batch_size=batch_size
)

即使img.show()可以显示图像,tf.keras.utils.image_dataset_from_directory()也会显示错误:
在目录{directory}中未找到图像。允许的格式:{ALLOWLIST_FORMATS}

lrl1mhuk

lrl1mhuk1#

我找到了解决方案:
./photo/pults/samsung_small -〉./photo/pults
该路径不需要设置为放置图像的目录,而需要设置为上一级。因为目录名用于分类。

gev0vcfq

gev0vcfq2#

如果目录只包含图像而没有标签的子文件夹,则设置label_mode=None,函数将读取图像作为没有标签的数据集。
例如

train_ds = tf.keras.utils.image_dataset_from_directory(
  data_dir_str, #data_dir,
  label_mode=None,
  validation_split=0.2,
  subset="training",
  #seed=123,
  image_size=(img_height, img_width),
  batch_size=batch_size
)

相关问题