不同模态的预处理

使用 Hugging Face 的多模态模型

James Chapman

Curriculum Manager, DataCamp

文本预处理

示例文本字符串。

  • Tokenizer:将文本映射为模型输入
使用 Hugging Face 的多模态模型

文本预处理

文本预处理流程图(至规范化)

  • Tokenizer:将文本映射为模型输入
    • 规范化:小写化、去除特殊字符、去除多余空白
使用 Hugging Face 的多模态模型

文本预处理

流程图续到分词

  • Tokenizer:将文本映射为模型输入
    • 规范化:小写化、去除特殊字符、去除多余空白
    • (预)分词:将文本切分为词/子词
使用 Hugging Face 的多模态模型

文本预处理

流程图续到ID转换和填充

  • Tokenizer:将文本映射为模型输入
    • 规范化:小写化、去除特殊字符与空白
    • (预)分词:将文本切分为词/子词
    • ID 转换:用词表将 token 映射为整数
使用 Hugging Face 的多模态模型

文本预处理

preprocessing_text5.jpg

  • Tokenizer:将文本映射为模型输入
    • 规范化:小写化、去除特殊字符与空白
    • (预)分词:将文本切分为词/子词
    • ID 转换:用词表将 token 映射为整数
    • 填充:添加额外 token 以统一序列长度
使用 Hugging Face 的多模态模型

文本预处理

from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained('distilbert/distilbert-base-uncased')

text = "Do you need more éclairs?"
print(tokenizer.backend_tokenizer.normalizer.normalize_str(text))
do you need more eclairs
tokenizer(text, return_tensors='pt', padding=True)
{'input_ids': tensor([[  101,  ..., 102]]), ...}
使用 Hugging Face 的多模态模型

图像预处理

  • 规范化:像素强度归一化
  • 缩放:匹配模型输入层
  • 通用规则 → 使用原始模型的预处理

一组人跳跃的图像,展示预处理前后

1 https://huggingface.co/datasets/nlphuji/flickr30k
使用 Hugging Face 的多模态模型

图像预处理

多模态任务需要一致的预处理:

from transformers import BlipProcessor, BlipForConditionalGeneration

checkpoint = "Salesforce/blip-image-captioning-base"
model = BlipForConditionalGeneration.from_pretrained(checkpoint) processor = BlipProcessor.from_pretrained(checkpoint)

编码图像 → 转换为文本编码 → 解码文本

image = load_dataset("nlphuji/flickr30k")['test'][11]["image"]
inputs = processor(images=image, return_tensors="pt")

output = model.generate(**inputs)
print(processor.decode(output[0]))
[{'generated_text': 'a group of people jumping'}]
使用 Hugging Face 的多模态模型

音频预处理

音频频谱

  • 音频预处理:
    • 序列数组 → 滤波/填充
    • 采样率 → 重采样

将特征提取为模型输入(声谱图

spectro

使用 Hugging Face 的多模态模型

音频预处理

from datasets import load_dataset, Audio

dataset = load_dataset("CSTR-Edinburgh/vctk")["train"] dataset = dataset.cast_column("audio", Audio(sampling_rate=16_000))
  • 应优先使用模型专用的完整预处理器:
from transformers import AutoProcessor
processor = AutoProcessor.from_pretrained("openai/whisper-small")
audio_pp = processor(dataset[0]["audio"]["array"], 
                     sampling_rate=16_000, return_tensors="pt")
  • 采样率必须符合模型输入要求
1 https://huggingface.co/datasets/CSTR-Edinburgh/vctk
使用 Hugging Face 的多模态模型

Passons à la pratique !

使用 Hugging Face 的多模态模型

Preparing Video For Download...