| import json |
| from natsort import natsorted |
| import os |
|
|
| json_path = "/work/yuqian_fu/Ego/data_segswap/egoexo_val_framelevel_newprompt_all_instruction.json" |
| data_path = "/work/yuqian_fu/Ego/data_segswap" |
| split_path = "/home/yuqian_fu/Projects/ego-exo4d-relation/correspondence/split.json" |
| with open(json_path, "r") as fp: |
| datas = json.load(fp) |
| with open(split_path, "r") as fp: |
| split = json.load(fp) |
| takes = split["val"] |
|
|
| datas_final_save = [] |
| for take in takes: |
| datas_tmp = [] |
| gt_path = f"{data_path}/{take}/annotation.json" |
| with open(gt_path, 'r') as fp: |
| gt = json.load(fp) |
| |
| objs = natsorted(list(gt["masks"].keys())) |
| coco_id_to_cont_id = {cont_id + 1: coco_id for cont_id, coco_id in enumerate(objs)} |
| |
|
|
| for data in datas: |
| if data["video_name"] == take: |
| datas_tmp.append(data) |
| |
| if len(datas_tmp) == 0: |
| print("No data found for take:", take) |
| continue |
| |
| for data in datas_tmp: |
| annos = data["first_frame_anns"] |
| annos_new = [] |
| for anno in annos: |
| category_id = anno["category_id"] |
| obj_name = coco_id_to_cont_id[category_id] |
| anno["text"] = obj_name |
| annos_new.append(anno) |
| data["first_frame_anns"] = annos_new |
| del data["instruction"] |
| datas_final_save.append(data) |
|
|
|
|
|
|
|
|
|
|
| print("datas_final_save:", len(datas_final_save)) |
| save_path = "/work/yuqian_fu/Ego/data_segswap/egoexo_val_framelevel_newprompt_all_objname.json" |
| with open(save_path, "w") as fp: |
| json.dump(datas_final_save, fp) |
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
| |
| |
| |
| |
| |
| |
|
|
|
|
| |
| |
|
|
| |
| |
|
|
| |
| |
|
|
| |
| |
| |
|
|
|
|
| |
| |