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])