Spaces:
Running
Running
| import json, os, argparse | |
| def save_json(json_dict, fname): | |
| with open(fname, "w") as f: | |
| json.dump(json_dict, f, indent=4) | |
| def load_json(fname): | |
| with open(fname, "r") as f: | |
| json_dict = json.load(f) | |
| return json_dict | |
| def merge(eval_result_path): | |
| eval_result_files = [f for f in os.listdir(eval_result_path) if f.endswith('.json') and not 'merge' in f] | |
| merged_result = {} | |
| for fn in eval_result_files: | |
| if 'tempcompass' in fn: | |
| task_type = fn.replace('.json', '').replace('tempcompass_', '') | |
| if task_type=='multi_choice': | |
| task_type = 'multi-choice' | |
| lmms_results = load_json(f"{eval_result_path}/{fn}") | |
| results = {} | |
| for lmms_result in lmms_results['logs']: | |
| vid = lmms_result['doc']['video_id'] | |
| dim = lmms_result['doc']['dim'] | |
| if vid not in results: | |
| results[vid] = {} | |
| if dim not in results[vid]: | |
| results[vid][dim] = [] | |
| result = lmms_result['avg_accuracy'] | |
| result.pop('video_id') | |
| result.pop('dim') | |
| results[vid][dim].append(result) | |
| merged_result[task_type] = results | |
| else: | |
| task_type = fn.replace('.json', '') | |
| merged_result[task_type] = load_json(f"{eval_result_path}/{fn}") | |
| merge_file = f"{eval_result_path}/merged_result.json" | |
| save_json(merged_result, merge_file) | |
| if __name__ == "__main__": | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument("--eval_result_path", type=str, default="file/example_eval_results") | |
| args = parser.parse_args() | |
| merge(args.eval_result_path) | |