raster2seq / evaluations /s3d_floorplan_eval /evaluate_solution.py
anas
Initial deployment of Raster2Seq floor plan vectorization API
fadb92b
Raw
History Blame Contribute Delete
3.22 kB
import copy
import os
import numpy as np
from DataRW.S3DRW import S3DRW
from DataRW.wrong_annotatios import wrong_s3d_annotations_list
from Evaluator.Evaluator import Evaluator
from options import MCSSOptions
from planar_graph_utils import get_regions_from_pg
room_polys_def = [
np.array([[191, 150], [191, 70], [222, 70], [222, 150], [191, 150]]),
np.array([[232, 65], [232, 11], [202, 11], [202, 65], [232, 65]]),
np.array([[47, 50], [47, 150], [24, 150], [24, 50], [47, 50]]),
np.array([[199, 156], [199, 234], [146, 234], [146, 156], [199, 156]]),
np.array([[109, 184], [120, 184], [120, 156], [50, 156], [50, 234], [109, 234], [109, 184]]),
np.array([[110, 234], [144, 234], [144, 187], [110, 187], [110, 234]]),
np.array(
[
[50, 50],
[50, 150],
[123, 150],
[123, 184],
[144, 184],
[144, 150],
[190, 150],
[190, 70],
[108, 70],
[108, 50],
[50, 50],
]
),
]
# pg_base = 'results/npy_heat_s3d_256/'
pg_base = "results/test_gt/"
# pg_base = 'results/test_eval2/'
options = MCSSOptions()
opts = options.parse()
if __name__ == "__main__":
# data_rw = FloorNetRW(opts)
if opts.scene_id == "val":
opts.scene_id = "scene_03250" # Temp. value
data_rw = S3DRW(opts)
scene_list = data_rw.loader.scenes_list
quant_result_dict = None
quant_result_maskrcnn_dict = None
scene_counter = 0
for scene_ind, scene in enumerate(scene_list):
if int(scene[6:]) in wrong_s3d_annotations_list:
continue
print("------------")
curr_opts = copy.deepcopy(opts)
curr_opts.scene_id = scene
curr_data_rw = S3DRW(curr_opts)
print("Running Evaluation for scene %s" % scene)
evaluator = Evaluator(curr_data_rw, curr_opts)
# TODO load your room polygons into room_polys, list of polygons (n x 2)
# room_polys = np.array([[[0,0], [200, 0], [200, 200]]]) # Placeholder
pg_path = os.path.join(pg_base, scene[6:] + ".npy")
example_pg = np.load(pg_path, allow_pickle=True).tolist()
example_pg["corners"] = example_pg["corners"][:8]
example_pg["edges"] = example_pg["edges"][:8]
regions = get_regions_from_pg(example_pg, corner_sorted=True)
# regions = [np.array(re, dtype=np.int32) for re in example_pg]
room_polys = regions
# room_polys = room_polys_def # Placeholder
quant_result_dict_scene = evaluator.evaluate_scene(room_polys=room_polys)
if quant_result_dict is None:
quant_result_dict = quant_result_dict_scene
else:
for k in quant_result_dict.keys():
quant_result_dict[k] += quant_result_dict_scene[k]
scene_counter += 1
# break
for k in quant_result_dict.keys():
quant_result_dict[k] /= float(scene_counter)
print("Our: ", quant_result_dict)
print("Ours")
evaluator.print_res_str_for_latex(quant_result_dict)