diffumatch / utils /eval.py
daidedou
first_try
458efe2
raw
history blame
1.08 kB
def accuracy(p2p, gt_p2p, D1_geod, return_all=False, sqrt_area=None):
"""
Computes the geodesic accuracy of a vertex to vertex map. The map goes from
the target shape to the source shape.
Borrowed from Robin.
Parameters
----------------------
p2p : (n2,) - vertex to vertex map giving the index of the matched vertex on the source shape
for each vertex on the target shape (from a functional map point of view)
gt_p2p : (n2,) - ground truth mapping between the pairs
D1_geod : (n1,n1) - geodesic distance between pairs of vertices on the source mesh
return_all : bool - whether to return all the distances or only the average geodesic distance
Output
-----------------------
acc : float - average accuracy of the vertex to vertex map
dists : (n2,) - if return_all is True, returns all the pairwise distances
"""
dists = D1_geod[(p2p, gt_p2p)]
if sqrt_area is not None:
dists /= sqrt_area
if return_all:
return dists.mean(), dists
return dists.mean()