|
import os |
|
import matplotlib.pyplot as plt |
|
|
|
from lydorn_utils import python_utils |
|
from lydorn_utils import print_utils |
|
|
|
|
|
def get_stat_from_all(stat_filepath_format, method_info, tolerances, stat_name): |
|
stat_list = [0 for _ in tolerances] |
|
for i, tolerance in enumerate(tolerances): |
|
filepath = stat_filepath_format.format(method_info["name"], tolerance) |
|
stats = python_utils.load_json(filepath) |
|
if stats: |
|
stat_list[i] = stats[stat_name] |
|
else: |
|
print_utils.print_warning("WARNING: could not open {}".format(filepath)) |
|
return stat_list |
|
|
|
|
|
def plot_stat(stat_filepath_format, method_info_list, tolerances, stat_name, exp_name): |
|
legend = [] |
|
for method_info in method_info_list: |
|
ap_list = get_stat_from_all(stat_filepath_format, method_info, tolerances, stat_name) |
|
legend.append(method_info["title"]) |
|
|
|
plt.plot(tolerances, ap_list) |
|
|
|
plt.legend(legend, loc='lower left') |
|
plt.xlabel("Tolerance") |
|
plt.ylabel(stat_name) |
|
plt.title(exp_name + ": " + stat_name + " vs tolerance") |
|
plt.savefig(exp_name.replace(" ", "_") + "_" + stat_name + "_vs_tolerance.pdf") |
|
plt.show() |
|
|
|
|
|
def main(): |
|
method_info_list = [ |
|
{ |
|
"title": "Baseline polygonization", |
|
"name": "simple" |
|
}, |
|
{ |
|
"title": "Our polygonization", |
|
"name": "acm" |
|
}, |
|
] |
|
tolerances = [0.125, 0.25, 0.5, 1, 2, 4, 8, 16] |
|
eval_runs_dirpath = "/data/data/mapping_challenge_dataset/eval_runs_cluster" |
|
|
|
info_list = [ |
|
{ |
|
"exp_name": "U-Net16 full method", |
|
"run_dirname": "mapping_dataset.unet16.train_val | 2020-02-21 03:09:03", |
|
}, |
|
{ |
|
"exp_name": "U-Net16 field off", |
|
"run_dirname": "mapping_dataset.unet16.field_off.train_val | 2020-02-28 23:51:16", |
|
}, |
|
{ |
|
"exp_name": "DeepLab101 full method", |
|
"run_dirname": "mapping_dataset.deeplab101.train_val | 2020-02-24 23:57:19", |
|
}, |
|
{ |
|
"exp_name": "DeepLab101 field off", |
|
"run_dirname": "mapping_dataset.deeplab101.field_off.train_val | 2020-03-02 00:03:45", |
|
}, |
|
] |
|
for info in info_list: |
|
stat_filepath_format = os.path.join(eval_runs_dirpath, info["run_dirname"], "test.stats.test.annotation.poly.{}.tol_{}.json") |
|
|
|
plot_stat(stat_filepath_format, method_info_list, tolerances, "AP", info["exp_name"]) |
|
plot_stat(stat_filepath_format, method_info_list, tolerances, "AR", info["exp_name"]) |
|
|
|
|
|
if __name__ == '__main__': |
|
main() |
|
|