| import os | |
| import json | |
| import argparse | |
| import math | |
| def main(args): | |
| left_sam_images = [] | |
| for dir_name in os.listdir(args.sa1b_path): | |
| if dir_name[:3] != 'sa_': | |
| continue | |
| for file in os.listdir(os.path.join(args.sa1b_path, dir_name)): | |
| if not file.endswith('jpg'): | |
| continue | |
| file_name = file.split('.')[0] | |
| if not os.path.exists(os.path.join(args.sa1b_path, dir_name, file_name+'.json')): | |
| continue | |
| if os.path.exists(os.path.join(args.work_dir, dir_name, file_name+'.json')): | |
| continue | |
| left_sam_images.append(os.path.join(args.sa1b_path, dir_name, file)) | |
| if not os.path.exists(args.task_file_path): | |
| os.makedirs(args.task_file_path) | |
| mini_batch = math.ceil(len(left_sam_images) / args.num_splits) | |
| for ii in range(args.num_splits): | |
| with open(os.path.join(args.task_file_path, f"rank{ii}.json"), mode='w') as savef: | |
| savef.write(json.dumps(left_sam_images[ii*mini_batch:(ii+1)*mini_batch])) | |
| if __name__ == "__main__": | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument("--num_splits", type=int, default=8) | |
| parser.add_argument("--sa1b_path", type=str, default="./data/sam/") | |
| parser.add_argument("--work_dir", type=str, default="./work_dirs/object_level") | |
| parser.add_argument("--task_file_path", type=str, default="./work_dirs/object_level_task") | |
| args = parser.parse_args() | |
| main(args) |