컴퓨터 비전 모델 미세 조정

Hugging Face로 배우는 멀티모달 모델

James Chapman

Curriculum Manager, DataCamp

비전 모델 미세 조정의 목적

 

  • 새로운 클래스, 예: 실제 vs AI 생성 이미지 이진 분류
  • 새로운 영상 도메인, 예: X-ray

사전학습에 사용된 물개 일반 이미지

AI 생성 이미지 예시

1 https://image-net.org/index.php
Hugging Face로 배우는 멀티모달 모델

비전 모델 미세 조정

AI 생성 이미지 예시

 

  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...