Spaces:
Running on Zero
Running on Zero
| from tqdm import tqdm | |
| import os | |
| import objaverse | |
| import random | |
| import numpy as np | |
| def get_rendered_objaverse_list_v0(data_dir, target_name, exr, **kargs): | |
| "This function is to fast obtain unfinined objaverse rendering images" | |
| image_list_cache_path = kargs["image_list_cache_path"] | |
| if os.path.exists(image_list_cache_path): | |
| return np.load(image_list_cache_path)["image_list"].tolist() | |
| random.seed(7564) | |
| uids = objaverse.load_uids() | |
| random.shuffle(uids) | |
| obj_starts = kargs["obj_starts"] | |
| obj_ends = kargs["obj_ends"] | |
| num_envs = kargs["num_envs"] | |
| num_imgs = kargs["num_imgs"] | |
| selected_uids = [] | |
| for _start, _end in zip(obj_starts, obj_ends): | |
| selected_uids += uids[_start:_end] | |
| all_imgs = [] | |
| envpaths_all = os.listdir(os.path.join(data_dir, selected_uids[0])) | |
| envpaths_raw = [_env for _env in envpaths_all if not ".txt" in _env] | |
| for _uid in tqdm(selected_uids): | |
| random.shuffle(envpaths_raw) | |
| envpaths = envpaths_raw[:num_envs] | |
| if not os.path.exists(os.path.join(data_dir, _uid)): | |
| print(f"WARNING NONE EXIST OBJECT {os.path.join(data_dir, _uid)}") | |
| continue | |
| for _env in envpaths: | |
| if not os.path.exists(os.path.join(data_dir, _uid, _env)): | |
| print(f"WARNING NONE EXIST ENV {os.path.join(data_dir, _uid, _env)}") | |
| continue | |
| img_ids = list(range(int(len(os.listdir(os.path.join(data_dir, _uid, _env))) // 7))) | |
| random.shuffle(img_ids) | |
| img_ids = img_ids[:num_imgs] | |
| for _img_ids in img_ids: | |
| if not os.path.exists(os.path.join(data_dir, _uid, _env, f"{_img_ids}-{target_name}0001.{exr}")): | |
| print(f"WARNING NONE EXIST IMAGE {os.path.join(data_dir, _uid, _env, f'{_img_ids}-{target_name}0001.{exr}')}") | |
| continue | |
| all_imgs += [os.path.join(data_dir, _uid, _env, f"{_img_ids}-{target_name}0001.{exr}")] | |
| np.savez(image_list_cache_path, image_list=all_imgs) | |
| return all_imgs | |
| if __name__ == "__main__": | |
| all_imgs = get_rendered_objaverse_list_v0("/home/chenxi/code/material-diffusion/data/objaverse_rendering/samll-dataset", "albedo", "png", | |
| obj_starts=[20], obj_ends=[80], num_envs=100, num_imgs=1) | |
| print(len(all_imgs), all_imgs[:10]) | |
| for img in all_imgs[:10]: | |
| print(img, os.path.exists(img)) |