概述:
Keras 数据预处理工具。
模块:
image 模块: 一组用于图像数据实时数据增强的工具。
sequence模块: 用于预处理序列数据的实用程序。
text 模块: 用于文本输入预处理的实用程序。
函数:
image_dataset_from_directory(...):从目录中的图像文件生成tf.data.Dataset。
text_dataset_from_directory(...):从目录中的文本文件生成tf.data.Dataset 。
timeseries_dataset_from_array(...):在作为数组提供的时间序列上创建滑动窗口的数据集。
tf.keras.preprocessing.image_dataset_from_directory
从目录中的图像文件生成tf.data.Dataset 。
tf.keras.preprocessing.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
)
如果您的目录结构是:
main_directory/
...class_a/
......a_image_1.jpg
......a_image_2.jpg
...class_b/
......b_image_1.jpg
......b_image_2.jpg
然后调用 image_dataset_from_directory(main_directory, labels='inferred') 将返回一个 tf.data.Dataset,它从子目录 class_a 和 class_b 中生成批量图像,以及标签 0 和 1(0 对应于 class_a,1 对应于 class_b)。
支持的图片格式:jpeg、jpg、png、bmp、gif。 动画 gif 被截断到第一帧。
参数 |
|
directory | 数据所在的目录。 如果标签是“inferred”,它应该包含子目录,每个子目录包含一个类的图像。 否则,目录结构将被忽略。 |
labels | “inferred”(标签是从目录结构生成的),或与目录中找到的图像文件数量相同大小的整数标签列表/元组。标签应根据图像文件路径的字母数字顺序进行排序(通过 Python 中的 os.walk(directory) 获得)。 |
label_mode |
|
class_names | 仅当“标签”为“inferred”时才有效。这是类名的显式列表(必须匹配子目录的名称)。用于控制类的顺序(否则使用字母数字顺序)。 |
color_mode | “grayscale”、“rgb”、“rgba”之一。 默认值:“RGB”。图像是否将转换为具有 1、3 或 4 个通道。 |
batch_size | 批量数据的大小。 默认值:32。 |
image_size | 从磁盘读取图像后调整图像大小的大小。默认为 (256, 256)。 由于通道处理必须具有相同大小的批量图像,因此必须提供。 |
shuffle | 是否打乱数据。 默认值:True。 如果设置为 False,则按字母数字顺序对数据进行排序。 |
seed | 用于shuffling 和transformations的可选随机种子。 |
validation_split | 0 到 1 之间的可选浮点数,用作验证数据的训练数据的一部分。 |
subset | “training”或“validation”之一。 仅在设置了validation_split 时使用。 |
interpolation | 字符串,调整图像大小时使用的插值方法。默认为bilinear。支持bilinear, nearest, bicubic, area, lanczos3, lanczos5, gaussian, mitchellcubic. 注:参照tf.image.resize |
follow_links | 是否访问符号链接指向的子目录。 默认为False。 |
返回 |
|
一个 tf.data.Dataset 对象。 |
|
关于标签格式的规则:
- 如果 label_mode 是 int,则标签是形状为 (batch_size,) 的 int32 张量。
- 如果 label_mode 是binary,则标签是形状为 (batch_size, 1) 的 1 和 0 的 float32 张量。
- 如果 label_mode 是categorial的,则标签是形状为 (batch_size, num_classes) 的 float32 张量,表示类索引的one-hot编码。
关于生成图像中通道数的规则:
- 如果 color_mode 是 grayscale(灰度图),则图像张量中有 1 个通道。
- 如果 color_mode 为 rgb,则图像张量中有 3 个通道。
- 如果 color_mode 是 rgba,则图像张量中有 4 个通道。
非常需要注意的事:目录位置不能是当前图像的文件夹
我图像存在了项目下的img中,但是此时如果我将
D:\Python_Subject\load_local_datasets\img 作为目录
importtensorflowastf
datasets=tf.keras.preprocessing.image_dataset_from_directory(
directory="D:/Python_Subject/load_local_datasets/img",
batch_size=1,
shuffle=False,
)
结果就是找不到图片
但是我将地址修改为
D:\Python_Subject\load_local_datasets
importtensorflowastf
datasets=tf.keras.preprocessing.image_dataset_from_directory(
directory="D:/Python_Subject/load_local_datasets",
batch_size=1,
shuffle=False,
)
便成功了