mks0601 / 3DMPPE_POSENET_RELEASE

Official PyTorch implementation of "Camera Distance-aware Top-down Approach for 3D Multi-person Pose Estimation from a Single RGB Image", ICCV 2019
MIT License
807 stars 147 forks source link

How to check actual visible keypoint from keypoints ? #99

Closed nearkyh closed 2 years ago

nearkyh commented 2 years ago

https://github.com/mks0601/3DMPPE_POSENET_RELEASE/blob/3f92ebaef214a0eb1574b7265e836456fbf3508a/demo/demo.py#L116 에서는 visible를 모두 1로 표시하였는데, 사물 및 기타 환경에 의해 keypoints가 가려져 보이지 않을 경우 해당 keypoints를 확인하고 싶습니다.

예를 들면 아래와 같은 keypoints에서 R_Knee_x와 R_Ankle, L_Knee, L_Ankle가 보이지 않을 경우 visible 형태로 얻고 싶은데 방법이 있을까요? keypoints = [ (Head_top_x, Head_top_y), (Thorax_x, Thorax_y), (R_Shoulder_x, R_Shoulder_y), (R_Elbow_x, R_Elbow_y), (R_Wrist_x, R_Wrist_y), (L_Shoulder_x, L_Shoulder_y), (L_Elbow_x, L_Elbow_y), (L_Wrist_x, L_Wrist_y), (R_Hip_x, R_Hip_y), (R_Knee_x, R_Knee_y), (R_Ankle_x, R_Ankle_y), (L_Hip_x, L_Hip_y), (L_Knee_x, L_Knee_y), (L_Ankle_x, L_Ankle_y), (Pelvis_x, Pelvis_y), (Spine_x, Spine_y), (Head_x, Head_y), (R_Hand_x, R_Hand_y), (L_Hand_x, L_Hand_y), (R_Toe_x, R_Toe_y), (L_Toe_x, L_Toe_y) ] visible = [ True, True, True, True, True, True, True, True, False, False, True, False, False, True, True, True, True, True, True, True, True ]

mks0601 commented 2 years ago

아래 예시가 무엇을 뜻하는지 모르겠지만 추정된 3D heatmap의 score를 이용해서 thresholding을 하면 visible keypoint를 알 수 있습니다.

nearkyh commented 2 years ago

당신의 3D 히트맵 점수에 대한 당신의 뜻을 알 수 있습니다.

죄송합니다~! 다시 이슈 확인부탁드립니다~!

mks0601 commented 2 years ago

캡처 여러 번 이슈를 주고받을 필요가 없도록 질문을 최대한 구체적으로 해주시길 바랍니다. '당신의'로 시작하는 문장은 어떤 걸 의미하신건지 모르겠습니다.

nearkyh commented 2 years ago

이슈 작업이 서툴렀습니다. 죄송합니다 ㅜ.ㅜ

https://github.com/mks0601/3DMPPE_POSENET_RELEASE/blob/3f92ebaef214a0eb1574b7265e836456fbf3508a/demo/demo.py#L116 에서는 visible를 모두 1로 표시하였는데, 사물 및 기타 환경에 의해 keypoints가 가려져 보이지 않을 경우 해당 keypoints를 확인하고 싶습니다.

예를 들면 아래와 같이 keypoints에서 R_Knee_x와 R_Ankle, L_Knee, L_Ankle가 보이지 않을 경우 False로 표시하고, keypoint가 보이는 경우는 True로 하는 visible 형태로 결과를 얻고 싶습니다.

keypoints = [ (Head_top_x, Head_top_y), (Thorax_x, Thorax_y), (R_Shoulder_x, R_Shoulder_y), (R_Elbow_x, R_Elbow_y), (R_Wrist_x, R_Wrist_y), (L_Shoulder_x, L_Shoulder_y), (L_Elbow_x, L_Elbow_y), (L_Wrist_x, L_Wrist_y), (R_Hip_x, R_Hip_y), (R_Knee_x, R_Knee_y), (R_Ankle_x, R_Ankle_y), (L_Hip_x, L_Hip_y), (L_Knee_x, L_Knee_y), (L_Ankle_x, L_Ankle_y), (Pelvis_x, Pelvis_y), (Spine_x, Spine_y), (Head_x, Head_y), (R_Hand_x, R_Hand_y), (L_Hand_x, L_Hand_y), (R_Toe_x, R_Toe_y), (L_Toe_x, L_Toe_y) ]

visible = [ True, True, True, True, True, True, True, True, False, False, True, False, False, True, True, True, True, True, True, True, True ]

mks0601 commented 2 years ago

1에서 model이 pose_3d를 추정하는데요, model은 2에서 return됩니다. 3에서 3D heatmap을 추정하는데, 3D heatmap의 각 joint마다의 maximum activation 크기 등을 이용하여 confidence를 알아낼 수 있고, confidence를 미리 정해둔 threshold (예를 들어, 0.1)과 비교하여 threshold보다 confidence가 낮다면 not visible로 판단할 수 있습니다.

nearkyh commented 2 years ago

답변 감사드립니다~!