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 cow standing?"
url = "https://huggingface.co/gv-hf/PaliGemma-test-224px-hf/resolve/main/cow_beach_1.png"
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'

请记住重新采样采样率以匹配预训练模型所需的采样率。

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