| |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| import numpy as np |
|
|
| def keypoint_hflip(kp, img_width): |
| |
| |
| if len(kp.shape) == 2: |
| kp[:,0] = (img_width - 1.) - kp[:,0] |
| elif len(kp.shape) == 3: |
| kp[:, :, 0] = (img_width - 1.) - kp[:, :, 0] |
| return kp |
|
|
| def convert_kps(joints2d, src, dst): |
| src_names = eval(f'get_{src}_joint_names')() |
| dst_names = eval(f'get_{dst}_joint_names')() |
|
|
| out_joints2d = np.zeros((joints2d.shape[0], len(dst_names), 3)) |
|
|
| for idx, jn in enumerate(dst_names): |
| if jn in src_names: |
| out_joints2d[:, idx] = joints2d[:, src_names.index(jn)] |
|
|
| return out_joints2d |
|
|
| def get_perm_idxs(src, dst): |
| src_names = eval(f'get_{src}_joint_names')() |
| dst_names = eval(f'get_{dst}_joint_names')() |
| idxs = [src_names.index(h) for h in dst_names if h in src_names] |
| return idxs |
|
|
| def get_mpii3d_test_joint_names(): |
| return [ |
| 'headtop', |
| 'neck', |
| 'rshoulder', |
| 'relbow', |
| 'rwrist', |
| 'lshoulder', |
| 'lelbow', |
| 'lwrist', |
| 'rhip', |
| 'rknee', |
| 'rankle', |
| 'lhip', |
| 'lknee', |
| 'lankle', |
| 'hip', |
| 'Spine (H36M)', |
| 'Head (H36M)', |
| ] |
|
|
| def get_mpii3d_joint_names(): |
| return [ |
| 'spine3', |
| 'spine4', |
| 'spine2', |
| 'Spine (H36M)', |
| 'hip', |
| 'neck', |
| 'Head (H36M)', |
| "headtop", |
| 'left_clavicle', |
| "lshoulder", |
| "lelbow", |
| "lwrist", |
| 'left_hand', |
| 'right_clavicle', |
| 'rshoulder', |
| 'relbow', |
| 'rwrist', |
| 'right_hand', |
| 'lhip', |
| 'lknee', |
| 'lankle', |
| 'left_foot', |
| 'left_toe', |
| "rhip", |
| "rknee", |
| "rankle", |
| 'right_foot', |
| 'right_toe' |
| ] |
|
|
| def get_insta_joint_names(): |
| return [ |
| 'OP RHeel', |
| 'OP RKnee', |
| 'OP RHip', |
| 'OP LHip', |
| 'OP LKnee', |
| 'OP LHeel', |
| 'OP RWrist', |
| 'OP RElbow', |
| 'OP RShoulder', |
| 'OP LShoulder', |
| 'OP LElbow', |
| 'OP LWrist', |
| 'OP Neck', |
| 'headtop', |
| 'OP Nose', |
| 'OP LEye', |
| 'OP REye', |
| 'OP LEar', |
| 'OP REar', |
| 'OP LBigToe', |
| 'OP RBigToe', |
| 'OP LSmallToe', |
| 'OP RSmallToe', |
| 'OP LAnkle', |
| 'OP RAnkle', |
| ] |
|
|
| def get_insta_skeleton(): |
| return np.array( |
| [ |
| [0 , 1], |
| [1 , 2], |
| [2 , 3], |
| [3 , 4], |
| [4 , 5], |
| [6 , 7], |
| [7 , 8], |
| [8 , 9], |
| [9 ,10], |
| [2 , 8], |
| [3 , 9], |
| [10,11], |
| [8 ,12], |
| [9 ,12], |
| [12,13], |
| [12,14], |
| [14,15], |
| [14,16], |
| [15,17], |
| [16,18], |
| [0 ,20], |
| [20,22], |
| [5 ,19], |
| [19,21], |
| [5 ,23], |
| [0 ,24], |
| ]) |
|
|
| def get_staf_skeleton(): |
| return np.array( |
| [ |
| [0, 1], |
| [1, 2], |
| [2, 3], |
| [3, 4], |
| [1, 5], |
| [5, 6], |
| [6, 7], |
| [1, 8], |
| [8, 9], |
| [9, 10], |
| [10, 11], |
| [8, 12], |
| [12, 13], |
| [13, 14], |
| [0, 15], |
| [0, 16], |
| [15, 17], |
| [16, 18], |
| [2, 9], |
| [5, 12], |
| [1, 19], |
| [20, 19], |
| ] |
| ) |
|
|
| def get_staf_joint_names(): |
| return [ |
| 'OP Nose', |
| 'OP Neck', |
| 'OP RShoulder', |
| 'OP RElbow', |
| 'OP RWrist', |
| 'OP LShoulder', |
| 'OP LElbow', |
| 'OP LWrist', |
| 'OP MidHip', |
| 'OP RHip', |
| 'OP RKnee', |
| 'OP RAnkle', |
| 'OP LHip', |
| 'OP LKnee', |
| 'OP LAnkle', |
| 'OP REye', |
| 'OP LEye', |
| 'OP REar', |
| 'OP LEar', |
| 'Neck (LSP)', |
| 'Top of Head (LSP)', |
| ] |
|
|
| def get_spin_joint_names(): |
| return [ |
| 'OP Nose', |
| 'OP Neck', |
| 'OP RShoulder', |
| 'OP RElbow', |
| 'OP RWrist', |
| 'OP LShoulder', |
| 'OP LElbow', |
| 'OP LWrist', |
| 'OP MidHip', |
| 'OP RHip', |
| 'OP RKnee', |
| 'OP RAnkle', |
| 'OP LHip', |
| 'OP LKnee', |
| 'OP LAnkle', |
| 'OP REye', |
| 'OP LEye', |
| 'OP REar', |
| 'OP LEar', |
| 'OP LBigToe', |
| 'OP LSmallToe', |
| 'OP LHeel', |
| 'OP RBigToe', |
| 'OP RSmallToe', |
| 'OP RHeel', |
| 'rankle', |
| 'rknee', |
| 'rhip', |
| 'lhip', |
| 'lknee', |
| 'lankle', |
| 'rwrist', |
| 'relbow', |
| 'rshoulder', |
| 'lshoulder', |
| 'lelbow', |
| 'lwrist', |
| 'neck', |
| 'headtop', |
| 'hip', |
| 'thorax', |
| 'Spine (H36M)', |
| 'Jaw (H36M)', |
| 'Head (H36M)', |
| 'nose', |
| 'leye', |
| 'reye', |
| 'lear', |
| 'rear', |
| ] |
|
|
| def get_h36m_joint_names(): |
| return [ |
| 'hip', |
| 'lhip', |
| 'lknee', |
| 'lankle', |
| 'rhip', |
| 'rknee', |
| 'rankle', |
| 'Spine (H36M)', |
| 'neck', |
| 'Head (H36M)', |
| 'headtop', |
| 'lshoulder', |
| 'lelbow', |
| 'lwrist', |
| 'rshoulder', |
| 'relbow', |
| 'rwrist', |
| ] |
|
|
| def get_spin_skeleton(): |
| return np.array( |
| [ |
| [0 , 1], |
| [1 , 2], |
| [2 , 3], |
| [3 , 4], |
| [1 , 5], |
| [5 , 6], |
| [6 , 7], |
| [1 , 8], |
| [8 , 9], |
| [9 ,10], |
| [10,11], |
| [8 ,12], |
| [12,13], |
| [13,14], |
| [0 ,15], |
| [0 ,16], |
| [15,17], |
| [16,18], |
| [21,19], |
| [19,20], |
| [14,21], |
| [11,24], |
| [24,22], |
| [22,23], |
| [0 ,38], |
| ] |
| ) |
|
|
| def get_posetrack_joint_names(): |
| return [ |
| "nose", |
| "neck", |
| "headtop", |
| "lear", |
| "rear", |
| "lshoulder", |
| "rshoulder", |
| "lelbow", |
| "relbow", |
| "lwrist", |
| "rwrist", |
| "lhip", |
| "rhip", |
| "lknee", |
| "rknee", |
| "lankle", |
| "rankle" |
| ] |
|
|
| def get_posetrack_original_kp_names(): |
| return [ |
| 'nose', |
| 'head_bottom', |
| 'head_top', |
| 'left_ear', |
| 'right_ear', |
| 'left_shoulder', |
| 'right_shoulder', |
| 'left_elbow', |
| 'right_elbow', |
| 'left_wrist', |
| 'right_wrist', |
| 'left_hip', |
| 'right_hip', |
| 'left_knee', |
| 'right_knee', |
| 'left_ankle', |
| 'right_ankle' |
| ] |
|
|
| def get_pennaction_joint_names(): |
| return [ |
| "headtop", |
| "lshoulder", |
| "rshoulder", |
| "lelbow", |
| "relbow", |
| "lwrist", |
| "rwrist", |
| "lhip" , |
| "rhip" , |
| "lknee", |
| "rknee" , |
| "lankle", |
| "rankle" |
| ] |
|
|
| def get_common_joint_names(): |
| return [ |
| "rankle", |
| "rknee", |
| "rhip", |
| "lhip", |
| "lknee", |
| "lankle", |
| "rwrist", |
| "relbow", |
| "rshoulder", |
| "lshoulder", |
| "lelbow", |
| "lwrist", |
| "neck", |
| "headtop", |
| ] |
|
|
| def get_common_skeleton(): |
| return np.array( |
| [ |
| [ 0, 1 ], |
| [ 1, 2 ], |
| [ 3, 4 ], |
| [ 4, 5 ], |
| [ 6, 7 ], |
| [ 7, 8 ], |
| [ 8, 2 ], |
| [ 8, 9 ], |
| [ 9, 3 ], |
| [ 2, 3 ], |
| [ 8, 12], |
| [ 9, 10], |
| [12, 9 ], |
| [10, 11], |
| [12, 13], |
| ] |
| ) |
|
|
| def get_coco_joint_names(): |
| return [ |
| "nose", |
| "leye", |
| "reye", |
| "lear", |
| "rear", |
| "lshoulder", |
| "rshoulder", |
| "lelbow", |
| "relbow", |
| "lwrist", |
| "rwrist", |
| "lhip", |
| "rhip", |
| "lknee", |
| "rknee", |
| "lankle", |
| "rankle", |
| ] |
|
|
| def get_coco_skeleton(): |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| return np.array( |
| [ |
| [15, 13], |
| [13, 11], |
| [16, 14], |
| [14, 12], |
| [11, 12], |
| [ 5, 11], |
| [ 6, 12], |
| [ 5, 6 ], |
| [ 5, 7 ], |
| [ 6, 8 ], |
| [ 7, 9 ], |
| [ 8, 10], |
| [ 1, 2 ], |
| [ 0, 1 ], |
| [ 0, 2 ], |
| [ 1, 3 ], |
| [ 2, 4 ], |
| [ 3, 5 ], |
| [ 4, 6 ] |
| ] |
| ) |
|
|
| def get_mpii_joint_names(): |
| return [ |
| "rankle", |
| "rknee", |
| "rhip", |
| "lhip", |
| "lknee", |
| "lankle", |
| "hip", |
| "thorax", |
| "neck", |
| "headtop", |
| "rwrist", |
| "relbow", |
| "rshoulder", |
| "lshoulder", |
| "lelbow", |
| "lwrist", |
| ] |
|
|
| def get_mpii_skeleton(): |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| return np.array( |
| [ |
| [ 0, 1 ], |
| [ 1, 2 ], |
| [ 2, 6 ], |
| [ 6, 3 ], |
| [ 3, 4 ], |
| [ 4, 5 ], |
| [ 6, 7 ], |
| [ 7, 8 ], |
| [ 8, 9 ], |
| [ 7, 12], |
| [12, 11], |
| [11, 10], |
| [ 7, 13], |
| [13, 14], |
| [14, 15] |
| ] |
| ) |
|
|
| def get_aich_joint_names(): |
| return [ |
| "rshoulder", |
| "relbow", |
| "rwrist", |
| "lshoulder", |
| "lelbow", |
| "lwrist", |
| "rhip", |
| "rknee", |
| "rankle", |
| "lhip", |
| "lknee", |
| "lankle", |
| "headtop", |
| "neck", |
| ] |
|
|
| def get_aich_skeleton(): |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| return np.array( |
| [ |
| [ 0, 1 ], |
| [ 1, 2 ], |
| [ 3, 4 ], |
| [ 4, 5 ], |
| [ 6, 7 ], |
| [ 7, 8 ], |
| [ 9, 10], |
| [10, 11], |
| [12, 13], |
| [13, 0 ], |
| [13, 3 ], |
| [ 0, 6 ], |
| [ 3, 9 ] |
| ] |
| ) |
|
|
| def get_3dpw_joint_names(): |
| return [ |
| "nose", |
| "thorax", |
| "rshoulder", |
| "relbow", |
| "rwrist", |
| "lshoulder", |
| "lelbow", |
| "lwrist", |
| "rhip", |
| "rknee", |
| "rankle", |
| "lhip", |
| "lknee", |
| "lankle", |
| ] |
|
|
| def get_3dpw_skeleton(): |
| return np.array( |
| [ |
| [ 0, 1 ], |
| [ 1, 2 ], |
| [ 2, 3 ], |
| [ 3, 4 ], |
| [ 1, 5 ], |
| [ 5, 6 ], |
| [ 6, 7 ], |
| [ 2, 8 ], |
| [ 5, 11], |
| [ 8, 11], |
| [ 8, 9 ], |
| [ 9, 10], |
| [11, 12], |
| [12, 13] |
| ] |
| ) |
|
|
| def get_smplcoco_joint_names(): |
| return [ |
| "rankle", |
| "rknee", |
| "rhip", |
| "lhip", |
| "lknee", |
| "lankle", |
| "rwrist", |
| "relbow", |
| "rshoulder", |
| "lshoulder", |
| "lelbow", |
| "lwrist", |
| "neck", |
| "headtop", |
| "nose", |
| "leye", |
| "reye", |
| "lear", |
| "rear", |
| ] |
|
|
| def get_smplcoco_skeleton(): |
| return np.array( |
| [ |
| [ 0, 1 ], |
| [ 1, 2 ], |
| [ 3, 4 ], |
| [ 4, 5 ], |
| [ 6, 7 ], |
| [ 7, 8 ], |
| [ 8, 12], |
| [12, 9 ], |
| [ 9, 10], |
| [10, 11], |
| [12, 13], |
| [14, 15], |
| [15, 17], |
| [16, 18], |
| [14, 16], |
| [ 8, 2 ], |
| [ 9, 3 ], |
| [ 2, 3 ], |
| ] |
| ) |
|
|
| def get_smpl_joint_names(): |
| return [ |
| 'hips', |
| 'leftUpLeg', |
| 'rightUpLeg', |
| 'spine', |
| 'leftLeg', |
| 'rightLeg', |
| 'spine1', |
| 'leftFoot', |
| 'rightFoot', |
| 'spine2', |
| 'leftToeBase', |
| 'rightToeBase', |
| 'neck', |
| 'leftShoulder', |
| 'rightShoulder', |
| 'head', |
| 'leftArm', |
| 'rightArm', |
| 'leftForeArm', |
| 'rightForeArm', |
| 'leftHand', |
| 'rightHand', |
| 'leftHandIndex1', |
| 'rightHandIndex1', |
| ] |
|
|
| def get_smpl_skeleton(): |
| return np.array( |
| [ |
| [ 0, 1 ], |
| [ 0, 2 ], |
| [ 0, 3 ], |
| [ 1, 4 ], |
| [ 2, 5 ], |
| [ 3, 6 ], |
| [ 4, 7 ], |
| [ 5, 8 ], |
| [ 6, 9 ], |
| [ 7, 10], |
| [ 8, 11], |
| [ 9, 12], |
| [ 9, 13], |
| [ 9, 14], |
| [12, 15], |
| [13, 16], |
| [14, 17], |
| [16, 18], |
| [17, 19], |
| [18, 20], |
| [19, 21], |
| [20, 22], |
| [21, 23], |
| ] |
| ) |