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