当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.keras.utils.image_dataset_from_directory用法及代码示例


从目录中的图像文件生成tf.data.Dataset

用法

tf.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, **kwargs
)

参数

  • directory 数据所在的目录。如果labels 是"inferred",它应该包含子目录,每个子目录都包含一个类的图像。否则,目录结构将被忽略。
  • labels "inferred"(从目录结构生成标签)、None(无标签)或与目录中找到的图像文件数量相同大小的整数标签列表/元组。标签应根据图像文件路径的字母数字顺序排序(通过 Python 中的os.walk(directory) 获得)。
  • label_mode
    - 'int':means that the labels are encoded as integers
    (e.g. for `sparse_categorical_crossentropy` loss).
    • 'categorical' 表示标签被编码为分类向量(例如,对于 categorical_crossentropy 损失)。
    • 'binary' 表示标签(只能有 2 个)被编码为值为 0 或 1 的 float32 标量(例如,对于 binary_crossentropy )。
    • 无(无标签)。
  • class_names 仅当 "labels" 为 "inferred" 时才有效。这是类名的显式列表(必须与子目录的名称匹配)。用于控制类的顺序(否则使用字母数字顺序)。
  • color_mode "grayscale"、"rgb"、"rgba" 之一。默认值:"rgb"。图像是否将转换为具有 1、3 或 4 个通道。
  • batch_size 数据批次的大小。默认值:32。如果 None ,数据将不会被批处理(数据集将产生单个样本)。
  • image_size 从磁盘读取图像后调整图像大小的大小。默认为 (256, 256) 。由于管道处理必须具有相同大小的批量图像,因此必须提供这一点。
  • shuffle 是否打乱数据。默认值:真。如果设置为 False,则按字母数字顺序对数据进行排序。
  • seed 用于洗牌和转换的可选随机种子。
  • validation_split 0 到 1 之间的可选浮点数,保留用于验证的数据的一部分。
  • subset "training" 或 "validation" 之一。仅在设置 validation_split 时使用。
  • interpolation 字符串,调整图像大小时使用的插值方法。默认为 bilinear 。支持 bilinear , nearest , bicubic , area , lanczos3 , lanczos5 , gaussian , mitchellcubic
  • follow_links 是否访问符号链接指向的子目录。默认为假。
  • crop_to_aspect_ratio 如果为 True,则调整图像大小而不会出现纵横比失真。当原始纵横比与目标纵横比不同时,将裁剪输出图像以返回与目标纵横比匹配的图像(大小为image_size)中最大的可能窗口。默认情况下(crop_to_aspect_ratio=False),可能不会保留纵横比。
  • **kwargs 旧版关键字参数。

返回

  • A tf.data.Dataset对象。
    • 如果 label_mode 为 None,它会产生形状为 (batch_size, image_size[0], image_size[1], num_channels)float32 张量,对图像进行编码(有关 num_channels 的规则,请参见下文)。
    • 否则,它会产生一个元组 (images, labels) ,其中 images 具有形状 (batch_size, image_size[0], image_size[1], num_channels) ,并且 labels 遵循下面说明的格式。

如果你的目录结构是:

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_aclass_b 中生成批量图像,以及标签 0 和 1(0 对应于 class_a,1 对应于 class_b)。

支持的图片格式:jpeg、png、bmp、gif。动画 gif 被截断到第一帧。

关于标签格式的规则:

  • 如果 label_modeint ,则标签是形状为 (batch_size,)int32 张量。
  • 如果 label_modebinary ,则标签是形状为 (batch_size, 1) 的 1 和 0 的 float32 张量。
  • 如果 label_modecategorial ,则标签是形状为 (batch_size, num_classes)float32 张量,表示类索引的 one-hot 编码。

关于生成图像中通道数的规则:

  • 如果 color_modegrayscale ,则图像张量中有 1 个通道。
  • 如果 color_modergb ,则图像张量中有 3 个通道。
  • 如果 color_modergba ,则图像张量中有 4 个通道。

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.keras.utils.image_dataset_from_directory。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。