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