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

© . This site is unofficial and not affiliated with Hugging Face, Inc.