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 上更新