数据集文档

加载图像数据

Hugging Face's logo
加入 Hugging Face 社区

并获得增强型文档体验

开始使用

加载图像数据

图像数据集具有 Image 类型列,其中包含 PIL 对象。

要使用图像数据集,您需要安装 vision 依赖项。查看 安装 指南以了解如何安装它。

当您加载图像数据集并调用图像列时,图像将被解码为 PIL 图像。

>>> from datasets import load_dataset, Image

>>> dataset = load_dataset("beans", split="train")
>>> dataset[0]["image"]

首先使用行索引,然后使用 image 列(dataset[0]["image"])访问图像数据集,以避免解码和重新采样数据集中的所有图像对象。否则,如果数据集很大,此过程可能会很慢且耗时。

有关如何加载任何类型数据集的指南,请查看 通用加载指南

本地文件

您可以从图像路径加载数据集。使用 cast_column() 函数接受图像文件路径列,并使用 Image 特征将其解码为 PIL 图像。

>>> from datasets import Dataset, Image

>>> dataset = Dataset.from_dict({"image": ["path/to/image_1", "path/to/image_2", ..., "path/to/image_n"]}).cast_column("image", Image())
>>> dataset[0]["image"]
<PIL.PngImagePlugin.PngImageFile image mode=RGBA size=1200x215 at 0x15E6D7160>]

如果您只想加载图像数据集的基础路径,而不解码图像对象,请在 Image 特征中设置 decode=False

>>> dataset = load_dataset("beans", split="train").cast_column("image", Image(decode=False))
>>> dataset[0]["image"]
{'bytes': None,
 'path': '/root/.cache/huggingface/datasets/downloads/extracted/b0a21163f78769a2cf11f58dfc767fb458fc7cea5c05dccc0144a2c0f0bc1292/train/bean_rust/bean_rust_train.29.jpg'}

ImageFolder

您还可以使用 ImageFolder 数据集构建器加载数据集,该构建器不需要编写自定义数据加载器。这使得 ImageFolder 非常适合快速创建和加载包含数千张用于不同视觉任务的图像的数据集。您的图像数据集结构应如下所示

folder/train/dog/golden_retriever.png
folder/train/dog/german_shepherd.png
folder/train/dog/chihuahua.png

folder/train/cat/maine_coon.png
folder/train/cat/bengal.png
folder/train/cat/birman.png

通过指定 imagefolder 和数据集在 data_dir 中的目录来加载您的数据集。

>>> from datasets import load_dataset

>>> dataset = load_dataset("imagefolder", data_dir="/path/to/folder")
>>> dataset["train"][0]
{"image": <PIL.PngImagePlugin.PngImageFile image mode=RGBA size=1200x215 at 0x15E6D7160>, "label": 0}

>>> dataset["train"][-1]
{"image": <PIL.PngImagePlugin.PngImageFile image mode=RGBA size=1200x215 at 0x15E8DAD30>, "label": 1}

使用 data_files 参数从其 URL 加载远程数据集。

>>> dataset = load_dataset("imagefolder", data_files="https://download.microsoft.com/download/3/E/1/3E1C3F21-ECDB-4869-8368-6DEBA77B919F/kagglecatsanddogs_5340.zip", split="train")

某些数据集具有与其关联的元数据文件 (metadata.csv/metadata.jsonl),其中包含有关数据其他信息,例如边界框、文本标题和标签。当您调用 load_dataset() 并指定 imagefolder 时,会自动加载元数据。

要忽略元数据文件中的信息,请在 load_dataset() 中设置 drop_labels=False,并允许 ImageFolder 自动从目录名称推断标签名称。

>>> from datasets import load_dataset

>>> dataset = load_dataset("imagefolder", data_dir="/path/to/folder", drop_labels=False)

有关创建自己的 ImageFolder 数据集的更多信息,请查看 创建图像数据集 指南。

WebDataset

WebDataset 格式基于 TAR 档案文件夹,适用于大型图像数据集。由于其大小,WebDataset 通常以流模式加载(使用 streaming=True)。

您可以像这样加载 WebDataset

>>> from datasets import load_dataset

>>> dataset = load_dataset("webdataset", data_dir="/path/to/folder", streaming=True)
< > 在 GitHub 上更新