in shapenet/utils/vis.py [0:0]
def print_instances_class_histogram(num_instances, class_names, results):
"""
Args:
num_instances (list): list of dataset dicts.
"""
num_classes = len(class_names)
N_COLS = 7
data = list(
itertools.chain(
*[
[
class_names[id],
v,
results["chamfer"][id] / v,
results["normal"][id] / v,
results["f1_01"][id] / v,
results["f1_03"][id] / v,
results["f1_05"][id] / v,
]
for id, v in num_instances.items()
]
)
)
total_num_instances = sum(data[1::7])
mean_chamfer = sum(data[2::7]) / num_classes
mean_normal = sum(data[3::7]) / num_classes
mean_f1_01 = sum(data[4::7]) / num_classes
mean_f1_03 = sum(data[5::7]) / num_classes
mean_f1_05 = sum(data[6::7]) / num_classes
data.extend([None] * (N_COLS - (len(data) % N_COLS)))
data.extend(
[
"total",
total_num_instances,
mean_chamfer,
mean_normal,
mean_f1_01,
mean_f1_03,
mean_f1_05,
]
)
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_01"].values()) / total_num_instances,
sum(results["f1_03"].values()) / total_num_instances,
sum(results["f1_05"].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.1)", "F1(0.3)", "F1(0.5)"]
* (N_COLS // 2),
tablefmt="pipe",
numalign="left",
stralign="center",
)
print(
"Distribution of testing instances among all {} categories:\n".format(num_classes)
+ colored(table, "cyan")
)