ImageDataGenerator для семантической сегментации

Я пытаюсь выполнить семантическую сегментацию с помощью Keras, и при попытке загрузить изображения я получаю эту ошибку, используя метод flow_from_directory.

Found 0 images belonging to 0 classes.
Found 0 images belonging to 0 classes.

Это мой код.

from tensorflow.keras.applications.resnet50 import preprocess_input
from tensorflow.keras.preprocessing.image import ImageDataGenerator

data_generator = ImageDataGenerator()
train_generator = data_generator.flow_from_directory(
                                        directory="../input/Training_dataset/Images",
                                        target_size=(IMG_SIZE, IMG_SIZE),
                                        batch_size=16,
                                        class_mode=None,
                                        classes=None
                                        )

mask_generator = data_generator.flow_from_directory(
    directory="../input/Training_dataset/Masks/all",
    class_mode=None,
    classes=None,
    batch_size = 1,
    )

Я прочитал этот вопрос, но решение не сработало Keras для семантической сегментации, flow_from_directory ( ) ошибка


person Jaime Cuellar    schedule 22.09.2019    source источник


Ответы (1)


вам нужно хранить изображения в одной подпапке, например, создать папку с именем «img» внутри каталога изображений и маски.

-- image
   -- img
      -- 1.jpg
      -- 2.jpg
-- mask
   -- img
      -- 1.png
      -- 2.png

Датагенератор должен быть таким: -

seed = 909 # (IMPORTANT) to transform image and corresponding mask with same augmentation parameter.
image_datagen = ImageDataGenerator(width_shift_range=0.1,
                 height_shift_range=0.1,
                 preprocessing_function = image_preprocessing) # custom fuction for each image you can use resnet one too.
mask_datagen = ImageDataGenerator(width_shift_range=0.1,
                 height_shift_range=0.1,
                 preprocessing_function = mask_preprocessing)  # to make mask as feedable formate (256,256,1)

image_generator =image_datagen.flow_from_directory("dataset/image/",
                                                    class_mode=None, seed=seed)

mask_generator = mask_datagen.flow_from_directory("dataset/mask/",
                                                   class_mode=None, seed=seed)

train_generator = zip(image_generator, mask_generator)

Если вы хотите создать свой собственный генератор данных для моделей семантической сегментации, чтобы лучше контролировать набор данных, вы можете проверить мое ядро ​​kaggle, где я использовал набор данных camvid для обучения модели UNET.

https://www.kaggle.com/mukulkr/camvid-segmentation-using-unet

Если вам нужна улучшенная функция, вы можете проверить это замечательное репозиторий GitHub - https://github.com/mdbloice/Augmentor

person Mukul    schedule 22.09.2019
comment
Это сработало с изображениями, но при попытке соответствовать модели я получаю ошибку AttributeError: 'zip' object has no attribute 'shape' Спасибо, в любом случае, я проверил ваше ядро - person Jaime Cuellar; 22.09.2019
comment
Я не получаю AttributeError, который может точно сказать, где вы получаете эту ошибку. - person Mukul; 22.09.2019
comment
после попытки сделать это train_generator = zip(image_generator, mask_generator) model.fit_generator(train_generator, steps_per_epoch=167,epochs=10) - person Jaime Cuellar; 22.09.2019