Ajustarea fină a modelelor de viziune computerizată

Modele Multi-Modale cu Hugging Face

James Chapman

Curriculum Manager, DataCamp

Scopul ajustării fine a modelelor de viziune

 

  • Clase noi, de ex., clasificare binară a imaginilor reale sau generate de IA
  • Domenii de imagistică noi, de ex., radiografii

Imagine generală folosită la pre-antrenare, reprezentând o focă

Exemplu de imagine generată de IA

1 https://image-net.org/index.php
Modele Multi-Modale cu Hugging Face

Ajustarea fină a modelelor de viziune

Exemplu de imagine generată de IA

 

  1. Ajustarea ieșirii modelului pentru noile predicții
  2. Pregătirea setului de date pentru antrenare
  3. Configurarea opțiunilor de antrenare
  4. Antrenare!
Modele Multi-Modale cu Hugging Face

Actualizări ale modelului

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
Modele Multi-Modale cu Hugging Face

Actualizări ale modelului

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
)
Modele Multi-Modale cu Hugging Face

Pregătirea setului de date

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)
Modele Multi-Modale cu Hugging Face

Vizualizarea datelor transformate

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

Imagine transformată din noul set de date

Modele Multi-Modale cu Hugging Face

Antrenare

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
)
Modele Multi-Modale cu Hugging Face

Evaluare

predictions = trainer.predict(dataset["test"])
predictions.metrics["test_accuracy"]
0.455
trainer.train()
{..., 'eval_accuracy': 0.93, ...}
Modele Multi-Modale cu Hugging Face

Să exersăm!

Modele Multi-Modale cu Hugging Face

Preparing Video For Download...