Spaces:
Configuration error
Configuration error
Download img_processing.py from erwann/Face-editor: direct link, hf CLI and curl.
- Browser
- Download file 1.27 kB
-
https://huggingface.co/spaces/erwann/Face-editor/resolve/main/img_processing.py
- Command line
-
hf download hf://spaces/erwann/Face-editor/img_processing.py
-
curl -L -o img_processing.py https://huggingface.co/spaces/erwann/Face-editor/resolve/main/img_processing.py
1.27 kB
| import io | |
| import numpy as np | |
| import PIL | |
| import requests | |
| import torch | |
| import torchvision.transforms as T | |
| import torchvision.transforms.functional as TF | |
| from PIL import Image, ImageDraw, ImageFont | |
| def preprocess(img, target_image_size=256): | |
| s = min(img.size) | |
| if s < target_image_size: | |
| raise ValueError(f"min dim for image {s} < {target_image_size}") | |
| r = target_image_size / s | |
| s = (round(r * img.size[1]), round(r * img.size[0])) | |
| img = TF.resize(img, s, interpolation=PIL.Image.LANCZOS) | |
| img = TF.center_crop(img, output_size=2 * [target_image_size]) | |
| img = torch.unsqueeze(T.ToTensor()(img), 0) | |
| return img | |
| def preprocess_vqgan(x): | |
| x = 2.0 * x - 1.0 | |
| return x | |
| def custom_to_pil(x, process=True, mode="RGB"): | |
| x = x.detach().cpu() | |
| if process: | |
| x = torch.clamp(x, -1.0, 1.0) | |
| x = (x + 1.0) / 2.0 | |
| x = x.permute(1, 2, 0).numpy() | |
| if process: | |
| x = (255 * x).astype(np.uint8) | |
| x = Image.fromarray(x) | |
| if not x.mode == mode: | |
| x = x.convert(mode) | |
| return x | |
| def get_pil(x): | |
| x = torch.clamp(x, -1.0, 1.0) | |
| x = (x + 1.0) / 2.0 | |
| x = x.permute(1, 2, 0) | |
| return x | |
| def loop_post_process(x): | |
| x = get_pil(x.squeeze()) | |
| return x.permute(2, 0, 1).unsqueeze(0) | |