详解Keras3.0 Data loading:Image data loading
2023-12-13 22:25:24
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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!