from itertools import product import sys import os import json rootdir = os.path.abspath(sys.path[0] + '/../') datadir = f"{rootdir}/data/__new/classroom_fovea_r360x80_t0.6" n_nets_arr = [ 1, 2, 4, 8 ] nf_arr = [ 64, 128, 256, 512, 1024 ] n_layers_arr = [ 2, 4, 8 ] head = "Nets," + ",".join([f"{val1}x{val2}" for val1, val2 in product(nf_arr, n_layers_arr)]) perf_train_table = [] perf_test_table = [] perf_time_table = [] for n_nets in n_nets_arr: perf_train_row = [] perf_test_row = [] perf_time_row = [] for nf, n_layers in product(nf_arr, n_layers_arr): configid = f"eval@snerffast{n_nets}-rgb_e6_fc{nf}x{n_layers}_d1.00-7.00_s64_~p" outputdir = f"{datadir}/{configid}/output_50" if not os.path.exists(outputdir): perf_train_row.append("-") perf_test_row.append("-") perf_time_row.append("-") continue perf_test_found=False perf_train_found=False for file in os.listdir(outputdir): if file.startswith("perf_r120x80_test"): if perf_test_found: os.remove(f"{outputdir}/{file}") else: perf_test_row.append(os.path.splitext(file)[0].split("_")[-1]) perf_test_found=True elif file.startswith("perf_r120x80"): if perf_train_found: os.remove(f"{outputdir}/{file}") else: perf_train_row.append(os.path.splitext(file)[0].split("_")[-1]) perf_train_found=True if perf_train_found == False: perf_train_row.append("-") if perf_test_found == False: perf_test_row.append("-") # Collect time values time_file = f"{datadir}/eval_trt/time/eval_{n_nets}x{nf}x{n_layers}.json" if not os.path.exists(time_file): perf_time_row.append("-") else: with open(time_file) as fp: time_data = json.load(fp) time = 0 for item in time_data: time += item['computeMs'] time /= len(time_data) perf_time_row.append(f"{time:.1f}") perf_train_table.append(perf_train_row) perf_test_table.append(perf_test_row) perf_time_table.append(perf_time_row) perf_train_content = head + "\n" for i, row in enumerate(perf_train_table): perf_train_content += f"{n_nets_arr[i]}," perf_train_content += ",".join(row) + "\n" perf_test_content = head + "\n" for i, row in enumerate(perf_test_table): perf_test_content += f"{n_nets_arr[i]}," perf_test_content += ",".join(row) + "\n" perf_time_content = head + "\n" for i, row in enumerate(perf_time_table): perf_time_content += f"{n_nets_arr[i]}," perf_time_content += ",".join(row) + "\n" with open(f"{datadir}/eval_perf.csv", "w") as fp: fp.write("Train:\n") fp.write(perf_train_content) fp.write("Test:\n") fp.write(perf_test_content) fp.write("Time:\n") fp.write(perf_time_content)