详解Keras3.0 Data loading:Image data loading

发布时间:2023年12月19日

1、image_dataset_from_directory

keras.utils.image_dataset_from_directory(
    directory,
    labels="inferred",
    label_mode="int",
    class_names=None,
    color_mode="rgb",
    batch_size=32,
    image_size=(256, 256),
    shuffle=True,
    seed=None,
    validation_split=None,
    subset=None,
    interpolation="bilinear",
    follow_links=False,
    crop_to_aspect_ratio=False,
    data_format=None,
)
参数说明
  • directory:数据所在的目录。如果标签是“推断的”,它应该包含子目录,每个子目录都包含一个类的图像。否则,将忽略目录结构。
  • labels:“推断”(标签由目录结构生成)、“无”(无标签)或整数标签的列表/元组,其大小与目录中找到的图像文件数相同。标签应该根据图像文件路径的字母数字顺序进行排序(通过Python中的os.walk(目录)获得)。
  • label_mode:描述标签编码的字符串。选项包括“int”:表示标签被编码为整数(例如,对于稀疏类别交叉熵损失)。“分类”是指标签被编码为分类向量(例如,对于类别交叉熵损失)“二进制”意味着标签(只能有2个)被编码为值为0或1的float32标量(例如二进制交叉熵)。
  • class_names:只有当标签是“推断的”时才有效。这是类名的显式列表(必须与子目录的名称相匹配)。用于控制类的顺序(否则使用字母数字顺序)。
  • color_mode:“灰度”、“rgb”和“rgba”之一。默认为“rgb”。图像是否将被转换为具有1个、3个或4个通道。
  • batch_size:数据批次的大小。默认值为32。如果“无”,则不会对数据进行批处理(数据集将生成单个样本)。
  • image_size:从磁盘读取图像后将其调整大小的大小,指定为(高度、宽度)。默认值为(256256)。由于管道处理的图像批次必须具有相同的大小,因此必须提供这一点。
  • shuffle:是否对数据进行shuffle。默认为True。如果设置为False,则按字母数字顺序对数据进行排序。
  • seed:用于混洗和变换的可选随机种子。
  • validation_split:0和1之间的可选浮点值,保留用于验证的数据的分数。
  • subset:要返回的数据的子集。“培训”、“验证”或“两者兼有”之一。仅在设置了validation_split时使用。当子集=“both”时,该实用程序返回两个数据集(分别为训练和验证数据集)的元组。
  • interpolation:字符串,调整图像大小时使用的插值方法。默认为“双线性”。支持“双线性”、“最近”、“双三次”、“面积”、“lanczos3”、“lanczos5”、“高斯”、“mitchellcubic”。
  • follow_links:是否访问符号链接指向的子目录。默认为False。
  • crop_to_aspect_ratio:如果为True,则调整图像大小而不失真纵横比。当原始宽高比不同于目标宽高比时,输出图像将被裁剪,以便返回图像中与目标宽高比匹配的最大可能窗口(大小为image_size)。默认情况下(crop_to_aspect_ratio=False),可能不会保留纵横比。
  • data_format:?如果None使用keras.config.image_data_format(),否则为“channel_last”或“channel_first”。
示例
# 指定主目录路径
main_directory = '/path/to/your/images'

# 使用image_dataset_from_directory加载图像数据集
dataset = tf.keras.preprocessing.image_dataset_from_directory(
    main_directory,
    labels='inferred',
    label_mode='binary',  # 设置标签模式为二进制(0或1)
    image_size=(256, 256),  # 设置图像大小为256x256像素
)

# 对数据集进行预处理
dataset = dataset.map(lambda x, y: (tf.image.resize(x, (224, 224)), y))
dataset = dataset.batch(32)  # 设置批次大小为32
dataset = dataset.prefetch(buffer_size=tf.data.experimental.AUTOTUNE)  # 自动调整预取缓冲区大小以优化性能

# 遍历数据集进行训练或评估等操作
for images, labels in dataset:
    # 在这里添加你的模型训练或评估代码
    pass

?

2、?load_img

keras.utils.load_img(
    path,
    color_mode="rgb",
    target_size=None,
    interpolation="nearest",
    keep_aspect_ratio=False,
)
参数说明
  • path: 这是要加载的图像文件的路径。可以是本地文件路径或 URL。
  • color_mode: 指定图像的颜色模式。默认为 "rgb",表示使用红绿蓝三个通道的颜色。其他可选值包括 "grayscale"(灰度图像)和 "rgba"(带透明度的图像)。
  • target_size: 指定目标图像的大小。如果提供了该参数,则将图像调整为指定的尺寸。如果不提供,则保持原始图像大小不变。可以是一个包含宽度和高度的元组,例如 (224, 224)。
  • interpolation: 指定插值方法。默认为 "nearest",表示最近邻插值。其他可选值包括 "bilinear"(双线性插值)和 "bicubic"(双三次插值)。
  • keep_aspect_ratio: 是否保持图像的宽高比。默认为 False,表示不保持宽高比。如果设置为 True,则在调整图像大小时会尽量保持原始图像的宽高比。

3、img_to_array

keras.utils.img_to_array(img, data_format=None, dtype=None)
参数说明
  • img输入的图像,可以是 PIL.Image 对象、NumPy 数组或文件路径。
  • data_format可选参数,指定图像数据的格式。默认为 None,表示使用 Keras 配置文件中的设置。可选值有 'channels_first' 和 'channels_last'。
  • dtype可选参数,指定输出数组的数据类型。默认为 None,表示使用 Keras 配置文件中的设置。

4、save_img

keras.utils.save_img(
    path, x, data_format=None, file_format=None, scale=True, **kwargs
)
参数说明?
  • path输出图像文件的路径。
  • x输入的图像数据,可以是 PIL.Image 对象、NumPy 数组或文件路径。
  • data_format可选参数,指定图像数据的格式。默认为 None,表示使用 Keras 配置文件中的设置。可选值有 'channels_first' 和 'channels_last'。
  • file_format可选参数,指定输出图像的文件格式。默认为 None,表示根据文件扩展名自动推断。支持的文件格式有 'jpeg'、'png'、'bmp' 等。
  • scale可选参数,布尔值。如果为 True,则将图像数据缩放到 [0, 255] 范围内。默认为 True。
  • **kwargs其他关键字参数,用于传递给底层图像处理库(如 PIL)的特定选项。

?

文章来源:https://blog.csdn.net/lymake/article/details/134968575
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。