Spaces:
Sleeping
Sleeping
| 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) | |