AaronJackson / vrn

:man: Code for "Large Pose 3D Face Reconstruction from a Single Image via Direct Volumetric CNN Regression"
http://aaronsplace.co.uk/papers/jackson2017recon/
MIT License
4.52k stars 746 forks source link

Unable to re-produce the same NME of VRN-Unguided performance on AFLW2000-3D Dataset #99

Closed Jim61C closed 5 years ago

Jim61C commented 5 years ago

Hi!

Firstly, thank you for making the inference code available for the paper! I am trying to benchmark and reproduce the same NME error as reported in the paper. However, I am unable to reproduce either the NME without explicit alignment as in the main paper or the one removing rigid body transformation in the supplemental materials using pcregrigid in matlab and the matlab iso-surface code using the model provided here. I have a question that for NME without removing rigid transformation (I understand that you find the point correspondence by doing ICP and do nearest neighbours), how are you aligning the two meshes, ground truth and predicted in z direction? as orthographic camera projection is assumed, it means that the z can be arbitrary in prediction, how is this handled in the NME reported in the main paper without ICP? Thank you

AaronJackson commented 5 years ago

Either they were already aligned, or I used the mean of the Z component for both meshes and aligned them that way. I don't remember and can't check at the moment. Hope that helps though.

Jim61C commented 5 years ago

Hi,

Thanks for the clarification. And just one more detail question is that did you calculate the mean of the filtered ground truth (only the frontal part of the mesh) or the mean of the mesh before filtering? Thanks!

AaronJackson commented 5 years ago

Only on the frontal part of either mesh, and they were filtered before shifting by the Z mean. I just took a look at the code. I subtracted aligned them in Z mean for all comparisons too, but that is the only alignment performed, so I believe it is fair.

Thanks

Jim61C writes:

Hi,

Thanks for the clarification. And just one more detail question is that did you calculate the mean of the filtered ground truth (only the frontal part of the mesh) or the mean of the mesh before filtering? Thanks!

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub, or mute the thread.

-- Aaron Jackson http://aaronsplace.co.uk/

Jim61C commented 5 years ago

I see. So you also filter the output prediction from VRN as well? is that by removing the back part of the mesh? Thanks!

AaronJackson commented 5 years ago

Oh no, sorry for the confusion. Only the groundtruth mesh is filtered, correspondence is then found between them with the matlab ICP function (had to modify it to return the indices, obviously I can't distribute this).

Jim61C writes:

I see. So you also filter the output prediction from VRN as well? is that by removing the back part of the mesh? Thanks!

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub, or mute the thread.

-- Aaron Jackson http://aaronsplace.co.uk/

Jim61C commented 5 years ago

I see! Thanks for the explanation. Can I confirm with you that in that case you are only computing the NME on those set of indices returned (which is a subset of the predicted mesh), is it?

AaronJackson commented 5 years ago

There is a vertex filter (I posted a link to it somewhere on github) which is applied to the groundtruth mesh.

Correspondence is found between the groundtruth mesh and the reconstruction. Any points in the reconstruction which didn't get selected are discarded. The isosurface of the volume is usually incredibly dense, so this isn't too much of a problem. There are now the same number of points in both meshes. The mean euclidean distance is taken, normalised by the outer interocular distance for each face.

Jim61C writes:

I see! Thanks for the explanation. Can I confirm with you that in that case you are only computing the NME on those set of indices returned (which is a subset of the predicted mesh), is it?

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub, or mute the thread.

-- Aaron Jackson http://aaronsplace.co.uk/