Как загрузить данные изображения для регрессии с помощью keras? - PullRequest
1 голос
/ 13 июля 2020

Я уже прочитал несколько руководств, в которых даются инструкции по импорту изображений для классификации с помощью 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. Во-вторых, это функция импорта изображений, задана Tensorflow.

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

Насколько я знаю, это также прямолинейно, есть только возможность открывать отдельные изображения, а не целые каталоги. Это может быть полезно при итерации по всему каталогу, но поскольку у Keras есть прекрасные функции предварительной обработки , мне любопытно узнать, есть ли способ, подобный keras. Итак, мой вопрос:

Есть ли удобный способ импорта больших наборов данных изображений для регрессии?

1 Ответ

1 голос
/ 13 июля 2020

Насколько мне известно, в Keras нет специальной функции c для загрузки всех изображений в виде набора данных. Однако вы можете достичь sh этого, используя комбинацию os.walk() и Image.open(), что-то вроде следующего загрузит все изображения в список в один go:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...