Тонке налаштування моделей комп'ютерного зору

Багатомодальні моделі з Hugging Face

James Chapman

Curriculum Manager, DataCamp

Призначення тонкого налаштування моделей зору

 

  • Нові класи, напр., бінарна класифікація реальних чи згенерованих ШІ зображень
  • Нові домени зображень, напр., рентгенівські знімки

Загальне зображення для попереднього навчання тюленя

Приклад зображення, згенерованого ШІ

1 https://image-net.org/index.php
Багатомодальні моделі з Hugging Face

Тонке налаштування моделей зору

Приклад зображення, згенерованого ШІ

 

  1. Підлаштуйте вихід моделі під нові передбачення
  2. Підготуйте набір даних для навчання
  3. Налаштуйте параметри навчання
  4. Навчайте!
Багатомодальні моделі з Hugging Face

Оновлення моделі

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
Багатомодальні моделі з Hugging Face

Оновлення моделі

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
)
Багатомодальні моделі з Hugging Face

Підготовка набору даних

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)
Багатомодальні моделі з Hugging Face

Візуалізація трансформованих даних

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

Трансформоване зображення з нового набору даних

Багатомодальні моделі з Hugging Face

Навчання

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
)
Багатомодальні моделі з Hugging Face

Оцінювання

predictions = trainer.predict(dataset["test"])
predictions.metrics["test_accuracy"]
0.455
trainer.train()
{..., 'eval_accuracy': 0.93, ...}
Багатомодальні моделі з Hugging Face

Давайте потренуємось!

Багатомодальні моделі з Hugging Face

Preparing Video For Download...