Функция препроцессинга в Keras не работает

В моей задаче 2D-семантической сегментации все значения пикселей в метках не являются, например, не 0,1,2, а 0,127,255. Поэтому я хочу просто добавить функцию предварительной обработки в мой ImageDataGenerator набора данных меток,

Мой код:

SEED = 111
batch_size = 2
image_datagen = ImageDataGenerator(
    horizontal_flip=True,
    zca_epsilon=9,
    # fill_mode='nearest',
)
image_generator = image_datagen.flow_from_directory(
    directory="/xxx/images",
    class_mode=None,
    batch_size=batch_size,
    seed=SEED,
)


def preprocessing_function(image):
    # if I have 3 categories, I need to convert 0,10,20 to 0,1,2 for example 
    return image


label_datagen = ImageDataGenerator(
    horizontal_flip=True,
    zca_epsilon=9,
    rescale=1,
    preprocessing_function=preprocessing_function,
    # fill_mode='nearest',
)
label_generator = image_datagen.flow_from_directory(
    directory="/xxx/labels",
    class_mode=None,
    batch_size=batch_size,
    seed=SEED,
)

train_generator = zip(image_generator, label_generator)
print(len(image_generator))
i = 0
for image_batch, label_batch in iter(train_generator):
    print(image_batch.shape, label_batch.shape) # (2, 256, 256, 3) (2, 256, 256, 3)
    print(image_batch.dtype, label_batch.dtype) # float32 float32
    i += 1
    if i == 5:
        break

Но похоже, что мой

preprocessing_function(изображение)

не влияет на мои данные лейбла.

Я правильно использую функцию preprocess? Как я могу это починить?

1 ответ

Я нахожу решение:

Если я передаю функцию предварительной обработки, чтобы пометить данные ImageDataGenerator(), мне нужно использовать:

label_batch = label_datagen.standardize(label_batch)

на каждой из моих этикеток, чтобы активировать функцию предварительной обработки.

Другие вопросы по тегам