Transformers 文件
處理器
並獲得增強的文件體驗
開始使用
處理器
多模態模型需要一個能夠處理組合了多種模態輸入的預處理器。根據輸入模態的不同,處理器需要將文字轉換為張量陣列,將影像轉換為畫素值,將音訊轉換為具有正確取樣率的張量陣列。
例如,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,另一種是使用特定於模型的處理器類。
AutoClass API 提供了一個簡單的介面來載入處理器,而無需直接指定其所屬的特定模型類。
使用 from_pretrained() 來載入處理器。
from transformers import AutoProcessor
processor = AutoProcessor.from_pretrained("google/paligemma-3b-pt-224")預處理
處理器將多模態輸入預處理為預期的 Transformers 格式。處理器可以處理多種輸入模態組合,例如文字和音訊,或文字和影像。
自動語音識別 (ASR) 任務需要一個能夠處理文字和音訊輸入的處理器。載入資料集並檢視 audio 和 text 列(可以刪除不需要的其他列)。
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))載入處理器並將音訊 array 和 text 列傳遞給它。
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])