Рабочий процесс загрузки изображений в виде набора данных TensorFlow и подачи в Keras model.fit? - PullRequest
0 голосов
/ 26 мая 2020

Я работаю над набором данных дистанционного зондирования, который требует от меня вручную загрузить две папки с входными изображениями (1024, 1024, 3) и объединить каждую пару во вход (1024, 1024, 6). Каждая этикетка имеет формат (1024, 1024, 1).

Следовательно, конечный файл tf.data.Dataset должен иметь размер ((None, 1024, 1024, 6), (None, 1024, 1024, 1)), где None - размер пакета.

После руководство по Загрузка изображений в TensorFlow и Обучите и оцените с помощью Keras , мой набор данных был в форме <ParallelMapDataset shapes: ((None, None, 6), (None, None, 1)), types: (tf.float32, tf.float32)>.

Поэтому он не может перейти в model.fit() и возвращает ошибку 'ParallelMapDataset' object has no attribute 'ndim'.

Соответствующий код:

base_path = './LEVIR-CD/'

train_path_list = tf.data.Dataset.list_files(base_path + 'train/A/*.png')
test_path_list = tf.data.Dataset.list_files(base_path + 'test/A/*.png')
val_path_list = tf.data.Dataset.list_files(base_path + 'val/A/*.png')

def process_path(a_path):
    b_path = tf.strings.regex_replace(a_path, '/A/', '/B/')
    label_path = tf.strings.regex_replace(a_path, '/A/', '/label/')

    a = tf.image.decode_png(tf.io.read_file(a_path), channels=3) / 255
    b = tf.image.decode_png(tf.io.read_file(b_path), channels=3) / 255
    label = tf.image.decode_png(tf.io.read_file(label_path), channels = 1) / 255
    return concatenate([a, b], axis = 2), label

train_ds = train_path_list.map(process_path, num_parallel_calls = tf.data.experimental.AUTOTUNE)
test_ds = test_path_list.map(process_path, num_parallel_calls = tf.data.experimental.AUTOTUNE)
val_ds = val_path_list.map(process_path, num_parallel_calls = tf.data.experimental.AUTOTUNE)
isinstance(train_ds, tf.data.Dataset) # ==> True
model.fit(train_ds) # ==> Error

Sample data pair

Обновление: tf.image.resize(a, [1024, 1024]), которое изменяет размер этих 1024 * 1024 изображений до того же размера, решит проблему с отсутствующим размером, но ошибка останется.

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