Как мне нужно настроить модель Keras для прогнозирования изображения? - PullRequest
0 голосов
/ 21 ноября 2018

Основная задача - предсказать маску для входного изображения.Итак, у меня есть следующие данные для обучения:

  • лот 768x768 оригинальных фотографий, подобных этому:

enter image description here

  • и фотографии выходной маски (также 768x768), например:

enter image description here

Также у меня есть проверка оригинальных фотографий.

Я готовлю какую-то нейронную модель, которая должна предсказать выходную маску.Я подготовил конфигурацию модели keras , которая должна иметь топологию, которая выглядит следующим образом:

enter image description here

Код, который я подготовил для обучения, есть,

import keras
epochs=100

image_datagen = keras.preprocessing.image.ImageDataGenerator()
mask_datagen = keras.preprocessing.image.ImageDataGenerator()
seed = 1
image_generator = image_datagen.flow_from_directory(
    'H:/LABS/ship_detection/test_train/',
    color_mode='rgb',batch_size=32,target_size=(768,768),
    seed=seed)

mask_generator = mask_datagen.flow_from_directory(
    'H:/LABS/ship_detection/test_mask/',
    class_mode="categorical",batch_size=32,target_size=(768,768),
    seed=seed)

train_generator = zip(image_generator, mask_generator)

model.fit_generator(generator=train_generator,
                    epochs=epochs,
                    callbacks=callbacks,steps_per_epoch=1)

Но когда я пытаюсь подогнать генератор для предсказания, у меня возникает проблема:

c:\users\harwister\appdata\local\programs\python\python36\lib\site-packages\keras\engine\training_generator.py in fit_generator(model, generator, steps_per_epoch, epochs, verbose, callbacks, validation_data, validation_steps, class_weight, max_queue_size, workers, use_multiprocessing, shuffle, initial_epoch)
    208                     batch_size = list(x.values())[0].shape[0]
    209                 else:
--> 210                     batch_size = x.shape[0]
    211                 batch_logs['batch'] = batch_index
    212                 batch_logs['size'] = batch_size

AttributeError: 'tuple' object has no attribute 'shape'

Я точно что-то не так делаю, но ничего не могу понять из такого родаошибки.Простой вопрос, на который я не могу найти ответ в Google: как я могу вставить в Keras два изображения (входное и выходное изображения) для обучения, а после обучения получить выходное изображение с входным изображением?

1 Ответ

0 голосов
/ 21 ноября 2018

Поскольку у вас есть отдельные генераторы для изображений и меток (то есть масок), вам нужно установить аргумент class_mode на None, чтобы генераторы не могли создавать массивы меток:

image_generator = image_datagen.flow_from_directory(class_mode=None, ...)
mask_generator = mask_datagen.flow_from_directory(class_mode=None, ...)

Таким образом, image_generator будет генерировать только входные изображения, а mask_generator будет генерировать только маски (то есть истинные метки).

...