【问题标题】:Load several Images without label in keras cnn在keras cnn中加载几个没有标签的图像
【发布时间】:2020-11-05 10:18:04
【问题描述】:

我有几个不同名称的 .jpeg 图像,我想将它们加载到 jupyter 笔记本中的 cnn 中以对它们进行分类。我找到的唯一方法是:

test_image = image.load_img("name_of_picute.jpeg",target_size=(64,64))
test_image = image.img_to_array(test_image)
test_image = np.expand_dims(test_image, axis=0)
result = cnn.predict(test_image)

在 Keras API 中找到的所有其他内容,例如 tf.keras.preprocessing.image_dataset_from_directory(),似乎只适用于标记数据。可悲的是,我不能“简单地”迭代图片的名称,因为它们的名称不同,有没有办法在不命名每张图片的情况下一次预测所有图片?

感谢您的帮助,

尼克

【问题讨论】:

  • 如果你所有的图片都在同一个目录下,你可以使用os.listdir,或者使用glob
  • 这确实与 for 循环结合使用,谢谢!

标签: python-3.x tensorflow keras jupyter-notebook conv-neural-network


【解决方案1】:

可以更新解决方案tf.keras.preprocessing.image_dataset_from_directory 以返回数据集和 image_path,如此处所述 -> https://stackoverflow.com/a/63725072/4994352

【讨论】:

    【解决方案2】:

    有多种方法,对于较大的数据,使用tf.data.DataSet 很有用,因为它可以很容易地调整性能。我会给你非性能优化的代码。将<YOUR PATH INCL. REGEX> 替换为../input/pokemon-images-and-types/images/*/* 之类的路径。

    import tensorflow as tf
    from tensorflow.data.experimental import AUTOTUNE
    
    
    def load(file_path):
        img = tf.io.read_file(file_path)
        img = tf.image.decode_jpeg(img, channels=3)
        
        ... # do some preprocessing like resizing if necessary
    
        return img
    
    
    list_ds = tf.data.Dataset.list_files(str('<YOUR PATH INCL. REGEX>'), shuffle=True)  # Get all images from subfolders
    train_dataset = list_ds.take(-1)
    # Set `num_parallel_calls` so multiple images are loaded/processed in parallel.
    train_dataset = train_dataset.map(load, num_parallel_calls=AUTOTUNE)
    

    【讨论】:

      猜你喜欢
      • 2021-11-18
      • 2020-04-15
      • 2020-10-14
      • 2017-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-26
      相关资源
      最近更新 更多