|
import os |
|
import numpy as np |
|
import subprocess |
|
|
|
|
|
def ratio(losses, thresholds=[5, 10]): |
|
return ["{:.3f}".format(np.mean(losses < threshold)) for threshold in thresholds] |
|
|
|
|
|
if __name__ == "__main__": |
|
scene = "Indoor" |
|
dir_base = "result_errors/Indoor/" |
|
save_pt = "resultfinal_errors/Indoor/" |
|
|
|
subprocess.check_output(["mkdir", "-p", save_pt]) |
|
|
|
with open(save_pt + "ratio_methods_" + scene + ".txt", "w") as f: |
|
f.write("5deg 10deg" + "\n") |
|
pair_list = os.listdir(dir_base) |
|
enhancer = os.listdir(dir_base + "/pair9/") |
|
for method in enhancer: |
|
pose_error_list = sorted(os.listdir(dir_base + "/pair9/" + method)) |
|
for pose_error in pose_error_list: |
|
error_array = np.expand_dims(np.zeros((6, 8)), axis=2) |
|
for pair in pair_list: |
|
try: |
|
error = np.expand_dims( |
|
np.load( |
|
dir_base + "/" + pair + "/" + method + "/" + pose_error |
|
), |
|
axis=2, |
|
) |
|
except: |
|
print( |
|
"error in", |
|
dir_base + "/" + pair + "/" + method + "/" + pose_error, |
|
) |
|
continue |
|
error_array = np.concatenate((error_array, error), axis=2) |
|
ratio_result = ratio(error_array[:, :, 1::].flatten()) |
|
f.write( |
|
method |
|
+ "_" |
|
+ pose_error[11:-4] |
|
+ " " |
|
+ " ".join([str(i) for i in ratio_result]) |
|
+ "\n" |
|
) |
|
|
|
scene = "Outdoor" |
|
dir_base = "result_errors/Outdoor/" |
|
save_pt = "resultfinal_errors/Outdoor/" |
|
|
|
subprocess.check_output(["mkdir", "-p", save_pt]) |
|
|
|
with open(save_pt + "ratio_methods_" + scene + ".txt", "w") as f: |
|
f.write("5deg 10deg" + "\n") |
|
pair_list = os.listdir(dir_base) |
|
enhancer = os.listdir(dir_base + "/pair9/") |
|
for method in enhancer: |
|
pose_error_list = sorted(os.listdir(dir_base + "/pair9/" + method)) |
|
for pose_error in pose_error_list: |
|
error_array = np.expand_dims(np.zeros((6, 8)), axis=2) |
|
for pair in pair_list: |
|
error = np.expand_dims( |
|
np.load( |
|
dir_base + "/" + pair + "/" + method + "/" + pose_error |
|
), |
|
axis=2, |
|
) |
|
error_array = np.concatenate((error_array, error), axis=2) |
|
ratio_result = ratio(error_array[:, :, 1::].flatten()) |
|
f.write( |
|
method |
|
+ "_" |
|
+ pose_error[11:-4] |
|
+ " " |
|
+ " ".join([str(i) for i in ratio_result]) |
|
+ "\n" |
|
) |
|
|