Colab环境下TensorFlow加载文件夹图片提示未找到图片错误
报错“No images found in directory”的解决方法
tf.keras.utils.image_dataset_from_directory 要求数据集根目录下必须按类别存放二级子目录,不支持直接读取根目录下的图片文件,这是90%以上该报错的触发原因,可按需选择以下方案解决:
- 方案1:调整目录结构适配接口要求
在/content/pics下新建对应类别的子文件夹(如类别A、类别B),把对应类别的png图片分别移入对应子目录。如果是无标注不需要分类的场景,直接新建一个任意名称的子文件夹(如/content/pics/imgs),把所有png图片移入该文件夹即可,调整后重新运行原代码就能正常加载。 - 方案2:验证路径与文件有效性
运行以下代码确认路径下存在可识别的png文件,排查路径拼写错误、文件后缀不匹配的问题:
如果运行后无png文件输出,说明你创建的pics目录路径有误,或者图片后缀不是png格式,调整路径或文件后缀即可。import os # 打印pics目录下的所有文件/文件夹 print("根目录内容:", os.listdir('/content/pics')) # 遍历所有子目录打印png文件路径 for root, dirs, files in os.walk('/content/pics'): for f in files: if f.lower().endswith('.png'): print("找到png文件:", os.path.join(root, f)) - 方案3:无需调整目录的替代加载方案
如果你不想调整目录结构,可以直接用文件匹配接口加载所有根目录下的png,示例代码如下:import tensorflow as tf # 匹配所有根目录下的png文件 all_imgs = tf.data.Dataset.list_files('/content/pics/*.png') # 图片预处理函数 def preprocess_img(img_path): img = tf.io.read_file(img_path) img = tf.image.decode_png(img, channels=3) return tf.image.resize(img, (165, 1310)) # 按3:7拆分验证集和训练集 val_num = int(len(all_imgs) * 0.3) train_ds = all_imgs.skip(val_num).map(preprocess_img).shuffle(seed=123, buffer_size=200).batch(30) val_ds = all_imgs.take(val_num).map(preprocess_img).batch(30)
内容的提问来源于stack exchange,提问作者Ahmed Malik
相关产品推荐
相关产品推荐

