在keras中为生成器打印无效文件名的方法

时间:2019-07-20 10:03:46

标签: keras

我有一个传递给

的大数据框
generator.flow_from_dataframe(df,...)

但是当我运行它时,我有

UserWarning: Found 52 invalid image filename(s) in x_col="image". These filename(s) will be ignored.
  .format(n_invalid, x_col)

有一种方法可以打印这些无效的图像文件名或了解它们在df中的索引?

2 个答案:

答案 0 :(得分:1)

我有一个类似的错误,通过在validate_filenames=False方法中使用标志flow_from_dataframe绕过了它

当前,AFAIK无法在Keras中从数据框列出未映射到图像目录的文件名

您可以编写python方法来列出差异,否则必须有一个第三方库执行相同的操作

答案 1 :(得分:1)

可以通过指定数据帧内图像的绝对路径来解决此问题。 假设:

  1. 数据框 df 包含两列 - Image(X) 和 Class(Y)
  2. 图像存储在 train_dir 中 (Image dataframe structure)
# Specifying absolute path for images in the data frame

abs_file_names = []

for file_name in df['Image']:
    tmp = os.path.abspath(train_dir+os.sep+file_name)
    abs_file_names.append(tmp)

# update dataframe
df['Image'] = abs_file_names

datagen = ImageDataGenerator(rescale=1./255.,validation_split=0.25)

a = datagen.flow_from_dataframe(
    dataframe = df,
    train_dir=None,
    x_col="Image",
    y_col="Class",
    weight_col=None,
    target_size=(150, 150),
    color_mode="rgb",
    classes=None,
    class_mode="categorical",
    batch_size=32,
    shuffle=True,
    seed=None,
    save_to_dir=None,
    save_prefix="",
    save_format=None,
    subset=None,
    interpolation="nearest",
    validate_filenames=True,
)

有关更多信息的有用资源: