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)) |