資料集文件
處理影像資料
立即開始
教學課程
操作指南
總覽
一般用法
載入流程串流與 PyTorch 搭配使用與 TensorFlow 搭配使用與 NumPy 搭配使用與 JAX 搭配使用與 Pandas 搭配使用與 Polars 搭配使用與 PyArrow 搭配使用與 Spark 搭配使用快取管理雲端儲存搜尋索引命令列介面 (CLI)疑難排解
音訊 (Audio)
視覺
文字
表格式
資料集儲存庫
概念指南
參考
加入 Hugging Face 社群
並獲得增強的文件體驗
開始使用
處理圖像數據
本指南介紹處理圖像數據集的具體方法。瞭解如何:
- 在圖像數據集上使用 map()。
- 使用 set_transform() 將數據增強應用於數據集。
關於如何處理各類資料集的指南,請參考通用處理指南。
映射 (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,但你也可以隨意使用其他數據增強函式庫,如 Albumentations、Kornia 以及 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)