archstyle55-backend / app /ml /preprocess.py
kkkaredaw's picture
deploy: backend bundle
a9db693 verified
Raw
History Blame Contribute Delete
891 Bytes
from __future__ import annotations
import torch
from PIL import Image
from torchvision import transforms as T
IMAGENET_MEAN = (0.485, 0.456, 0.406)
IMAGENET_STD = (0.229, 0.224, 0.225)
def imagenet_eval_transform(image_size: int) -> T.Compose:
crop = image_size
resize = int(image_size * 1.14)
return T.Compose([
T.Resize(resize, interpolation=T.InterpolationMode.BICUBIC),
T.CenterCrop(crop),
T.ToTensor(),
T.Normalize(IMAGENET_MEAN, IMAGENET_STD),
])
def to_tensor_batch(img: Image.Image, image_size: int) -> torch.Tensor:
t = imagenet_eval_transform(image_size)
return t(img).unsqueeze(0)
def imagenet_denormalize(t: torch.Tensor) -> torch.Tensor:
mean = torch.tensor(IMAGENET_MEAN).view(1, 3, 1, 1).to(t.device)
std = torch.tensor(IMAGENET_STD).view(1, 3, 1, 1).to(t.device)
return (t * std + mean).clamp(0, 1)