Как изменить flow_from_directory или preprocessing_function в ImageDataGenerator? - PullRequest
1 голос
/ 10 июля 2019

В соответствии с документами keras:

preprocessing_function: функция, которая будет подразумеваться на каждом входе.Функция запустится после изменения размера и увеличения изображения.Функция должна принимать один аргумент: одно изображение (тензор Numpy с рангом 3) и выводить тензор Numpy той же формы.

Мой тензор Numpy имеет ранг 5, потому что мои входные изображения имеют 3 измерения (высоту)., ширина, глубина).

from keras.preprocessing.image import ImageDataGenerator
label_datagen = ImageDataGenerator()

train_label_generator = label_datagen.flow_from_directory(
    directory="some_directory",
    target_size=(32, 32, 32),
    color_mode='grayscale',
    class_mode=None,
    batch_size=4)

Когда я проверяю первую партию, я получаю свой 5-мерный тензор:

first_item = train_image_generator.__getitem__(0)

>>>print('first_item.shape')
(4, 32, 32, 32, 1)

Теперь я сначала хочу сделать простую операцию на каждом входеизображение, я также проверяю форму ввода, печатая ее:

def some_function(arr):
    print(arr.shape)
    arr += 1
    return arr

Здесь я добавляю эту функцию в свой ImageDataGenerator:

label_datagen = FixedImageDataGenerator(preprocessing_function=some_function)

Это то, что я получаю в качестве формы ввода

(32, 32, 1)

, что означает, что он действительно ограничен рангом 3. Любая идея, как я могу изменить это так, чтобы форма ввода была (32, 32, 32)?

Моя цель - использовать функцию to_categoricalна каждом входе в ImageDataGenerator.Я не могу просто сказать class_mode="categorical", поскольку я делаю семантическую сегментацию (не классификацию изображений).Я знаю, что мог бы написать некоторый пользовательский код для генераторов для этой цели, но я хочу знать, будет ли трудно изменить keras ImageDataGenerator.

1 Ответ

1 голос
/ 10 июля 2019

ImageDataGenerator - это generator для изображений.

Это означает, что для того, чтобы это работало, ваши данные должны быть изображениями с 1 (полутоновым) или 3 каналами (rgb).Я думаю, что это не будет работать с вашими 4-D изображениями (если глубина не равна 1 или 3).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...