我有一個包含影像和蒙版的資料集。
images_p = tf.keras.utils.image_dataset_from_directory(
path_imgs, batch_size=None, shuffle=False, label_mode=None)
masks_p = tf.keras.utils.image_dataset_from_directory(
path_masks, batch_size=None, shuffle=False, label_mode=None,
color_mode='grayscale')
dataset = tf.data.Dataset.zip((images_p, masks_p))
現在,我想應用一些預處理。但是,影像和蒙版會有所不同。例如,不應縮放蒙版。
我有類似的東西:
def resize_and_rescale(image, mask=False):
image = tf.image.resize(image, (IMG_HEIGHT, IMG_WIDTH))
if mask is False:
image = image / 255.0
return image
def prepare(ds, shuffle=False, augment=False):
# Resize and rescale
ds = ds.map(lambda x, y: (resize_and_rescale(x), y),
num_parallel_calls=AUTOTUNE)
if shuffle:
ds = ds.shuffle(buffer_size=1000)
# Batch dataset
ds = ds.batch(BATCH_SIZE)
# Use data augmentation only on the training set
if augment:
ds = ds.map(lambda x, y: (transform(x), y),
num_parallel_calls=AUTOTUNE)
return ds.prefetch(buffer_size=AUTOTUNE)
如何對影像和蒙版應用調整大小并僅對影像進行調整?
我首先拆分資料集。
train_ds, val_ds, test_ds = split_train_test_val(dataset,
SEED,
train_split=0.8,
val_split=0.1,
test_split=0.1,
shuffle=True,
shuffle_size=1000)
然后我必須應用準備功能。
像這樣的東西:
train_ds = prepare(train_ds, shuffle=True, augment=True)
val_ds = prepare(val_ds)
test_ds = prepare(test_ds)
uj5u.com熱心網友回復:
也許只是明確地只像這樣調整掩碼的大小:
import tensorflow as tf
path_imgs = ('/content/images/*.jpg')
path_masks = ('/content/masks/*.jpg')
images_p = tf.keras.utils.image_dataset_from_directory(
'/content/images/', batch_size=None, shuffle=False, label_mode=None)
masks_p = tf.keras.utils.image_dataset_from_directory(
'/content/masks/', batch_size=None, shuffle=False, label_mode=None,
color_mode='grayscale')
dataset = tf.data.Dataset.zip((images_p, masks_p))
IMG_HEIGHT = 64
IMG_WIDTH = 64
BATCH_SIZE = 2
def resize_and_rescale(image, mask):
image = tf.image.resize(image, (IMG_HEIGHT, IMG_WIDTH))
mask = tf.image.resize(mask, (IMG_HEIGHT, IMG_WIDTH))
image = image / 255.0
return image, mask
def prepare(ds, shuffle=False, augment=False):
# Resize and rescale
ds = ds.map(resize_and_rescale, num_parallel_calls=tf.data.AUTOTUNE)
if shuffle:
ds = ds.shuffle(buffer_size=1000)
# Batch dataset
ds = ds.batch(BATCH_SIZE)
return ds.prefetch(buffer_size=tf.data.AUTOTUNE)
ds = prepare(dataset)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/514835.html
