buggy implementation of intersection volume metric?
zehongs opened this issue · 1 comments
Hi, I think the metric of intersection volume is not correct.
The function intersect_vox
is supposed to compute the intersection volume. However, vox=mesh.voxelized()
and vox.points
are only giving the surface points. So it is not offering a solid volume. The mesh.contains(points)
is giving a smaller estimate of intersection volume.
Lines 7 to 12 in cecb964
Hi, thanks for the great question!
The implementation is inherited from previous papers, which are widely used.
In detail, the previous works are obman [19] and GanHand [9].
https://github.com/hassony2/obman_train/blob/master/mano_train/netscripts/intersect.py#L18
https://github.com/enriccorona/GanHand/blob/master/utils/obman_utils.py#L22
On one hand, the max interpenetration depth between hand-object is small (according to Table. 1 in our paper), which are 0.46, 1.05, and 1.58 cm on the three datasets. It matches the pitch size we use in voxelization, and the method works when the interpenetration is shallow. On the other hand, there will also be many voxelized points where the intersection depth is actually smaller than 1 cm but got voxelized, causing a larger intersection volume. Overall, the intersection volume will be roughly correct.