hassony2 / handobjectconsist

[cvpr 20] Demo, training and evaluation code for joint hand-object pose estimation in sparsely annotated videos
https://hassony2.github.io/handobjectconsist.html
MIT License
120 stars 18 forks source link

about self.reorder_idxs #4

Closed MengHao666 closed 3 years ago

MengHao666 commented 4 years ago

Hi, thanks for the great work!

In ho3dv2.py line54 , u use self.reorder_idxs. An d I have checked that the joints 3d location after passing params. to mano_layer(which u proposed as manopth) are different from the ground truth 3d joint loactions.But after u use self.reorder_idxs to change order , they are nearly same. So do u change the order through self.reorder_idxs to adapt to the mano layer? In code of ho3d, such order change is used only for simpler visualization. So after training on ho3d subset, do you use an "inverse_reorder_idxs" to recover the original order which are used in evaluation datast? Is it necessary? How do you achieve it?

Hope to get some suggestions from u. Merci beaucoup!

hassony2 commented 4 years ago

Hi @MengHao666 !

Thank you for your interest in our work :) As you can see here I use self.reorder_idxs to transform from HO3D to manopth convention. After that, I always stay in manpth joint convention (for training & visualization). Does this answer your question ?

All the best,

Yana

MengHao666 commented 4 years ago

Thanks a lot for the generous reply !

As u say, u always use manopth joint convention after transformation with self.reorder_idxs. So at last ,the network would output joint locations in the order of self.reorder_idxs. And it's better to "inverse" the order of joint locations outputs to fit the original HO3D convention when testing model in test set. I have seen much higher joint locations errors when omitting the "inverse" process in HO3D_v2 dataset.But I cannot find such "inverse" process in your code.

Another question, dose the order of 778 vertexes of hand mesh also need to reorder? It seems that both label and predictions of hand mesh vertexes come from manopth layer.So I guess vertexes don't need to "reorder". Is that true?

Merci bien! Bonne journée!

hassony2 commented 4 years ago

Hi @MengHao666,

Just to make sure we are on the same page, when you say " I have seen much higher joint locations errors when omitting the "inverse" process" are you talking about the HO3D leaderboard submission ?

About vertex ordering I am actually not sure.

Best !

MengHao666 commented 4 years ago

Thanks for reply!

Yes, when I say the " I have seen much higher joint locations errors when omitting the "inverse" process" , I do mean the HO3D_v2 leaderboard submission. When I did what I say " "inverse" process", I saw a lot performance improvment on Mean Joint Error. It is the reason why I guess "inverse" process is necessary. About vertex order, I just follow the convention of your manopth. And I guess it is consistent with HO3D_v2 leaderboard submission.They just follow MANO Hand Model Convention

Best!

hassony2 commented 3 years ago

@MengHao666

Thank you for your feedback, I am closing this as it looks like it is resolved, feel free to reopen if you run into issues !

Best,

Yana