Я использую 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)