ObjectRelator-Original / psalm /eval /merge_competition.py
YuqianFu's picture
Upload folder using huggingface_hub
625a17f verified
import json
import os
import multiprocessing
import numpy as np
import cv2
from tqdm import tqdm
from PIL import Image
from pycocotools import mask as mask_utils
# 加载json文件
# json_path = "/scratch/yuqian_fu/competition_test_20250515_png_v3.json"
# save_path = "/scratch/yuqian_fu/competition_test_20250516_rle_v3.json"
# with open(json_path, "r") as f:
# datas = json.load(f)
# takes = list(datas.keys())
# # 定义处理一个样本的函数
# def maskpng_to_rle(sample):
# cur_pred = cv2.imread(sample['pred_mask'], cv2.IMREAD_GRAYSCALE)
# cur_pred = mask_utils.encode(np.asfortranarray(cur_pred.astype(np.uint8)))
# cur_pred['counts'] = cur_pred['counts'].decode('ascii')
# return cur_pred
# results_new = {}
# for take in takes:
# datas_this_take = datas[take]
# objs_this_take = list(datas_this_take['masks'].keys())
# # 保存新结果
# pred_json_new = {'masks': {}, 'subsample_idx': datas_this_take['subsample_idx']}
# for obj in objs_this_take:
# cam_combinations = list(datas_this_take['masks'][obj].keys())
# for cam in cam_combinations:
# ids = list(datas_this_take['masks'][obj][cam].keys())
# for id in ids:
# sample = datas_this_take['masks'][obj][cam][id]
# cur_pred = maskpng_to_rle(sample)
# sample['pred_mask'] = cur_pred
# # 保存前检查key是否存在
# if obj not in pred_json_new['masks']:
# pred_json_new['masks'][obj] = {}
# if cam not in pred_json_new['masks'][obj]:
# pred_json_new['masks'][obj][cam] = {}
# # 保存
# pred_json_new['masks'][obj][cam][id] = sample
# # 保存每个take的结果
# results_new[take] = pred_json_new
# # 保存最后的结果
# with open(save_path, "w") as fp:
# json.dump(results_new, fp)
# 增加“ego-exo”、“results”键
# json_path_1 = "/scratch/yuqian_fu/competition_Exo2Ego_Final_all_999.json"
# json_path_2 = "/scratch/yuqian_fu/competition_Ego2Exo_Final_all_999.json"
# with open(json_path_1, "r") as f:
# result_exoego = json.load(f)
# with open(json_path_2, "r") as f:
# result_egoexo = json.load(f)
# save_path = "/scratch/yuqian_fu/Competition_Final_All_Submit_reshape.json"
# with open(save_path, "w") as fp:
# json.dump({"exo-ego": {"version": "xx","challenge": "xx", 'results': result_exoego['exo-ego']['results']}, "ego-exo": {"version": "xx","challenge": "xx",'results': result_egoexo['ego-exo']['results']}}, fp)
#处理exo2ego
# results_new_exo2ego = {}
# list_values = list(range(1, 17))
# for value in [6, 8, 9, 12, 16]:
# list_values.remove(value)
# for i in list_values:
# i = str(i)
# json_path = f"/scratch/yuqian_fu/competition_test_ExoEgo_v{i}.json"
# with open(json_path, "r") as f:
# result = json.load(f)
# # 依次合并字典
# results_new_exo2ego.update(result)
# for j in [6, 8, 9, 12, 16]:
# j = str(j)
# json_path = f"/scratch/yuqian_fu/competition_test_ExoEgo_v{j}_New.json"
# with open(json_path, "r") as f:
# result = json.load(f)
# # 依次合并字典
# results_new_exo2ego.update(result)
# 处理ego2exo
# list_values = list(range(1, 9))
# results_new_ego2exo = {}
# for i in list_values:
# i = str(i)
# json_path = f"/scratch/yuqian_fu/competition_Ego2Exo_Final_v{i}.json"
# with open(json_path, "r") as f:
# result = json.load(f)
# # 依次合并字典
# results_new_ego2exo.update(result)
# save_path = f"/scratch/yuqian_fu/competition_Exo2Ego_Final_all_999.json"
# with open(save_path, "w") as fp:
# json.dump({"ego-exo": {"version": "xx","challenge": "xx", 'results': {}}, "exo-ego": {"version": "xx","challenge": "xx",'results': results_new_exo2ego}}, fp)
# 处理独立的json
json_path = "/scratch/yuqian_fu/report_soccer_new.json"
with open(json_path, "r") as f:
result = json.load(f)
save_path = "/scratch/yuqian_fu/report_soccer_new_tmp.json"
with open(save_path, "w") as fp:
json.dump({"ego-exo": {"version": "xx","challenge": "xx", 'results': result}, "exo-ego": {"version": "xx","challenge": "xx",'results': {}}}, fp)