|
|
|
import os |
|
import torch |
|
import torchvision.transforms as transforms |
|
|
|
class Config: |
|
"""Configuration class for the Jewelry Recommender System.""" |
|
|
|
|
|
VECTOR_DIMENSION = 1280 |
|
INDEX_PATH = "models/jewelry_index.idx" |
|
METADATA_PATH = "models/jewelry_metadata.pkl" |
|
|
|
|
|
DEVICE = torch.device("cuda" if torch.cuda.is_available() else "cpu") |
|
|
|
|
|
IMAGE_SIZE = (640, 640) |
|
NORMALIZATION_MEAN = [0.485, 0.456, 0.406] |
|
NORMALIZATION_STD = [0.229, 0.224, 0.225] |
|
|
|
|
|
DEFAULT_NUM_RECOMMENDATIONS = 5 |
|
MAX_RECOMMENDATIONS = 20 |
|
|
|
@classmethod |
|
def get_image_transform(cls): |
|
"""Returns the image transformation pipeline.""" |
|
from PIL import ImageOps |
|
return transforms.Compose([ |
|
transforms.Lambda(lambda img: ImageOps.exif_transpose(img)), |
|
transforms.Resize(cls.IMAGE_SIZE), |
|
transforms.ToTensor(), |
|
transforms.Normalize( |
|
mean=cls.NORMALIZATION_MEAN, |
|
std=cls.NORMALIZATION_STD |
|
) |
|
]) |