in shapenet/utils/vis.py [0:0]
def print_instances_class_histogram_p2m(num_instances, class_names, results):
"""
Args:
num_instances (list): list of dataset dicts.
"""
num_classes = len(class_names)
N_COLS = 6
data = list(
itertools.chain(
*[
[
class_names[id],
v,
results["chamfer"][id] / v,
results["normal"][id] / v,
results["f1_1e_4"][id] / v,
results["f1_2e_4"][id] / v,
]
for id, v in num_instances.items()
]
)
)
total_num_instances = sum(data[1::6])
mean_chamfer = sum(data[2::6]) / num_classes
mean_normal = sum(data[3::6]) / num_classes
mean_f1_1e_4 = sum(data[4::6]) / num_classes
mean_f1_2e_4 = sum(data[5::6]) / num_classes
data.extend([None] * (N_COLS - (len(data) % N_COLS)))
data.extend(
["total", total_num_instances, mean_chamfer, mean_normal, mean_f1_1e_4, mean_f1_2e_4]
)
data.extend([None] * (N_COLS - (len(data) % N_COLS)))
data.extend(
[
"per-instance",
total_num_instances,
sum(results["chamfer"].values()) / total_num_instances,
sum(results["normal"].values()) / total_num_instances,
sum(results["f1_1e_4"].values()) / total_num_instances,
sum(results["f1_2e_4"].values()) / total_num_instances,
]
)
data = itertools.zip_longest(*[data[i::N_COLS] for i in range(N_COLS)])
table = tabulate(
data,
headers=["category", "#instances", "chamfer", "normal", "F1(0.0001)", "F1(0.0002)"]
* (N_COLS // 2),
tablefmt="pipe",
numalign="left",
stralign="center",
)
print(
"Distribution of testing instances among all {} categories:\n".format(num_classes)
+ colored(table, "cyan")
)