Datasets 文件

處理影像資料

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

處理影像資料

本指南展示了處理影像資料集的特定方法。您將學習如何:

有關如何處理任何型別資料集的指南,請參閱通用處理指南

Map

map() 函式可以將變換應用於整個資料集。

例如,建立一個基本的 Resize 函式:

>>> def transforms(examples):
...     examples["pixel_values"] = [image.convert("RGB").resize((100,100)) for image in examples["image"]]
...     return examples

現在使用 map() 函式來調整整個資料集的大小,並設定 `batched=True` 以透過接受批次樣本來加速處理。該變換將返回 `pixel_values` 作為一個可快取的 `PIL.Image` 物件:

>>> dataset = dataset.map(transforms, remove_columns=["image"], batched=True)
>>> dataset[0]
{'label': 6,
 'pixel_values': <PIL.PngImagePlugin.PngImageFile image mode=RGB size=100x100 at 0x7F058237BB10>}

快取檔案節省了時間,因為您不必執行相同的變換兩次。map() 函式最適用於每次訓練只執行一次的操作(例如調整影像大小),而不是用於每個 epoch 都執行的操作(例如資料增強)。

map() 會佔用一些記憶體,但您可以使用以下引數來減少其記憶體需求:

  • batch_size 決定了在一次變換函式呼叫中處理的樣本數量。
  • writer_batch_size 決定了在儲存之前保留在記憶體中的已處理樣本數量。

這兩個引數的預設值都為 1000,如果您儲存影像,這可能會很昂貴。當您使用 map() 時,降低這些值可以減少記憶體使用。

應用變換

🤗 Datasets 可以將任何庫或包中的資料增強應用於您的資料集。可以使用 set_transform() 在資料批次上即時應用變換,這會消耗更少的磁碟空間。

以下示例使用 torchvision,但您也可以隨時使用其他資料增強庫,如 AlbumentationsKorniaimgaug

例如,如果您想隨機更改影像的顏色屬性:

>>> from torchvision.transforms import Compose, ColorJitter, ToTensor

>>> jitter = Compose(
...     [
...          ColorJitter(brightness=0.25, contrast=0.25, saturation=0.25, hue=0.7),
...          ToTensor(),
...     ]
... )

建立一個函式來應用 `ColorJitter` 變換:

>>> def transforms(examples):
...     examples["pixel_values"] = [jitter(image.convert("RGB")) for image in examples["image"]]
...     return examples

使用 set_transform() 函式應用該變換:

>>> dataset.set_transform(transforms)
< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.