Předzpracování různých modalit

Multi-Modal Models with Hugging Face

James Chapman

Curriculum Manager, DataCamp

Předzpracování textu

Příklad textového řetězce.

  • Tokenizer: mapuje text → vstup modelu
Multi-Modal Models with Hugging Face

Předzpracování textu

Vývojový diagram předzpracování textu – až po normalizaci

  • Tokenizer: mapuje text → vstup modelu
    • Normalizace: převod na malá písmena, odstranění speciálních znaků, přebytečných mezer
Multi-Modal Models with Hugging Face

Předzpracování textu

Pokračování vývojového diagramu – tokenizace

  • Tokenizer: mapuje text → vstup modelu
    • Normalizace: převod na malá písmena, odstranění speciálních znaků, přebytečných mezer
    • (Před-)tokenizace: rozdělení textu na slova/podslova
Multi-Modal Models with Hugging Face

Předzpracování textu

Pokračování vývojového diagramu – převod na ID a padding

  • Tokenizer: mapuje text → vstup modelu
    • Normalizace: převod na malá písmena, odstranění speciálních znaků, mezer
    • (Před-)tokenizace: rozdělení textu na slova/podslova
    • Převod na ID: mapování tokenů na celá čísla pomocí slovníku
Multi-Modal Models with Hugging Face

Předzpracování textu

preprocessing_text5.jpg

  • Tokenizer: mapuje text → vstup modelu
    • Normalizace: převod na malá písmena, odstranění speciálních znaků, mezer
    • (Před-)tokenizace: rozdělení textu na slova/podslova
    • Převod na ID: mapování tokenů na celá čísla pomocí slovníku
    • Padding: přidání tokenů pro jednotnou délku
Multi-Modal Models with Hugging Face

Předzpracování textu

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]]), ...}
Multi-Modal Models with Hugging Face

Předzpracování obrázků

  • Normalizace: úprava intenzity pixelů
  • Změna velikosti: přizpůsobení vstupní vrstvě modelu
  • Obecné pravidlo → použijte předzpracování původního modelu

Skupina lidí skákající před a po předzpracování obrázku

1 https://huggingface.co/datasets/nlphuji/flickr30k
Multi-Modal Models with Hugging Face

Předzpracování obrázků

Multimodální úlohy vyžadují konzistentní předzpracování:

from transformers import BlipProcessor, BlipForConditionalGeneration

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

Kódování obrázku → převod na textové kódování → dekódování textu

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'}]
Multi-Modal Models with Hugging Face

Předzpracování zvuku

Zvukové spektrum

  • Předzpracování zvuku:
    • Sekvenční pole → filtrování/padding
    • Vzorkovací frekvence → převzorkování

Extrakce příznaků jako vstup modelu (spektrogram)

spektrogram

Multi-Modal Models with Hugging Face

Předzpracování zvuku

from datasets import load_dataset, Audio

dataset = load_dataset("CSTR-Edinburgh/vctk")["train"] dataset = dataset.cast_column("audio", Audio(sampling_rate=16_000))
  • Měly by být dostupné kompletní preprocessory specifické pro model:
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")
  • Vzorkovací frekvence musí odpovídat požadavkům vstupu modelu
1 https://huggingface.co/datasets/CSTR-Edinburgh/vctk
Multi-Modal Models with Hugging Face

Pojďme si procvičit!

Multi-Modal Models with Hugging Face

Preparing Video For Download...