【问题标题】:How to load image data for regression with keras?如何使用 keras 加载图像数据进行回归?
【发布时间】:2020-07-13 13:55:57
【问题描述】:

我现在已经阅读了几个教程,这些教程提供了有关如何导入图像以使用 Keras 进行分类的说明。据我所知,所有教程都只是描述一个多类场景(例如猫/狗类)。这些方法不适用于我的问题。

我想做一个回归,将图像作为输入并返回图像作为输出。 我的问题:如果没有分类而是回归,我如何轻松地将图像数据传递给 Keras?

对于每对给定的输入和输出训练数据,我无法从以下位置轻松导入:

├── input_data
│   ├── input0.png
|   ├── input1.png
|   └── ...
└── output_data
    ├── output0.png
    ├── output1.png
    └── ...

至此:

x_train, x_valid, y_train, y_valid = train_test_split(inputs, outputs, test_size=0.2, shuffle= True)

我已经尝试过的:

  1. Keras flow_from_directory 方法看起来几乎完美,并提供了不错的功能,但它仅适用于在子目录中排序的分类数据。

  2. 其次,还有这个image import function,是Tensorflow给出的。

    from keras.preprocessing.image import img_to_array, load_img
    img = load_img('img.png') 
    x = img_to_array(img)
    

据我所知,这也很简单,只能打开单个图像而不是整个目录。如果遍历整个目录,这可能会有所帮助,但由于 Keras 具有那些不错的预处理功能,我很想知道是否有类似 keras 的方式。所以我的问题:

有什么合适的方法可以导入大型图像数据集进行回归吗?

【问题讨论】:

    标签: python tensorflow machine-learning keras


    【解决方案1】:

    据我所知,Keras 中没有将所有图像作为数据集加载的特定功能。但是,您可以通过使用os.walk()Image.open() 的组合来完成此操作,如下所示可以一次性将所有图像加载到列表中:

    import os
    from PIL import Image  # or you can use the keras one to load images
    def load_dataset(top_dir="input_data"):
        images_dataset = []
        for root, dirs, files in os.walk(top_dir):
            for name in files:
                # print(os.path.join(root, name))
                img = np.array(Image.open(os.path.join(root, name)))
                images_dataset.append(img)
        return images_dataset
    

    【讨论】:

    • 好的,谢谢 - 这是一种使用 PIL 的手动方式,它正在工作。我希望使用 Keras 的预处理功能,但似乎我必须手动完成。
    • @moosehead42 正如我所说,我不知道有任何 Keras-ish 内置函数可以做到这一点。但是,上述函数可以放在utility 模块中,并直接从该文件调用就好像它来自Keras API
    猜你喜欢
    • 2018-06-18
    • 1970-01-01
    • 2018-12-04
    • 2017-10-14
    • 1970-01-01
    • 2019-11-15
    • 2019-01-22
    • 2017-12-04
    • 1970-01-01
    相关资源
    最近更新 更多