torilove11's picture
Upload folder using huggingface_hub
f160af2 verified
Raw
History Blame Contribute Delete
1.74 kB
from datasets import load_dataset
from transformers import ViTImageProcessor
from src.config import model_name, dataset_name
from torchvision.transforms import (
Compose, RandomResizedCrop, RandomHorizontalFlip,
ToTensor, Normalize, Resize, CenterCrop,
RandomRotation, ColorJitter
)
def make_dataset():
ds = load_dataset("maurice-fp/stanford-dogs")
processor = ViTImageProcessor.from_pretrained(model_name)
normalize = Normalize(mean=processor.image_mean, std=processor.image_std)
# 학습용 transform 정의 (데이터 증강)
_train_transforms = Compose([
RandomResizedCrop(224, scale=(0.5, 1.0)), # 이미지를 랜덤하게 자르고 224로 맞춤
RandomHorizontalFlip(), # 50% 확률로 좌우 반전
RandomRotation(degrees=15), # 고개 기울임
ColorJitter(brightness=0.2, contrast=0.2, saturation=0.2), # 조명/털색
ToTensor(),
normalize,
])
# 검증용 transform 정의 (증강 X)
_val_transforms = Compose([
Resize(256),
CenterCrop(224),
ToTensor(),
normalize,
])
def train_transforms(examples):
examples['pixel_values'] = [
_train_transforms(image.convert("RGB")) for image in examples['image']
]
return examples
def val_transforms(examples):
examples['pixel_values'] = [
_val_transforms(image.convert("RGB")) for image in examples['image']
]
return examples
ds['train'].set_transform(train_transforms)
ds['test'].set_transform(val_transforms)
train_ds = ds['train']
val_ds = ds['test']
labels = ds['train'].features['label'].names
return train_ds, val_ds, labels, processor