使用TensorFlow的image_dataset_from_directory加载单类别图像数据集时未检测到任何图像
我来帮你排查下这个问题,你遇到的Found 0 files belonging to 1 classes错误,通常是目录结构、路径或者图像格式的问题,咱们一步步来解决:
先检查目录结构是否符合要求
当你设置labels=None时,image_dataset_from_directory会直接读取指定目录下的所有图像文件,不需要子文件夹分类。如果你的图像是放在D:\\UAV\\Train\\Input的子文件夹里(比如Input\\my_class),那它会找不到任何图像——因为它只看Input目录下直接的文件。
正确的结构(对应labels=None)应该是:D:\UAV\Train\Input\ img_001.jpg img_002.png ...如果你是按单类别子文件夹存放的(比如
Input\\single_class\\*.jpg),那可以去掉labels=None,让它自动推断标签:train_dataset = image_dataset_from_directory( 'D:\\UAV\\Train\\Input', class_names=None, # 会自动识别子文件夹为类别 labels='inferred', # 默认值,可省略 image_size=image_size, color_mode='rgb', seed = 42)确认图像格式被TensorFlow支持
TensorFlow仅支持JPEG、PNG、BMP、静态GIF格式的图像,如果你的文件是TIFF、RAW或其他小众格式,会被忽略。检查下Input目录里的文件后缀,确保是这些支持的格式。检查路径是否正确
你用的'D:\\UAV\\Train\\Input'转义是对的,但可以试试用原始字符串避免转义问题:r'D:\UAV\Train\Input'。同时打开文件资源管理器,确认这个路径确实存在,且里面有图像文件。排查图像尺寸和权限问题
你设置的image_size=(3401, 3402)尺寸非常大,虽然这不会导致“找不到文件”的错误,但可以先临时改成小尺寸(比如(224,224))测试,排除加载时的异常。另外,确保你对Input目录有读取权限,目录里没有全是隐藏文件。
内容的提问来源于stack exchange,提问作者user123

