Spaces:
Paused
Paused
Download evaluations/cleanfid/utils.py from NguyenDinhHieu/EquiFashion: direct link, hf CLI and curl.
- Browser
- Download file 2.06 kB
-
https://huggingface.co/spaces/NguyenDinhHieu/EquiFashion/resolve/d784b76952cc7c7fec84c19efb649c1ce62a0ae1/evaluations/cleanfid/utils.py
- Command line
-
hf download hf://spaces/NguyenDinhHieu/EquiFashion@d784b76952cc7c7fec84c19efb649c1ce62a0ae1/evaluations/cleanfid/utils.py
-
curl -L -o utils.py https://huggingface.co/spaces/NguyenDinhHieu/EquiFashion/resolve/d784b76952cc7c7fec84c19efb649c1ce62a0ae1/evaluations/cleanfid/utils.py
2.06 kB
| import numpy as np | |
| import torch | |
| import torchvision | |
| from PIL import Image | |
| from cleanfid.resize import build_resizer | |
| import zipfile | |
| class ResizeDataset(torch.utils.data.Dataset): | |
| """ | |
| A placeholder Dataset that enables parallelizing the resize operation | |
| using multiple CPU cores | |
| files: list of all files in the folder | |
| fn_resize: function that takes an np_array as input [0,255] | |
| """ | |
| def __init__(self, files, mode, size=(299, 299), fdir=None): | |
| self.files = files | |
| self.fdir = fdir | |
| self.transforms = torchvision.transforms.ToTensor() | |
| self.size = size | |
| self.fn_resize = build_resizer(mode) | |
| self.custom_image_tranform = lambda x: x | |
| self._zipfile = None | |
| def _get_zipfile(self): | |
| assert self.fdir is not None and '.zip' in self.fdir | |
| if self._zipfile is None: | |
| self._zipfile = zipfile.ZipFile(self.fdir) | |
| return self._zipfile | |
| def __len__(self): | |
| return len(self.files) | |
| def __getitem__(self, i): | |
| path = str(self.files[i]) | |
| if self.fdir is not None and '.zip' in self.fdir: | |
| with self._get_zipfile().open(path, 'r') as f: | |
| img_np = np.array(Image.open(f).convert('RGB')) | |
| elif ".npy" in path: | |
| img_np = np.load(path) | |
| else: | |
| img_pil = Image.open(path).convert('RGB') | |
| img_np = np.array(img_pil) | |
| # apply a custom image transform before resizing the image to 299x299 | |
| img_np = self.custom_image_tranform(img_np) | |
| # fn_resize expects a np array and returns a np array | |
| img_resized = self.fn_resize(img_np) | |
| # ToTensor() converts to [0,1] only if input in uint8 | |
| if img_resized.dtype == "uint8": | |
| img_t = self.transforms(np.array(img_resized))*255 | |
| elif img_resized.dtype == "float32": | |
| img_t = self.transforms(img_resized) | |
| return img_t | |
| EXTENSIONS = {'bmp', 'jpg', 'jpeg', 'pgm', 'png', 'ppm', | |
| 'tif', 'tiff', 'webp', 'npy', 'JPEG', 'JPG', 'PNG'} |