Tensorflow使用flow_from_dataframe时同文件夹部分图片被忽略如何解决
解决方案
- 首先修复路径转义问题:Windows系统下Python字符串中
\为转义字符,直接写在路径中会导致路径识别错误。你可以任选以下一种方式修正路径写法:- 在路径字符串前加
r声明为原始字符串:im = Image.open(r"D:\Ensino Superior\ISCTE-IUL\...\xxx.JPG") - 把所有反斜杠替换为正斜杠:
im = Image.open("D:/Ensino Superior/ISCTE-IUL/.../xxx.JPG") - 所有反斜杠写为双反斜杠转义:
im = Image.open("D:\\Ensino Superior\\ISCTE-IUL\\...\\xxx.JPG")
先修正路径后重新测试PIL能否正常打开图片,排除路径识别错误导致的文件读取失败。
- 在路径字符串前加
- 修正ImageDataGenerator参数位置错误:你当前把
rotation_range、zoom_range等数据增强参数写在了flow_from_dataframe方法中,这类参数属于ImageDataGenerator的初始化参数,写在生成器调用位置无效,还可能引发逻辑异常,请移到ImageDataGenerator的初始化参数中。 - 调整
flow_from_dataframe的文件名校验规则:该方法默认仅识别小写的常见图片后缀,你遇到的大写.JPG后缀文件可能会被判定为无效文件,可在调用flow_from_dataframe时添加参数validate_filenames=False,强制跳过文件名后缀校验,直接尝试读取文件。 - 批量排查损坏文件:如果修正路径后仍有文件无法打开,说明文件本身已损坏,可运行批量脚本遍历所有DataFrame中的文件路径,将无法正常读取的条目从DataFrame中删除,避免后续被生成器忽略。
- 修正函数返回值错误:你定义的
create_gen函数仅返回3个变量,但调用时接收5个返回值,会直接触发语法错误,修改函数返回语句为return train_generator,test_generator,train_images,val_images,test_images即可。
内容的提问来源于stack exchange,提问作者Tiago Domingues
相关产品推荐
相关产品推荐

