Spaces:
Sleeping
Sleeping
| import numpy as np | |
| import torch | |
| lower_pose = torch.tensor( | |
| [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0747, -0.0158, -0.0152, -1.1826512813568115, 0.23866955935955048, | |
| 0.15146760642528534, -1.2604516744613647, -0.3160211145877838, | |
| -0.1603458970785141, 1.1654603481292725, 0.0, 0.0, 1.2521806955337524, 0.041598282754421234, -0.06312154978513718, | |
| 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) | |
| lower_pose_stand = torch.tensor([ | |
| 8.9759e-04, 7.1074e-04, -5.9163e-06, 8.9759e-04, 7.1074e-04, -5.9163e-06, | |
| 3.0747, -0.0158, -0.0152, | |
| -3.6665e-01, -8.8455e-03, 1.6113e-01, -3.6665e-01, -8.8455e-03, 1.6113e-01, | |
| -3.9716e-01, -4.0229e-02, -1.2637e-01, | |
| 7.9163e-01, 6.8519e-02, -1.5091e-01, 7.9163e-01, 6.8519e-02, -1.5091e-01, | |
| 7.8632e-01, -4.3810e-02, 1.4375e-02, | |
| -1.0675e-01, 1.2635e-01, 1.6711e-02, -1.0675e-01, 1.2635e-01, 1.6711e-02, ]) | |
| # lower_pose_stand = torch.tensor( | |
| # [6.4919e-02, 3.3018e-02, 1.7485e-02, 8.9759e-04, 7.1074e-04, -5.9163e-06, | |
| # 3.0747, -0.0158, -0.0152, | |
| # -3.3633e+00, -9.3915e-02, 3.0996e-01, -3.6665e-01, -8.8455e-03, 1.6113e-01, | |
| # 1.1654603481292725, 0.0, 0.0, | |
| # 4.4167e-01, 6.7183e-03, -3.6379e-03, 7.9163e-01, 6.8519e-02, -1.5091e-01, | |
| # 0.0, 0.0, 0.0, | |
| # 2.2910e-02, -2.4797e-02, -5.5657e-03, -1.0675e-01, 1.2635e-01, 1.6711e-02,]) | |
| lower_body = [0, 1, 3, 4, 6, 7, 9, 10] | |
| count_part = [6, 9, 12, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, | |
| 29, 30, 31, 32, 33, 34, 35, 36, 37, | |
| 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54] | |
| fix_index = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, | |
| 29, | |
| 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, | |
| 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, | |
| 65, 66, 67, 68, 69, 70, 71, 72, 73, 74] | |
| all_index = np.ones(275) | |
| all_index[fix_index] = 0 | |
| c_index = [] | |
| i = 0 | |
| for num in all_index: | |
| if num == 1: | |
| c_index.append(i) | |
| i = i + 1 | |
| c_index = np.asarray(c_index) | |
| fix_index_3d = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, | |
| 21, 22, 23, 24, 25, 26, | |
| 30, 31, 32, 33, 34, 35, | |
| 45, 46, 47, 48, 49, 50] | |
| all_index_3d = np.ones(165) | |
| all_index_3d[fix_index_3d] = 0 | |
| c_index_3d = [] | |
| i = 0 | |
| for num in all_index_3d: | |
| if num == 1: | |
| c_index_3d.append(i) | |
| i = i + 1 | |
| c_index_3d = np.asarray(c_index_3d) | |
| c_index_6d = [] | |
| i = 0 | |
| for num in all_index_3d: | |
| if num == 1: | |
| c_index_6d.append(2*i) | |
| c_index_6d.append(2 * i + 1) | |
| i = i + 1 | |
| c_index_6d = np.asarray(c_index_6d) | |
| def part2full(input, stand=False): | |
| if stand: | |
| # lp = lower_pose_stand.unsqueeze(dim=0).repeat(input.shape[0], 1).to(input.device) | |
| lp = torch.zeros_like(lower_pose) | |
| lp[6:9] = torch.tensor([3.0747, -0.0158, -0.0152]) | |
| lp = lp.unsqueeze(dim=0).repeat(input.shape[0], 1).to(input.device) | |
| else: | |
| lp = lower_pose.unsqueeze(dim=0).repeat(input.shape[0], 1).to(input.device) | |
| input = torch.cat([input[:, :3], | |
| lp[:, :15], | |
| input[:, 3:6], | |
| lp[:, 15:21], | |
| input[:, 6:9], | |
| lp[:, 21:27], | |
| input[:, 9:12], | |
| lp[:, 27:], | |
| input[:, 12:]] | |
| , dim=1) | |
| return input | |
| def pred2poses(input, gt): | |
| input = torch.cat([input[:, :3], | |
| gt[0:1, 3:18].repeat(input.shape[0], 1), | |
| input[:, 3:6], | |
| gt[0:1, 21:27].repeat(input.shape[0], 1), | |
| input[:, 6:9], | |
| gt[0:1, 30:36].repeat(input.shape[0], 1), | |
| input[:, 9:12], | |
| gt[0:1, 39:45].repeat(input.shape[0], 1), | |
| input[:, 12:]] | |
| , dim=1) | |
| return input | |
| def poses2poses(input, gt): | |
| input = torch.cat([input[:, :3], | |
| gt[0:1, 3:18].repeat(input.shape[0], 1), | |
| input[:, 18:21], | |
| gt[0:1, 21:27].repeat(input.shape[0], 1), | |
| input[:, 27:30], | |
| gt[0:1, 30:36].repeat(input.shape[0], 1), | |
| input[:, 36:39], | |
| gt[0:1, 39:45].repeat(input.shape[0], 1), | |
| input[:, 45:]] | |
| , dim=1) | |
| return input | |
| def poses2pred(input, stand=False): | |
| if stand: | |
| lp = lower_pose_stand.unsqueeze(dim=0).repeat(input.shape[0], 1).to(input.device) | |
| # lp = torch.zeros_like(lower_pose).unsqueeze(dim=0).repeat(input.shape[0], 1).to(input.device) | |
| else: | |
| lp = lower_pose.unsqueeze(dim=0).repeat(input.shape[0], 1).to(input.device) | |
| input = torch.cat([input[:, :3], | |
| lp[:, :15], | |
| input[:, 18:21], | |
| lp[:, 15:21], | |
| input[:, 27:30], | |
| lp[:, 21:27], | |
| input[:, 36:39], | |
| lp[:, 27:], | |
| input[:, 45:]] | |
| , dim=1) | |
| return input | |
| rearrange = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]\ | |
| # ,22, 23, 24, 25, 40, 26, 41, | |
| # 27, 42, 28, 43, 29, 44, 30, 45, 31, 46, 32, 47, 33, 48, 34, 49, 35, 50, 36, 51, 37, 52, 38, 53, 39, 54, 55, | |
| # 57, 56, 59, 58, 60, 63, 61, 64, 62, 65, 66, 71, 67, 72, 68, 73, 69, 74, 70, 75] | |
| symmetry = [0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1]#, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | |
| # 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | |
| # 1, 1, 1, 1, 1, 1] | |