Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

what's the meaning of "adapt"? #9

Open
haolyuan opened this issue Sep 19, 2022 · 5 comments
Open

what's the meaning of "adapt"? #9

haolyuan opened this issue Sep 19, 2022 · 5 comments

Comments

@haolyuan
Copy link

I notice that there are hand_pose_axisang_adapt_np and hand_pose_axisang_np in your code. Could you please explain what's the difference between them?

@kelvin34501
Copy link
Collaborator

For code here:

hand_pose_axisang_adapt_np = np.asarray(test_sample[CIAdaptQueries.HAND_POSE])
hand_pose_axisang_np = np.asarray(test_sample[CIDumpedQueries.HAND_POSE])

hand_pose_axisang_adapt_np is the pose from the dataset's annotation (name coming from CIAdaptQueries which stands for an adaptor of the hodataset);
hand_pose_axisang_np is the pose from the dump results.

@haolyuan
Copy link
Author

Can I get hand_joints_adapt_np by using hand_pose_axisang_adapt_np? When I run demo, I found they are not the same.I have take global trans into consideration.

@haolyuan
Copy link
Author

One more question! I would like to know what's the meaning of b_axis = (transf[:, 1:, :3, :3].transpose(2, 3) @ b_axis.unsqueeze(-1)).squeeze(-1) in axislayer.py. I know the meaning of b_axis = hand_joints[:, self.joints_mapping] - hand_joints[:, [i + 1 for i in self.joints_mapping]] is the relative jts vector in mano order.

@kelvin34501
Copy link
Collaborator

Can I get hand_joints_adapt_np by using hand_pose_axisang_adapt_np? When I run demo, I found they are not the same.I have take global trans into consideration.

It depends on the dataset. hand_joints_adapt_np and hand_pose_axisang_adapt_np are annotations from dataset. However, different datasets might use different joint locations. You might need to try ManoAdaptor to see whether you can get the annotated joints.

One more question! I would like to know what's the meaning of b_axis = (transf[:, 1:, :3, :3].transpose(2, 3) @ b_axis.unsqueeze(-1)).squeeze(-1) in axislayer.py. I know the meaning of b_axis = hand_joints[:, self.joints_mapping] - hand_joints[:, [i + 1 for i in self.joints_mapping]] is the relative jts vector in mano order.

The mano pose is in its local frame, so it needs to be transformed to get the axis in global frame.

@haolyuan
Copy link
Author

I almost understand. But there is still a question. We know that the mano skeleton goes like J'=R0*R1*...*Rp(J-Jp)+Jp', where p mean the closest parent. So I don't understand what's the meaning of RpT*(J'-Jp'), where T means transpose. I think there must be something wrong about my understanding. Thanks a lot!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants