mks0601 / Hand4Whole_RELEASE

Official PyTorch implementation of "Accurate 3D Hand Pose Estimation for Whole-Body 3D Human Mesh Estimation", CVPRW 2022 (Oral.)
MIT License
314 stars 31 forks source link

혹시 FreiHAND+InterHand2.6M+MSCOCO 로 학습된 pretrained-model 도 hand4whole model과 combine시킬 수 있나요? #10

Open taewhankim opened 2 years ago

taewhankim commented 2 years ago

먼저 정말 좋은 프로젝트를 공유해주셔서 감사합니다!! 코드를 따라 혼자 학습을 진행해보려하는데 궁금한점이 있어 이슈에 글을 올립니다.

2nd stage에 올려준 pretrained hand model 이 아닌

hand-only Pose2Pose trained on FreiHAND+InterHand2.6M+MSCOCO 로 학습된 pretrained 모델을 사용해서

기존 hand4whole 모델과 combine 시키고 싶은데

3rd stage 코드를 그대로 사용해도 가능할까요?

감사합니다!

mks0601 commented 2 years ago

안녕하세요 질문을 잘 이해하기가 어려운데 다시 질문해주실 수 있을까요? 2nd stage에서 이미 hand-only Pose2Pose trained on FreiHAND+InterHand2.6M+MSCOCO 로 학습된 pretrained 모델을 사용합니다

taewhankim commented 2 years ago

답변주셔서 감사합니다! 동일 모델인줄 모르고 질문을 드렸네요 죄송합니다ㅜ

1 .

혹시 Quick demo에 올라온 pretrained Hand4Whole모델이 train 3rd 과정에서의 hand-only model + Hand4Whole 모델의 결과물인가요? 아니면 H36M+MPII+MSCOCO로만 학습된 Hand4Whole model 인가요?

demo 모델과 hand-only 모델의 손부분에서 성능 차이가 존재하는 것 같아 질문드립니다:)!

2. 1번과 유사한 질문인데, face-only model 도 사용하려면, smplx에서 face 부분을 face-only model result로 바꾸면 될까요?

감사합니다!!

mks0601 commented 2 years ago
  1. 3rd를 마친 모델입니다
  2. face-only model은 pose2pose branch에서 face-only model을 학습시키시면 될 것 같습니다
taewhankim commented 2 years ago

감사합니다! 마지막으로 질문드릴게 있는데, camera angle을 변환시키려고 하는데(ex- 측면으로 생성된 smplx 모형을 정면 각도로 image에 projection 시키는 경우) https://github.com/mks0601/Hand4Whole_RELEASE/blob/3157bbc2eb46acbf4e0adb9c4cb0ed3221f64c5b/main/model.py#L135 여기서 cam_trans 값을 정면 image에서 뽑은 cam_trans로 대체하여 https://github.com/mks0601/Hand4Whole_RELEASE/blob/3157bbc2eb46acbf4e0adb9c4cb0ed3221f64c5b/main/model.py#L142 get_coord()의 파라미터로 사용하면 정면으로 projection된 image가 생성될까요?

정말 많이 도와주셔서 감사드립니다!

mks0601 commented 2 years ago

camera angle을 변환시킨다는 말씀이 혹시 mesh rendering을 얻기위한 camera angle을 변경하고 싶다는 말씀이시라면 우선 model.py는 그대로 두시는것을 추천드립니다 그 안에 여러 network의 forward들이 들어있어서요 그냥 최종 output mesh만 3D transformation을 해주시면 됩니다. 말씀하신 것은 3D mesh를 root joint-relative 3d mesh로 translation시킨 후 측면이 보이도록 3D rotation을 적용한 후 root joint-relative로 변경하기 전의 root joint만큼 다시 trnaslation을 복원시켜주시고 rendering하시면 될 것 같습니다

taewhankim commented 2 years ago

https://github.com/mks0601/Hand4Whole_RELEASE/blob/3157bbc2eb46acbf4e0adb9c4cb0ed3221f64c5b/demo/demo.py#L72 말씀해주신대로 측면으로 나온 mesh rendering 을 정면으로 rendering 하고 싶었습니다. 결국 out['smplx_mesh_cam']의 root joint을 translation 시킨 후 원하는 angle로 rotation 시킨후 다시 복원시킨 뒤 rendering하면 된다는 뜻인거죠? 진심으로 감사드립니다

mks0601 commented 2 years ago

네 맞습니다