Load image data

Load image data

Image datasets are loaded from the image column, which contains a PIL object.

To work with image datasets, you need to have the vision dependency installed. Check out the installationarrow-up-right guide to learn how to install it.

When you load an image dataset and call the image column, the Imagearrow-up-right feature automatically decodes the PIL object into an image:

Copied

>>> from datasets import load_dataset, Image

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

Index into an image dataset using the row index first and then the image column - dataset[0]["image"] - to avoid decoding and resampling all the image objects in the dataset. Otherwise, this can be a slow and time-consuming process if you have a large dataset.

For a guide on how to load any type of dataset, take a look at the general loading guidearrow-up-right.

Local files

You can load a dataset from the image path. Use the cast_column()arrow-up-right function to accept a column of image file paths, and decode it into a PIL image with the Imagearrow-up-right feature:

Copied

>>> 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>]

If you only want to load the underlying path to the image dataset without decoding the image object, set decode=False in the Imagearrow-up-right feature:

Copied

ImageFolder

You can also load a dataset with an ImageFolder dataset builder which does not require writing a custom dataloader. This makes ImageFolder ideal for quickly creating and loading image datasets with several thousand images for different vision tasks. Your image dataset structure should look like this:

Copied

Load your dataset by specifying imagefolder and the directory of your dataset in data_dir:

Copied

Load remote datasets from their URLs with the data_files parameter:

Copied

Some datasets have a metadata file (metadata.csv/metadata.jsonl) associated with it, containing other information about the data like bounding boxes, text captions, and labels. The metadata is automatically loaded when you call load_dataset()arrow-up-right and specify imagefolder.

To ignore the information in the metadata file, set drop_labels=False in load_dataset()arrow-up-right, and allow ImageFolder to automatically infer the label name from the directory name:

Copied

For more information about creating your own ImageFolder dataset, take a look at the Create an image datasetarrow-up-right guide.

Last updated