Transformers 文件

處理器

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

處理器

多模態模型需要一個能夠處理組合了多種模態輸入的預處理器。根據輸入模態的不同,處理器需要將文字轉換為張量陣列,將影像轉換為畫素值,將音訊轉換為具有正確取樣率的張量陣列。

例如,PaliGemma 是一個視覺語言模型,它使用 SigLIP 影像處理器和 Llama 分詞器。一個 ProcessorMixin 類封裝了這兩種預處理器型別,為多模態模型提供了一個單一且統一的處理器類。

呼叫 from_pretrained() 來載入處理器。將輸入型別傳遞給處理器以生成預期的模型輸入、輸入 ID 和畫素值。

from transformers import AutoProcessor, PaliGemmaForConditionalGeneration
from PIL import Image
import requests

processor = AutoProcessor.from_pretrained("google/paligemma-3b-pt-224")

prompt = "answer en Where is the cat standing?"
url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
image = Image.open(requests.get(url, stream=True).raw)

inputs = processor(text=prompt, images=image, return_tensors="pt")
inputs

本指南介紹了處理器類以及如何預處理多模態輸入。

處理器類

所有處理器都繼承自 ProcessorMixin 類,該類提供了諸如 from_pretrained()save_pretrained()push_to_hub() 等方法,用於從 Hub 載入、儲存和共享處理器。

有兩種載入處理器的方法,一種是使用 AutoProcessor,另一種是使用特定於模型的處理器類。

AutoProcessor
特定於模型的處理器

AutoClass API 提供了一個簡單的介面來載入處理器,而無需直接指定其所屬的特定模型類。

使用 from_pretrained() 來載入處理器。

from transformers import AutoProcessor

processor = AutoProcessor.from_pretrained("google/paligemma-3b-pt-224")

預處理

處理器將多模態輸入預處理為預期的 Transformers 格式。處理器可以處理多種輸入模態組合,例如文字和音訊,或文字和影像。

自動語音識別 (ASR) 任務需要一個能夠處理文字和音訊輸入的處理器。載入資料集並檢視 audiotext 列(可以刪除不需要的其他列)。

from datasets import load_dataset

dataset = load_dataset("lj_speech", split="train")
dataset = dataset.map(remove_columns=["file", "id", "normalized_text"])
dataset[0]["audio"]
{'array': array([-7.3242188e-04, -7.6293945e-04, -6.4086914e-04, ...,
         7.3242188e-04,  2.1362305e-04,  6.1035156e-05], dtype=float32),
 'path': '/root/.cache/huggingface/datasets/downloads/extracted/917ece08c95cf0c4115e45294e3cd0dee724a1165b7fc11798369308a465bd26/LJSpeech-1.1/wavs/LJ001-0001.wav',
 'sampling_rate': 22050}

dataset[0]["text"]
'Printing, in the only sense with which we are at present concerned, differs from most if not from all the arts and crafts represented in the Exhibition'

請記住重新取樣取樣率以匹配預訓練模型所需的取樣率。

from datasets import Audio

dataset = dataset.cast_column("audio", Audio(sampling_rate=16000))

載入處理器並將音訊 arraytext 列傳遞給它。

from transformers import AutoProcessor

processor = AutoProcessor.from_pretrained("openai/whisper-tiny")

def prepare_dataset(example):
    audio = example["audio"]
    example.update(processor(audio=audio["array"], text=example["text"], sampling_rate=16000))
    return example

應用 prepare_dataset 函式來預處理資料集。處理器為 audio 列返回 input_features,為文字列返回 labels

prepare_dataset(dataset[0])
< > 在 GitHub 上更新

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