Tinh chỉnh mô hình thị giác máy tính

Mô hình đa phương thức với Hugging Face

James Chapman

Curriculum Manager, DataCamp

Mục đích tinh chỉnh mô hình thị giác

 

  • Lớp mới, ví dụ phân loại nhị phân ảnh thật hay do AI tạo
  • Miền ảnh mới, ví dụ X-quang

Ảnh tổng quát dùng để tiền huấn luyện: một con hải cẩu

Ví dụ ảnh do AI tạo

1 https://image-net.org/index.php
Mô hình đa phương thức với Hugging Face

Tinh chỉnh mô hình thị giác

Ví dụ ảnh do AI tạo

 

  1. Điều chỉnh đầu ra mô hình cho dự đoán mới
  2. Chuẩn bị tập dữ liệu để huấn luyện
  3. Cấu hình tùy chọn huấn luyện
  4. Bắt đầu huấn luyện!
Mô hình đa phương thức với Hugging Face

Cập nhật mô hình

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
Mô hình đa phương thức với Hugging Face

Cập nhật mô hình

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
)
Mô hình đa phương thức với Hugging Face

Chuẩn bị dữ liệu

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)
Mô hình đa phương thức với Hugging Face

Vẽ dữ liệu đã biến đổi

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

Ảnh đã biến đổi từ tập dữ liệu mới

Mô hình đa phương thức với Hugging Face

Huấn luyện

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
)
Mô hình đa phương thức với Hugging Face

Đánh giá

predictions = trainer.predict(dataset["test"])
predictions.metrics["test_accuracy"]
0.455
trainer.train()
{..., 'eval_accuracy': 0.93, ...}
Mô hình đa phương thức với Hugging Face

Ayo berlatih!

Mô hình đa phương thức với Hugging Face

Preparing Video For Download...