Messa a punto di modelli di computer vision

Modelli multi-modali con Hugging Face

James Chapman

Curriculum Manager, DataCamp

Perché fare fine-tuning dei modelli di visione

 

  • Nuove classi, es. classificazione binaria tra reale o generata dall’IA
  • Nuovi domini di imaging, es. radiografie

Immagine generale usata per il pretraining di una foca

Esempio di immagine generata dall’IA

1 https://image-net.org/index.php
Modelli multi-modali con Hugging Face

Fine-tuning di modelli di visione

Esempio di immagine generata dall’IA

 

  1. Adatta l’output del modello alle nuove predizioni
  2. Prepara il dataset per il training
  3. Configura le opzioni di training
  4. Allena!
Modelli multi-modali con Hugging Face

Aggiornamenti del modello

from datasets import load_dataset
dataset = load_dataset("ideepankarsharma2003/Midjourney_v6_Classification_small_shuf
fled")['train']

data_splits = dataset.train_test_split(test_size=0.2, seed=42)
labels = data_splits["train"].features["label"].names
label2id, id2label = dict(), dict() for i, label in enumerate(labels): label2id[label] = str(i) id2label[str(i)] = label
Modelli multi-modali con Hugging Face

Aggiornamenti del modello

from transformers import AutoModelForImageClassification
checkpoint = "google/mobilenet_v2_1.0_224"
model = AutoModelForImageClassification.from_pretrained(
    checkpoint,
    num_labels=len(labels),

id2label=id2label, label2id=label2id,
ignore_mismatched_sizes=True
)
Modelli multi-modali con Hugging Face

Preparazione del dataset

from transformers import AutoImageProcessor
image_processor = AutoImageProcessor.from_pretrained(checkpoint)


from torchvision.transforms import Compose, Normalize, ToTensor
normalize = Normalize(mean=image_processor.image_mean, std=image_processor.image_std)
transform = Compose([ToTensor(), normalize])
def transforms(examples): examples["pixel_values"] = [transform(img.convert("RGB")) for img in examples["image"]] del examples["image"] return examples
dataset = dataset.with_transform(transforms)
Modelli multi-modali con Hugging Face

Visualizzare i dati trasformati

import matplotlib.pyplot as plt
plt.imshow(dataset["train"][0]["pixel_values"].permute(1, 2, 0))
plt.show()

Immagine trasformata dal nuovo dataset

Modelli multi-modali con Hugging Face

Training

from transformers import TrainingArguments

training_args = TrainingArguments(
    output_dir="dataset_finetune",

learning_rate=6e-5,
gradient_accumulation_steps=4,
num_train_epochs=3,
push_to_hub=False )
from transformers import Trainer,
    DefaultDataCollator

data_collator = DefaultDataCollator()

trainer = Trainer(

model=model,
args=training_args,
train_dataset=dataset["train"], eval_dataset=dataset["test"],
processing_class=image_processor,
data_collator=data_collator
)
Modelli multi-modali con Hugging Face

Valutazione

predictions = trainer.predict(dataset["test"])
predictions.metrics["test_accuracy"]
0.455
trainer.train()
{..., 'eval_accuracy': 0.93, ...}
Modelli multi-modali con Hugging Face

Passons à la pratique !

Modelli multi-modali con Hugging Face

Preparing Video For Download...