Spaces:
Runtime error
Runtime error
| # filter zero123 generated views from objaverse, filter out invalid images that are pure white | |
| import os | |
| import glob | |
| import numpy as np | |
| from tqdm import tqdm | |
| import matplotlib.pyplot as plt | |
| import shutil | |
| import argparse | |
| def filter_zero123_views(path): | |
| invalid_ids = [] | |
| objects = os.listdir(path) | |
| for obj in tqdm(objects): | |
| views = glob.glob(os.path.join(path, obj, '*.png')) | |
| # check if the number of views is 12 | |
| if len(views) != 12: | |
| invalid_ids.append(obj) | |
| print(obj, 'empty') | |
| continue | |
| # read image and check if it is pure white | |
| invalid = 0 | |
| for view in views: | |
| img = plt.imread(view) | |
| if np.all(img[:, :, -1] == 0.): | |
| invalid += 1 | |
| if invalid >= 3: | |
| invalid_ids.append(obj) | |
| print(obj, 'invalid') | |
| return invalid_ids | |
| def move_invalid_views(path, invalid_ids, invalid_path): | |
| for obj_id in tqdm(invalid_ids): | |
| # if exist, remove | |
| if os.path.exists(os.path.join(path, obj_id)): | |
| # move folder to invalid folder | |
| shutil.move(os.path.join(path, obj_id), os.path.join(invalid_path, obj_id)) | |
| if __name__ == '__main__': | |
| parser = argparse.ArgumentParser(description="Filter & Move Zero-1-to-3 Objaverse Rendering Data.") | |
| parser.add_argument( | |
| "--path", | |
| type=str, | |
| default="/data/objaverse/views_release", | |
| required=True, | |
| help="Path to Zero-1-to-3 Objaverse views_release Rendering Data.", | |
| ) | |
| args = parser.parse_args() | |
| path = args.path | |
| # # filter invalid views | |
| # invalid_ids = filter_zero123_views(path) | |
| # # save invalid ids | |
| # np.save('invalid_ids.npy', invalid_ids) | |
| # # print(invalid_ids) | |
| # print("Total invalid len ", len(invalid_ids)) | |
| # move invalid views | |
| invalid_ids = np.load('all_invalid.npy') | |
| invalid_path = os.path.join(path, '../invalid') | |
| os.makedirs(invalid_path, exist_ok=True) | |
| move_invalid_views(path, invalid_ids, invalid_path) |