You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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文件,排查路径拼写错误、文件后缀不匹配的问题:
    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))
    
    如果运行后无png文件输出,说明你创建的pics目录路径有误,或者图片后缀不是png格式,调整路径或文件后缀即可。
  • 方案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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 02:06:09