Download evaluation/autotest_study/work.py from stereoid/Orienter: direct link, hf CLI and curl.
- Browser
- Download file 5.25 kB
-
https://huggingface.co/stereoid/Orienter/resolve/main/evaluation/autotest_study/work.py
- Command line
-
hf download hf://stereoid/Orienter/evaluation/autotest_study/work.py
-
curl -L -o work.py https://huggingface.co/stereoid/Orienter/resolve/main/evaluation/autotest_study/work.py
5.25 kB
| import os | |
| import subprocess | |
| from concurrent.futures import ThreadPoolExecutor | |
| os.environ['split'] = 'genre' | |
| MIN_APPS_PER_CAT = 5 | |
| split = os.getenv('split', '') | |
| suffix_split = f'-{split}' if split else '' | |
| GT = f'../gts/det/interactable/{split}.json' | |
| RESULT_DIR = f'./results{suffix_split}' | |
| RAW_RESULT_DIR = f'{RESULT_DIR}/raw' | |
| GUIDANCES = [ | |
| # f'../results/ours/aaa_icse_test_set_merged_gpt4v_gpt4v_ape_d_object_bbox_r1i_bf.json', | |
| # f'../results/ours/realfse_union3_claude35sonnet_ape_d_object_bbox_gpu0123_i_bf.json', | |
| f'../results/ours/realfse_union3_gemini15pro_ape_d_object_bbox_gpu0123_i_bf.json', | |
| # f'../results/ours/realfse_union3_gpt4v_ape_d_object_bbox_gpu0123_i_bf.json', | |
| f'../results/baselines/{split}/det/interactable/YOLO.json', | |
| # f'../results/baselines/{split}/det/interactable/GPT4V-E2E.json', | |
| f'../results/baselines/{split}/det/interactable/internVL-E2E.json', | |
| f'../results/baselines/{split}/det/interactable/Claude4_5-sonnet-E2E.json' | |
| ] | |
| CAT_COMPARE_GUIDANCE = f'../results/ours/realfse_union3_gemini15pro_ape_d_object_bbox_gpu0123_i_bf.json' | |
| BASELINE_GUIDANCE = f'../results/baselines/{split}/det/interactable/YOLO.json' | |
| EVAL_UTILS_ROOT = './eval_utils' | |
| GEN_INTERACT_SCRIPT = f'{EVAL_UTILS_ROOT}/gen_interact.py' | |
| TIME_EVAL_SCRIPT = f'{EVAL_UTILS_ROOT}/time_evaluation.py' | |
| CAT_EVAL_SCRIPT = f'{EVAL_UTILS_ROOT}/cat_evaluation.py' | |
| AVG_SCRIPT = f'{EVAL_UTILS_ROOT}/time_avg_metric.py' | |
| TIME_PLOT_SCRIPT = f'{EVAL_UTILS_ROOT}/time_plot.py' | |
| CAT_PLOT_SCRIPT = f'{EVAL_UTILS_ROOT}/cat_plot.py' | |
| TO_LATEX_SCRIPT = f'{EVAL_UTILS_ROOT}/cat_2latex.py' | |
| ROUND = 30 | |
| os.environ['ROUND'] = str(ROUND) | |
| os.makedirs(RAW_RESULT_DIR, exist_ok=True) | |
| def generate_interact(inter_path, guide=None): | |
| if not os.path.exists(inter_path + '.json'): | |
| cli = f'python {GEN_INTERACT_SCRIPT} -a {GT} -o {inter_path + ".json"}' | |
| if guide: | |
| cli += f' -g {guide}' | |
| print(cli) | |
| subprocess.run(cli.split()) | |
| else: | |
| print(f'{inter_path}.json already exists') | |
| return inter_path | |
| def time_eval_interact(inter_path, guide=None): | |
| cli = f'python {TIME_EVAL_SCRIPT} -a {GT} -i {inter_path + ".json"} -o {inter_path + ".csv"}' | |
| if guide: | |
| cli += f' -p {guide}' | |
| print(cli) | |
| subprocess.run(cli.split()) | |
| return inter_path | |
| def avg_metric(series): | |
| cli = f'python {AVG_SCRIPT} -s {series}' | |
| print(cli) | |
| subprocess.run(cli.split()) | |
| def cat_eval(series, guide=None): | |
| cli = f'python {CAT_EVAL_SCRIPT} -a {GT} -is {RAW_RESULT_DIR}/{series} -o {RESULT_DIR}/cat_eval/{series}' | |
| if guide: | |
| cli += f' -p {guide}' | |
| print(cli) | |
| subprocess.run(cli.split()) | |
| def cat_plot(): | |
| cli = (f'python {CAT_PLOT_SCRIPT} ' | |
| f'-r {RESULT_DIR}/cat_eval/{os.path.basename(BASELINE_GUIDANCE).split(".")[0]} ' | |
| f'-g {RESULT_DIR}/cat_eval/{os.path.basename(CAT_COMPARE_GUIDANCE).split(".")[0]} ' | |
| f'-t coverage_rate ' | |
| f'-m {MIN_APPS_PER_CAT}' | |
| ) | |
| print(cli) | |
| subprocess.run(cli.split()) | |
| # cli = f'python {CAT_PLOT_SCRIPT} ' + \ | |
| # f'-r {RESULT_DIR}/cat_eval/random ' + \ | |
| # f'-g {RESULT_DIR}/cat_eval/{os.path.basename(CAT_COMPARE_GUIDANCE).split(".")[0]} ' + \ | |
| # f'-t effective_interacts_rate' | |
| # print(cli) | |
| # subprocess.run(cli.split()) | |
| # cli = f'python {CAT_PLOT_SCRIPT} ' + \ | |
| # f'-r {RESULT_DIR}/cat_eval/YOLO ' + \ | |
| # f'-g {RESULT_DIR}/cat_eval/{os.path.basename(CAT_COMPARE_GUIDANCE).split(".")[0]} ' + \ | |
| # f'-t effective_interacts_cnt' | |
| cli = (f'python {CAT_PLOT_SCRIPT} ' | |
| f'-r {RESULT_DIR}/cat_eval/{os.path.basename(BASELINE_GUIDANCE).split(".")[0]} ' | |
| f'-g {RESULT_DIR}/cat_eval/{os.path.basename(CAT_COMPARE_GUIDANCE).split(".")[0]} ' | |
| f'-t effective_interacts_cnt ' | |
| f'-m {MIN_APPS_PER_CAT}' | |
| ) | |
| print(cli) | |
| subprocess.run(cli.split()) | |
| def main(): | |
| with ThreadPoolExecutor(max_workers=16) as executor: | |
| futures = [] | |
| for i in range(ROUND): | |
| random_inter_path = os.path.join(RAW_RESULT_DIR, 'random' + str(i)) | |
| futures.append(executor.submit(generate_interact, random_inter_path)) | |
| for future in futures: | |
| inter_path = future.result() | |
| executor.submit(time_eval_interact, inter_path) | |
| avg_metric('random') | |
| cat_eval('random') | |
| for guide in GUIDANCES: | |
| with ThreadPoolExecutor(max_workers=16) as executor: | |
| futures = [] | |
| for i in range(ROUND): | |
| guide_inter_path = os.path.join(RAW_RESULT_DIR, os.path.basename(guide).split('.')[0] + str(i)) | |
| futures.append(executor.submit(generate_interact, guide_inter_path, guide)) | |
| for future in futures: | |
| inter_path = future.result() | |
| executor.submit(time_eval_interact, inter_path, guide) | |
| avg_metric(os.path.basename(guide).split(".")[0]) | |
| cat_eval(os.path.basename(guide).split(".")[0], guide) | |
| pass | |
| cli = f'python {TIME_PLOT_SCRIPT}' | |
| print(cli) | |
| subprocess.run(cli.split()) | |
| cat_plot() | |
| cli = f'python {TO_LATEX_SCRIPT} -gt {GT} -m {MIN_APPS_PER_CAT}' | |
| print(cli) | |
| subprocess.run(cli.split()) | |
| if __name__ == '__main__': | |
| main() | |