ObjectRelator-Original / datasets /build_ref_ego_objname_asinstruct.py
YuqianFu's picture
Upload folder using huggingface_hub
625a17f verified
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)
# path = "/home/yuqian_fu/Projects/ego-exo4d-relation/correspondence/split.json"
# with open(path, "r") as fp:
# data = json.load(fp)
# takes = data["test"]
# print("takes:", len(takes))
# takes_new = os.listdir("/work/yuqian_fu/Ego/data_segswap_test_20250508_new888_v2")
# print("takes_new:", len(takes_new))
# # 找出 takes 中有但 takes_new 中没有的元素
# diff_in_takes = set(takes) - set(takes_new)
# # 找出 takes_new 中有但 takes 中没有的元素
# diff_in_takes_new = set(takes_new) - set(takes)
# # 打印结果
# print("takes 中有但 takes_new 中没有的元素:", diff_in_takes)
# print("takes_new 中有但 takes 中没有的元素:", diff_in_takes_new)