Download code/studiogan/src/utils/hdf5.py from JerMa88/rtm-latent-refinement-cifar10-unknownparams: direct link, hf CLI and curl.
- Browser
- Download file 4.74 kB
-
https://huggingface.co/JerMa88/rtm-latent-refinement-cifar10-unknownparams/resolve/main/code/studiogan/src/utils/hdf5.py
- Command line
-
hf download hf://JerMa88/rtm-latent-refinement-cifar10-unknownparams/code/studiogan/src/utils/hdf5.py
-
curl -L -o hdf5.py https://huggingface.co/JerMa88/rtm-latent-refinement-cifar10-unknownparams/resolve/main/code/studiogan/src/utils/hdf5.py
4.74 kB
| """ | |
| this code is borrowed from https://github.com/ajbrock/BigGAN-PyTorch | |
| MIT License | |
| Copyright (c) 2019 Andy Brock | |
| Permission is hereby granted, free of charge, to any person obtaining a copy | |
| of this software and associated documentation files (the "Software"), to deal | |
| in the Software without restriction, including without limitation the rights | |
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| copies of the Software, and to permit persons to whom the Software is | |
| furnished to do so, subject to the following conditions: | |
| The above copyright notice and this permission notice shall be included in all | |
| copies or substantial portions of the Software. | |
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |
| SOFTWARE. | |
| """ | |
| from os.path import dirname, exists, join, isfile | |
| import os | |
| from torch.utils.data import DataLoader | |
| from tqdm import tqdm | |
| import numpy as np | |
| import h5py as h5 | |
| from data_util import Dataset_ | |
| def make_hdf5(name, img_size, crop_long_edge, resize_size, data_dir, resizer, DATA, RUN): | |
| if resize_size is not None: | |
| file_name = "{dataset_name}_{size}_{resizer}_train.hdf5".format(dataset_name=name, size=img_size, resizer=resizer) | |
| else: | |
| file_name = "{dataset_name}_{size}_train.hdf5".format(dataset_name=name, size=img_size) | |
| file_path = join(data_dir, file_name) | |
| hdf5_dir = dirname(file_path) | |
| if not exists(hdf5_dir): | |
| os.makedirs(hdf5_dir) | |
| if os.path.isfile(file_path): | |
| print("{file_name} exist!\nThe file are located in the {file_path}.".format(file_name=file_name, | |
| file_path=file_path)) | |
| else: | |
| dataset = Dataset_(data_name=DATA.name, | |
| data_dir=RUN.data_dir, | |
| train=True, | |
| crop_long_edge=crop_long_edge, | |
| resize_size=resize_size, | |
| resizer=resizer, | |
| random_flip=False, | |
| normalize=False, | |
| hdf5_path=None, | |
| load_data_in_memory=False) | |
| dataloader = DataLoader(dataset, | |
| batch_size=500, | |
| shuffle=False, | |
| pin_memory=False, | |
| num_workers=RUN.num_workers, | |
| drop_last=False) | |
| print("Start to load {name} into an HDF5 file with chunk size 500.".format(name=name)) | |
| for i, (x, y) in enumerate(tqdm(dataloader)): | |
| x = np.transpose(x.numpy(), (0, 2, 3, 1)) | |
| y = y.numpy() | |
| if i == 0: | |
| with h5.File(file_path, "w") as f: | |
| print("Produce dataset of len {num_dataset}".format(num_dataset=len(dataset))) | |
| imgs_dset = f.create_dataset("imgs", | |
| x.shape, | |
| dtype="uint8", | |
| maxshape=(len(dataset), img_size, img_size, 3), | |
| chunks=(500, img_size, img_size, 3), | |
| compression=False) | |
| print("Image chunks chosen as {chunk}".format(chunk=str(imgs_dset.chunks))) | |
| imgs_dset[...] = x | |
| labels_dset = f.create_dataset("labels", | |
| y.shape, | |
| dtype="int64", | |
| maxshape=(len(dataloader.dataset), ), | |
| chunks=(500, ), | |
| compression=False) | |
| print("Label chunks chosen as {chunk}".format(chunk=str(labels_dset.chunks))) | |
| labels_dset[...] = y | |
| else: | |
| with h5.File(file_path, "a") as f: | |
| f["imgs"].resize(f["imgs"].shape[0] + x.shape[0], axis=0) | |
| f["imgs"][-x.shape[0]:] = x | |
| f["labels"].resize(f["labels"].shape[0] + y.shape[0], axis=0) | |
| f["labels"][-y.shape[0]:] = y | |
| return file_path, False, None | |