Preprocessare diverse modalità

Modelli multi-modali con Hugging Face

James Chapman

Curriculum Manager, DataCamp

Preprocessare testo

Una stringa di testo di esempio.

  • Tokenizer: mappa testo → input del modello
Modelli multi-modali con Hugging Face

Preprocessare testo

Diagramma di flusso del preprocessing del testo fino alla normalizzazione

  • Tokenizer: mappa testo → input del modello
    • Normalizzazione: minuscole, rimozione caratteri speciali, rimozione spazi extra
Modelli multi-modali con Hugging Face

Preprocessare testo

Continuazione del diagramma di flusso fino alla tokenizzazione

  • Tokenizer: mappa testo → input del modello
    • Normalizzazione: minuscole, rimozione caratteri speciali, rimozione spazi extra
    • (Pre-)tokenizzazione: divisione in parole/sottoparole
Modelli multi-modali con Hugging Face

Preprocessare testo

Continuazione del diagramma di flusso fino a conversione ID e padding

  • Tokenizer: mappa testo → input del modello
    • Normalizzazione: minuscole, rimozione caratteri speciali, spazi
    • (Pre-)tokenizzazione: divisione in parole/sottoparole
    • Conversione ID: mappa token a interi usando un vocabolario
Modelli multi-modali con Hugging Face

Preprocessare testo

preprocessing_text5.jpg

  • Tokenizer: mappa testo → input del modello
    • Normalizzazione: minuscole, rimozione caratteri speciali, spazi
    • (Pre-)tokenizzazione: divisione in parole/sottoparole
    • Conversione ID: mappa token a interi usando un vocabolario
    • Padding: aggiunge token per lunghezza uniforme
Modelli multi-modali con Hugging Face

Preprocessare testo

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]]), ...}
Modelli multi-modali con Hugging Face

Preprocessare immagini

  • Normalizzazione: aggiornamento intensità pixel
  • Resize: adatta all’input del modello
  • Regola generale → usa il preprocessing del modello originale

immagini di un gruppo di persone che salta prima e dopo il preprocessing

1 https://huggingface.co/datasets/nlphuji/flickr30k
Modelli multi-modali con Hugging Face

Preprocessare immagini

I task multimodali richiedono preprocessamento coerente:

from transformers import BlipProcessor, BlipForConditionalGeneration

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

Codifica immagine → trasforma in encoding testo → decodifica testo

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'}]
Modelli multi-modali con Hugging Face

Preprocessare audio

Spettro audio

  • Preprocessamento audio:
    • Array sequenziale → filtro/padding
    • Frequenza di campionamento → ricampionamento

Estrazione di feature come input del modello (spettrogramma)

spettro

Modelli multi-modali con Hugging Face

Preprocessare audio

from datasets import load_dataset, Audio

dataset = load_dataset("CSTR-Edinburgh/vctk")["train"] dataset = dataset.cast_column("audio", Audio(sampling_rate=16_000))
  • Preprocessori completi specifici del modello dovrebbero essere disponibili:
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")
  • La frequenza di campionamento deve rispettare i requisiti del modello
1 https://huggingface.co/datasets/CSTR-Edinburgh/vctk
Modelli multi-modali con Hugging Face

Passiamo alla pratica !

Modelli multi-modali con Hugging Face

Preparing Video For Download...