Ajuster des modèles de vision par apprentissage par transfert

Modèles multimodaux avec Hugging Face

James Chapman

Curriculum Manager, DataCamp

Objectif de l'ajustement des modèles de vision

 

  • Nouvelles classes, p. ex. classification binaire d'images réelles ou générées par l'IA
  • Nouveaux domaines d'imagerie, p. ex. radiographies

Image générale utilisée pour le pré-entraînement : un phoque

Exemple d'image générée par l'IA

1 https://image-net.org/index.php
Modèles multimodaux avec Hugging Face

Ajustement de modèles de vision

Exemple d'image générée par l'IA

 

  1. Adapter la sortie du modèle aux nouvelles prédictions
  2. Préparer le jeu de données pour l'entraînement
  3. Configurer les options d'entraînement
  4. Entraîner !
Modèles multimodaux avec Hugging Face

Mises à jour du modèle

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
Modèles multimodaux avec Hugging Face

Mises à jour du modèle

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
)
Modèles multimodaux avec Hugging Face

Préparation du jeu de données

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)
Modèles multimodaux avec Hugging Face

Visualiser les données transformées

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

Image transformée du nouveau jeu de données

Modèles multimodaux avec Hugging Face

Entraînement

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
)
Modèles multimodaux avec Hugging Face

Évaluation

predictions = trainer.predict(dataset["test"])
predictions.metrics["test_accuracy"]
0.455
trainer.train()
{..., 'eval_accuracy': 0.93, ...}
Modèles multimodaux avec Hugging Face

Passons à la pratique !

Modèles multimodaux avec Hugging Face

Preparing Video For Download...