Load image data¶
Image 數據集從 image
列(column)加載,其中包含 PIL object。
Info
要使用 Image 數據集,您需要安裝 vision 依賴項。查看安裝指南以了解如何安裝。
當您加載 Image 數據集並調用 image 列時,Image feature 會自動將 PIL object 解碼為 image:
from datasets import load_dataset, Image
dataset = load_dataset("beans", split="train")
dataset[0]["image"]
Tip
首先使用行 index,然後使用 image 列(column)對圖像數據集進行索引 - dataset[0]["image"]
- 以避免對數據集中的所有圖像物件進行解碼和重新採樣。否則,當您有大量數據集,這可能是一個緩慢且耗時的過程。
Local files¶
您可以從圖像路徑加載數據集。使用 cast_column()
函數接受一列 image 文件路徑,並使用 Image feature 將其解碼為 PIL image:
from datasets import load_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"]
結果:
如果您只想加載圖像數據集的底層路徑而不解碼 image object,請在 Image feature 中設置 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
通過在 data_dir
中指定 imagefolder
和數據集目錄來加載數據集:
from datasets import load_dataset
dataset = load_dataset("imagefolder", data_dir="/path/to/folder")
dataset["train"][0]
dataset["train"][-1]
結果:
{"image": <PIL.PngImagePlugin.PngImageFile image mode=RGBA size=1200x215 at 0x15E6D7160>, "label": 0}
{"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_3367a.zip", split="train")
某些數據集具有與其關聯的 metadata
文件 (metadata.csv
/metadata.jsonl
),其中包含有關數據的其他信息,例如邊界框、文本標題和標籤。當您調用 load_dataset()
並指定圖像文件夾時,元數據會自動加載。
要忽略元數據文件中的信息,請在 load_dataset()
中設置 drop_labels=False
,並允許 ImageFolder
自動從目錄名稱推斷標籤名稱:
from datasets import load_dataset
dataset = load_dataset("imagefolder", data_dir="/path/to/folder", drop_labels=False)
Tip
有關創建您自己的 ImageFolder
數據集的更多信息,請查看 Create an image dataset 指南。