使用flow_from_directory从多个目录加载多个数据集
我想加载来自不同目录的多个数据集,以训练一个深度学习模型,以进行语义细分任务。例如,我有一个数据集的图像和掩码,以及另一个数据集的不同图像和掩码,在DataSet1文件夹和DataSet2文件夹中具有相同的文件结构。
train_images/
train/
img1, img2, img3 ..
train_masks/
train/
msk1, msk2, msk3 ..
val_images/
val/
img1, img2, img3 ..
val_masks/
val/
msk1, msk2, msk3 ..
我可以制作一个图像生成器,将一个数据集的图像和掩码与以下代码结合在一起。我想知道如何制作同时使用dataset1和dataset2的生成器。
from tensorflow.keras.preprocessing.image import ImageDataGenerator
img_data_gen_args = dict(horizontal_flip=True,
vertical_flip=True,
fill_mode='reflect')
image_datagen = ImageDataGenerator(**img_data_gen_args)
mask_datagen = ImageDataGenerator(**img_data_gen_args)
image_generator = image_datagen.flow_from_directory(
train_img_path,
class_mode = None,
batch_size = 16,
seed = 123)
mask_generator = mask_datagen.flow_from_directory(
train_mask_path,
class_mode = None,
batch_size = 16,
seed = 123)
train_generator = zip(image_generator, mask_generator)
train_img_path = "dataset1/train_images/"
train_mask_path = "dataset1/train_masks/"
train_img_gen = trainGenerator(train_img_path, train_mask_path, num_class=1)
# get one batch of image and mask
x, y = train_img_gen.__next__()
I want to load multiple datasets from the different directories to train a deep learning model for a semantic segmentation task. For example, I have images and masks of one dataset and different images and masks of another dataset with the same file structure in dataset1 folder and dataset2 folder like this.
train_images/
train/
img1, img2, img3 ..
train_masks/
train/
msk1, msk2, msk3 ..
val_images/
val/
img1, img2, img3 ..
val_masks/
val/
msk1, msk2, msk3 ..
I could make an image generator that combines images and masks for one dataset with the code below. I wonder how I can make the generator that uses both dataset1 and dataset2.
from tensorflow.keras.preprocessing.image import ImageDataGenerator
img_data_gen_args = dict(horizontal_flip=True,
vertical_flip=True,
fill_mode='reflect')
image_datagen = ImageDataGenerator(**img_data_gen_args)
mask_datagen = ImageDataGenerator(**img_data_gen_args)
image_generator = image_datagen.flow_from_directory(
train_img_path,
class_mode = None,
batch_size = 16,
seed = 123)
mask_generator = mask_datagen.flow_from_directory(
train_mask_path,
class_mode = None,
batch_size = 16,
seed = 123)
train_generator = zip(image_generator, mask_generator)
train_img_path = "dataset1/train_images/"
train_mask_path = "dataset1/train_masks/"
train_img_gen = trainGenerator(train_img_path, train_mask_path, num_class=1)
# get one batch of image and mask
x, y = train_img_gen.__next__()
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是使用Flow_from_dataframe进行操作的一种方法。我创建了两个火车目录和两个蒙版目录。每个类别有2个类,每个类别有5个图像。代码在下面
Here is a way to do it using flow_from_dataframe. I created two train directories and two mask directories. Each has 2 classes with 5 images in each class. Code is below