資料集文件

處理影像資料

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() 在數據批次上即時 (on-the-fly) 應用,這佔用的磁碟空間較少。

以下範例使用 torchvision,但你也可以隨意使用其他數據增強函式庫,如 AlbumentationsKornia 以及 imgaug

例如,如果你想隨機更改圖像的色彩屬性:

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