Входной конвейер для сегментации семантического изображения (3 метки) с помощью keras (бэкэнд TensforFlow) с использованием flow_from_directory () - PullRequest
0 голосов
/ 02 июля 2019

Я использую keras (бэкэнд TensorFlow) и пытаюсь понять, как ввести свои метки / маски для сегментации изображения (3 метки), используя flow_from_directory.

Train_images имеют размеры (144, 144, 144) - оттенки серого, уинт8.Соответствующие label_images имеют те же размеры, но здесь значение 1 представляет метку 1, значение 2 = метку 2, значение 3 = метку 3, а значение 0 показывает немаркированные пиксели.

Поскольку это семантическая сегментация, для классификации каждого пикселя в изображении требуется использовать функцию потерей перекрестной энтропии по пикселям.И, как я читал в некоторых сообщениях, keras (или TensorFlow) требует, чтобы мой label_image / mask был одним из них.Поэтому я ожидаю, что мой label_images будет изображением с 3 каналами, где каждый пиксель будет состоять из двоичного вектора.Пример: [0, 1, 0].

Как мне работать с немечеными пикселями, которые хранятся как 0?Должны ли они быть закодированы как [0, 0, 0]?

Но у меня есть вопрос, где мне не удается найти ответ: как мне правильно изменить форму / наклейку в горячем состоянии моего label_images правильно?Есть ли в keras удобная функция, которая позволяет мне конвертировать мои image_labels?

from keras.preprocessing.image import ImageDataGenerator

train_datagen = ImageDataGenerator(rescale=1. / 255)
label_datagen = ImageDataGenerator(rescale=1. / 255)

train_image_generator = train_datagen.flow_from_directory(
    directory='/train_images',
    target_size=(144, 144, 144),
    color_mode='grayscale',
    classes=None,
    class_mode=None,
    batch_size=4)

train_label_generator = label_datagen.flow_from_directory(
    directory='/label_images',
    target_size=(144, 144, 144),
    color_mode='grayscale',
    classes=None,
    class_mode=None,
    batch_size=4)

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