Dostrajanie modeli wizji komputerowej

Modele multimodalne z Hugging Face

James Chapman

Curriculum Manager, DataCamp

Cel dostrajania modeli wizji

 

  • Nowe klasy, np. binarna klasyfikacja obrazów rzeczywistych lub generowanych przez AI
  • Nowe dziedziny obrazowania, np. zdjęcia rentgenowskie

Ogólny obraz użyty do wstępnego trenowania – foka

Przykład obrazu wygenerowanego przez AI

1 https://image-net.org/index.php
Modele multimodalne z Hugging Face

Dostrajanie modeli wizji

Przykład obrazu wygenerowanego przez AI

 

  1. Dostosowanie wyjścia modelu do nowych predykcji
  2. Przygotowanie zbioru danych do trenowania
  3. Konfiguracja opcji trenowania
  4. Trenowanie!
Modele multimodalne z Hugging Face

Aktualizacja modelu

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 multimodalne z Hugging Face

Aktualizacja modelu

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 multimodalne z Hugging Face

Przygotowanie zbioru danych

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 multimodalne z Hugging Face

Wizualizacja przekształconych danych

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

Przekształcony obraz z nowego zbioru danych

Modele multimodalne z Hugging Face

Trenowanie

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 multimodalne z Hugging Face

Ewaluacja

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

Czas na ćwiczenia!

Modele multimodalne z Hugging Face

Preparing Video For Download...