MCPcopy Create free account
hub / github.com/AdaptiveMotorControlLab/FMPose3D / coco_h36m

Function coco_h36m

fmpose3d/lib/preprocess.py:18–45  ·  view source on GitHub ↗
(keypoints)

Source from the content-addressed store, hash-verified

16spple_keypoints = [10, 8, 0, 7]
17
18def coco_h36m(keypoints):
19 temporal = keypoints.shape[0]
20 keypoints_h36m = np.zeros_like(keypoints, dtype=np.float32)
21 htps_keypoints = np.zeros((temporal, 4, 2), dtype=np.float32)
22
23 # htps_keypoints: head, thorax, pelvis, spine
24 htps_keypoints[:, 0, 0] = np.mean(keypoints[:, 1:5, 0], axis=1, dtype=np.float32)
25 htps_keypoints[:, 0, 1] = np.sum(keypoints[:, 1:3, 1], axis=1, dtype=np.float32) - keypoints[:, 0, 1]
26 htps_keypoints[:, 1, :] = np.mean(keypoints[:, 5:7, :], axis=1, dtype=np.float32)
27 htps_keypoints[:, 1, :] += (keypoints[:, 0, :] - htps_keypoints[:, 1, :]) / 3
28
29 htps_keypoints[:, 2, :] = np.mean(keypoints[:, 11:13, :], axis=1, dtype=np.float32)
30 htps_keypoints[:, 3, :] = np.mean(keypoints[:, [5, 6, 11, 12], :], axis=1, dtype=np.float32)
31
32 keypoints_h36m[:, spple_keypoints, :] = htps_keypoints
33 keypoints_h36m[:, h36m_coco_order, :] = keypoints[:, coco_order, :]
34
35 keypoints_h36m[:, 9, :] -= (keypoints_h36m[:, 9, :] - np.mean(keypoints[:, 5:7, :], axis=1, dtype=np.float32)) / 4
36 keypoints_h36m[:, 7, 0] += 2*(keypoints_h36m[:, 7, 0] - np.mean(keypoints_h36m[:, [0, 8], 0], axis=1, dtype=np.float32))
37 keypoints_h36m[:, 8, 1] -= (np.mean(keypoints[:, 1:3, 1], axis=1, dtype=np.float32) - keypoints[:, 0, 1])*2/3
38
39 # half body: the joint of ankle and knee equal to hip
40 # keypoints_h36m[:, [2, 3]] = keypoints_h36m[:, [1, 1]]
41 # keypoints_h36m[:, [5, 6]] = keypoints_h36m[:, [4, 4]]
42
43 valid_frames = np.where(np.sum(keypoints_h36m.reshape(-1, 34), axis=1) != 0)[0]
44
45 return keypoints_h36m, valid_frames
46
47
48def h36m_coco_format(keypoints, scores):

Callers 1

h36m_coco_formatFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected