''' * @ Date: 2020-09-26 16:52:55 * @ Author: Qing Shuai @ LastEditors: Qing Shuai @ LastEditTime: 2021-05-27 14:33:03 @ FilePath: /EasyMocap/easymocap/dataset/config.py ''' import numpy as np CONFIG = {} CONFIG['smpl'] = {'nJoints': 24, 'kintree': [ [ 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], ], 'joint_names': [ 'MidHip', # 0 'LUpLeg', # 1 'RUpLeg', # 2 'spine', # 3 'LLeg', # 4 'RLeg', # 5 'spine1', # 6 'LFoot', # 7 'RFoot', # 8 'spine2', # 9 'LToeBase', # 10 'RToeBase', # 11 'neck', # 12 'LShoulder', # 13 'RShoulder', # 14 'head', # 15 'LArm', # 16 'RArm', # 17 'LForeArm', # 18 'RForeArm', # 19 'LHand', # 20 'RHand', # 21 'LHandIndex1', # 22 'RHandIndex1', # 23 ] } CONFIG['body25'] = {'nJoints': 25, 'kintree': [[ 1, 0], [ 2, 1], [ 3, 2], [ 4, 3], [ 5, 1], [ 6, 5], [ 7, 6], [ 8, 1], [ 9, 8], [10, 9], [11, 10], [12, 8], [13, 12], [14, 13], [15, 0], [16, 0], [17, 15], [18, 16], [19, 14], [20, 19], [21, 14], [22, 11], [23, 22], [24, 11]], 'joint_names': [ "Nose", "Neck", "RShoulder", "RElbow", "RWrist", "LShoulder", "LElbow", "LWrist", "MidHip", "RHip","RKnee","RAnkle","LHip","LKnee","LAnkle","REye","LEye","REar","LEar","LBigToe","LSmallToe","LHeel","RBigToe","RSmallToe","RHeel"]} CONFIG['body25']['kintree_order'] = [ [1, 8], # 躯干放在最前面 [1, 2], [2, 3], [3, 4], [1, 5], [5, 6], [6, 7], [8, 9], [8, 12], [9, 10], [10, 11], [12, 13], [13, 14], [1, 0], [0, 15], [0, 16], [15, 17], [16, 18], [11, 22], [11, 24], [22, 23], [14, 19], [19, 20], [14, 21] ] CONFIG['body25']['colors'] = ['k', 'r', 'r', 'r', 'b', 'b', 'b', 'k', 'r', 'r', 'r', 'b', 'b', 'b', 'r', 'b', 'r', 'b', 'b', 'b', 'b', 'r', 'r', 'r'] CONFIG['body25']['skeleton'] = \ { ( 0, 1): {'mean': 0.228, 'std': 0.046}, # Nose ->Neck ( 1, 2): {'mean': 0.144, 'std': 0.029}, # Neck ->RShoulder ( 2, 3): {'mean': 0.283, 'std': 0.057}, # RShoulder->RElbow ( 3, 4): {'mean': 0.258, 'std': 0.052}, # RElbow ->RWrist ( 1, 5): {'mean': 0.145, 'std': 0.029}, # Neck ->LShoulder ( 5, 6): {'mean': 0.281, 'std': 0.056}, # LShoulder->LElbow ( 6, 7): {'mean': 0.258, 'std': 0.052}, # LElbow ->LWrist ( 1, 8): {'mean': 0.483, 'std': 0.097}, # Neck ->MidHip ( 8, 9): {'mean': 0.106, 'std': 0.021}, # MidHip ->RHip ( 9, 10): {'mean': 0.438, 'std': 0.088}, # RHip ->RKnee (10, 11): {'mean': 0.406, 'std': 0.081}, # RKnee ->RAnkle ( 8, 12): {'mean': 0.106, 'std': 0.021}, # MidHip ->LHip (12, 13): {'mean': 0.438, 'std': 0.088}, # LHip ->LKnee (13, 14): {'mean': 0.408, 'std': 0.082}, # LKnee ->LAnkle ( 0, 15): {'mean': 0.043, 'std': 0.009}, # Nose ->REye ( 0, 16): {'mean': 0.043, 'std': 0.009}, # Nose ->LEye (15, 17): {'mean': 0.105, 'std': 0.021}, # REye ->REar (16, 18): {'mean': 0.104, 'std': 0.021}, # LEye ->LEar (14, 19): {'mean': 0.180, 'std': 0.036}, # LAnkle ->LBigToe (19, 20): {'mean': 0.038, 'std': 0.008}, # LBigToe ->LSmallToe (14, 21): {'mean': 0.044, 'std': 0.009}, # LAnkle ->LHeel (11, 22): {'mean': 0.182, 'std': 0.036}, # RAnkle ->RBigToe (22, 23): {'mean': 0.038, 'std': 0.008}, # RBigToe ->RSmallToe (11, 24): {'mean': 0.044, 'std': 0.009}, # RAnkle ->RHeel } CONFIG['body15'] = {'nJoints': 15, 'kintree': [[ 1, 0], [ 2, 1], [ 3, 2], [ 4, 3], [ 5, 1], [ 6, 5], [ 7, 6], [ 8, 1], [ 9, 8], [10, 9], [11, 10], [12, 8], [13, 12], [14, 13],]} CONFIG['body15']['joint_names'] = CONFIG['body25']['joint_names'][:15] CONFIG['body15']['skeleton'] = {key: val for key, val in CONFIG['body25']['skeleton'].items() if key[0] < 15 and key[1] < 15} CONFIG['body15']['kintree_order'] = CONFIG['body25']['kintree_order'][:14] CONFIG['body15']['colors'] = CONFIG['body25']['colors'][:15] CONFIG['panoptic'] = { 'nJoints': 19, 'joint_names': ['Neck', 'Nose', 'MidHip', 'LShoulder', 'LElbow', 'LWrist', 'LHip', 'LKnee', 'LAnkle', 'RShoulder','RElbow', 'RWrist', 'RHip','RKnee', 'RAnkle', 'LEye', 'LEar', 'REye', 'REar'] } CONFIG['hand'] = {'kintree': [[ 1, 0], [ 2, 1], [ 3, 2], [ 4, 3], [ 5, 0], [ 6, 5], [ 7, 6], [ 8, 7], [ 9, 0], [10, 9], [11, 10], [12, 11], [13, 0], [14, 13], [15, 14], [16, 15], [17, 0], [18, 17], [19, 18], [20, 19]], 'colors': [ 'k', 'k', 'k', 'k', 'r', 'r', 'r', 'r', 'g', 'g', 'g', 'g', 'b', 'b', 'b', 'b', 'y', 'y', 'y', 'y'] } CONFIG['handl'] = CONFIG['hand'] CONFIG['handr'] = CONFIG['hand'] CONFIG['bodyhand'] = {'kintree': [[ 1, 0], [ 2, 1], [ 3, 2], [ 4, 3], [ 5, 1], [ 6, 5], [ 7, 6], [ 8, 1], [ 9, 8], [10, 9], [11, 10], [12, 8], [13, 12], [14, 13], [15, 0], [16, 0], [17, 15], [18, 16], [19, 14], [20, 19], [21, 14], [22, 11], [23, 22], [24, 11], [26, 7], # handl [27, 26], [28, 27], [29, 28], [30, 7], [31, 30], [32, 31], [33, 32], [34, 7], [35, 34], [36, 35], [37, 36], [38, 7], [39, 38], [40, 39], [41, 40], [42, 7], [43, 42], [44, 43], [45, 44], [47, 4], # handr [48, 47], [49, 48], [50, 49], [51, 4], [52, 51], [53, 52], [54, 53], [55, 4], [56, 55], [57, 56], [58, 57], [59, 4], [60, 59], [61, 60], [62, 61], [63, 4], [64, 63], [65, 64], [66, 65] ], 'nJoints': 67, 'skeleton':{ ( 0, 1): {'mean': 0.251, 'std': 0.050}, ( 1, 2): {'mean': 0.169, 'std': 0.034}, ( 2, 3): {'mean': 0.292, 'std': 0.058}, ( 3, 4): {'mean': 0.275, 'std': 0.055}, ( 1, 5): {'mean': 0.169, 'std': 0.034}, ( 5, 6): {'mean': 0.295, 'std': 0.059}, ( 6, 7): {'mean': 0.278, 'std': 0.056}, ( 1, 8): {'mean': 0.566, 'std': 0.113}, ( 8, 9): {'mean': 0.110, 'std': 0.022}, ( 9, 10): {'mean': 0.398, 'std': 0.080}, (10, 11): {'mean': 0.402, 'std': 0.080}, ( 8, 12): {'mean': 0.111, 'std': 0.022}, (12, 13): {'mean': 0.395, 'std': 0.079}, (13, 14): {'mean': 0.403, 'std': 0.081}, ( 0, 15): {'mean': 0.053, 'std': 0.011}, ( 0, 16): {'mean': 0.056, 'std': 0.011}, (15, 17): {'mean': 0.107, 'std': 0.021}, (16, 18): {'mean': 0.107, 'std': 0.021}, (14, 19): {'mean': 0.180, 'std': 0.036}, (19, 20): {'mean': 0.055, 'std': 0.011}, (14, 21): {'mean': 0.065, 'std': 0.013}, (11, 22): {'mean': 0.169, 'std': 0.034}, (22, 23): {'mean': 0.052, 'std': 0.010}, (11, 24): {'mean': 0.061, 'std': 0.012}, ( 7, 26): {'mean': 0.045, 'std': 0.009}, (26, 27): {'mean': 0.042, 'std': 0.008}, (27, 28): {'mean': 0.035, 'std': 0.007}, (28, 29): {'mean': 0.029, 'std': 0.006}, ( 7, 30): {'mean': 0.102, 'std': 0.020}, (30, 31): {'mean': 0.040, 'std': 0.008}, (31, 32): {'mean': 0.026, 'std': 0.005}, (32, 33): {'mean': 0.023, 'std': 0.005}, ( 7, 34): {'mean': 0.101, 'std': 0.020}, (34, 35): {'mean': 0.043, 'std': 0.009}, (35, 36): {'mean': 0.029, 'std': 0.006}, (36, 37): {'mean': 0.024, 'std': 0.005}, ( 7, 38): {'mean': 0.097, 'std': 0.019}, (38, 39): {'mean': 0.041, 'std': 0.008}, (39, 40): {'mean': 0.027, 'std': 0.005}, (40, 41): {'mean': 0.024, 'std': 0.005}, ( 7, 42): {'mean': 0.095, 'std': 0.019}, (42, 43): {'mean': 0.033, 'std': 0.007}, (43, 44): {'mean': 0.020, 'std': 0.004}, (44, 45): {'mean': 0.018, 'std': 0.004}, ( 4, 47): {'mean': 0.043, 'std': 0.009}, (47, 48): {'mean': 0.041, 'std': 0.008}, (48, 49): {'mean': 0.034, 'std': 0.007}, (49, 50): {'mean': 0.028, 'std': 0.006}, ( 4, 51): {'mean': 0.101, 'std': 0.020}, (51, 52): {'mean': 0.041, 'std': 0.008}, (52, 53): {'mean': 0.026, 'std': 0.005}, (53, 54): {'mean': 0.024, 'std': 0.005}, ( 4, 55): {'mean': 0.100, 'std': 0.020}, (55, 56): {'mean': 0.044, 'std': 0.009}, (56, 57): {'mean': 0.029, 'std': 0.006}, (57, 58): {'mean': 0.023, 'std': 0.005}, ( 4, 59): {'mean': 0.096, 'std': 0.019}, (59, 60): {'mean': 0.040, 'std': 0.008}, (60, 61): {'mean': 0.028, 'std': 0.006}, (61, 62): {'mean': 0.023, 'std': 0.005}, ( 4, 63): {'mean': 0.094, 'std': 0.019}, (63, 64): {'mean': 0.032, 'std': 0.006}, (64, 65): {'mean': 0.020, 'std': 0.004}, (65, 66): {'mean': 0.018, 'std': 0.004}, } } CONFIG['bodyhandface'] = {'kintree': [[ 1, 0], [ 2, 1], [ 3, 2], [ 4, 3], [ 5, 1], [ 6, 5], [ 7, 6], [ 8, 1], [ 9, 8], [10, 9], [11, 10], [12, 8], [13, 12], [14, 13], [15, 0], [16, 0], [17, 15], [18, 16], [19, 14], [20, 19], [21, 14], [22, 11], [23, 22], [24, 11], [26, 7], # handl [27, 26], [28, 27], [29, 28], [30, 7], [31, 30], [32, 31], [33, 32], [34, 7], [35, 34], [36, 35], [37, 36], [38, 7], [39, 38], [40, 39], [41, 40], [42, 7], [43, 42], [44, 43], [45, 44], [47, 4], # handr [48, 47], [49, 48], [50, 49], [51, 4], [52, 51], [53, 52], [54, 53], [55, 4], [56, 55], [57, 56], [58, 57], [59, 4], [60, 59], [61, 60], [62, 61], [63, 4], [64, 63], [65, 64], [66, 65], [ 67, 68], [ 68, 69], [ 69, 70], [ 70, 71], [ 72, 73], [ 73, 74], [ 74, 75], [ 75, 76], [ 77, 78], [ 78, 79], [ 79, 80], [ 81, 82], [ 82, 83], [ 83, 84], [ 84, 85], [ 86, 87], [ 87, 88], [ 88, 89], [ 89, 90], [ 90, 91], [ 91, 86], [ 92, 93], [ 93, 94], [ 94, 95], [ 95, 96], [ 96, 97], [ 97, 92], [ 98, 99], [ 99, 100], [100, 101], [101, 102], [102, 103], [103, 104], [104, 105], [105, 106], [106, 107], [107, 108], [108, 109], [109, 98], [110, 111], [111, 112], [112, 113], [113, 114], [114, 115], [115, 116], [116, 117], [117, 110] ], 'nJoints': 118, 'skeleton':{ ( 0, 1): {'mean': 0.251, 'std': 0.050}, ( 1, 2): {'mean': 0.169, 'std': 0.034}, ( 2, 3): {'mean': 0.292, 'std': 0.058}, ( 3, 4): {'mean': 0.275, 'std': 0.055}, ( 1, 5): {'mean': 0.169, 'std': 0.034}, ( 5, 6): {'mean': 0.295, 'std': 0.059}, ( 6, 7): {'mean': 0.278, 'std': 0.056}, ( 1, 8): {'mean': 0.566, 'std': 0.113}, ( 8, 9): {'mean': 0.110, 'std': 0.022}, ( 9, 10): {'mean': 0.398, 'std': 0.080}, (10, 11): {'mean': 0.402, 'std': 0.080}, ( 8, 12): {'mean': 0.111, 'std': 0.022}, (12, 13): {'mean': 0.395, 'std': 0.079}, (13, 14): {'mean': 0.403, 'std': 0.081}, ( 0, 15): {'mean': 0.053, 'std': 0.011}, ( 0, 16): {'mean': 0.056, 'std': 0.011}, (15, 17): {'mean': 0.107, 'std': 0.021}, (16, 18): {'mean': 0.107, 'std': 0.021}, (14, 19): {'mean': 0.180, 'std': 0.036}, (19, 20): {'mean': 0.055, 'std': 0.011}, (14, 21): {'mean': 0.065, 'std': 0.013}, (11, 22): {'mean': 0.169, 'std': 0.034}, (22, 23): {'mean': 0.052, 'std': 0.010}, (11, 24): {'mean': 0.061, 'std': 0.012}, ( 7, 26): {'mean': 0.045, 'std': 0.009}, (26, 27): {'mean': 0.042, 'std': 0.008}, (27, 28): {'mean': 0.035, 'std': 0.007}, (28, 29): {'mean': 0.029, 'std': 0.006}, ( 7, 30): {'mean': 0.102, 'std': 0.020}, (30, 31): {'mean': 0.040, 'std': 0.008}, (31, 32): {'mean': 0.026, 'std': 0.005}, (32, 33): {'mean': 0.023, 'std': 0.005}, ( 7, 34): {'mean': 0.101, 'std': 0.020}, (34, 35): {'mean': 0.043, 'std': 0.009}, (35, 36): {'mean': 0.029, 'std': 0.006}, (36, 37): {'mean': 0.024, 'std': 0.005}, ( 7, 38): {'mean': 0.097, 'std': 0.019}, (38, 39): {'mean': 0.041, 'std': 0.008}, (39, 40): {'mean': 0.027, 'std': 0.005}, (40, 41): {'mean': 0.024, 'std': 0.005}, ( 7, 42): {'mean': 0.095, 'std': 0.019}, (42, 43): {'mean': 0.033, 'std': 0.007}, (43, 44): {'mean': 0.020, 'std': 0.004}, (44, 45): {'mean': 0.018, 'std': 0.004}, ( 4, 47): {'mean': 0.043, 'std': 0.009}, (47, 48): {'mean': 0.041, 'std': 0.008}, (48, 49): {'mean': 0.034, 'std': 0.007}, (49, 50): {'mean': 0.028, 'std': 0.006}, ( 4, 51): {'mean': 0.101, 'std': 0.020}, (51, 52): {'mean': 0.041, 'std': 0.008}, (52, 53): {'mean': 0.026, 'std': 0.005}, (53, 54): {'mean': 0.024, 'std': 0.005}, ( 4, 55): {'mean': 0.100, 'std': 0.020}, (55, 56): {'mean': 0.044, 'std': 0.009}, (56, 57): {'mean': 0.029, 'std': 0.006}, (57, 58): {'mean': 0.023, 'std': 0.005}, ( 4, 59): {'mean': 0.096, 'std': 0.019}, (59, 60): {'mean': 0.040, 'std': 0.008}, (60, 61): {'mean': 0.028, 'std': 0.006}, (61, 62): {'mean': 0.023, 'std': 0.005}, ( 4, 63): {'mean': 0.094, 'std': 0.019}, (63, 64): {'mean': 0.032, 'std': 0.006}, (64, 65): {'mean': 0.020, 'std': 0.004}, (65, 66): {'mean': 0.018, 'std': 0.004}, (67, 68): {'mean': 0.012, 'std': 0.002}, (68, 69): {'mean': 0.013, 'std': 0.003}, (69, 70): {'mean': 0.014, 'std': 0.003}, (70, 71): {'mean': 0.012, 'std': 0.002}, (72, 73): {'mean': 0.014, 'std': 0.003}, (73, 74): {'mean': 0.014, 'std': 0.003}, (74, 75): {'mean': 0.015, 'std': 0.003}, (75, 76): {'mean': 0.013, 'std': 0.003}, (77, 78): {'mean': 0.014, 'std': 0.003}, (78, 79): {'mean': 0.014, 'std': 0.003}, (79, 80): {'mean': 0.015, 'std': 0.003}, (81, 82): {'mean': 0.009, 'std': 0.002}, (82, 83): {'mean': 0.010, 'std': 0.002}, (83, 84): {'mean': 0.010, 'std': 0.002}, (84, 85): {'mean': 0.010, 'std': 0.002}, (86, 87): {'mean': 0.009, 'std': 0.002}, (87, 88): {'mean': 0.009, 'std': 0.002}, (88, 89): {'mean': 0.008, 'std': 0.002}, (89, 90): {'mean': 0.008, 'std': 0.002}, (90, 91): {'mean': 0.009, 'std': 0.002}, (86, 91): {'mean': 0.008, 'std': 0.002}, (92, 93): {'mean': 0.009, 'std': 0.002}, (93, 94): {'mean': 0.009, 'std': 0.002}, (94, 95): {'mean': 0.009, 'std': 0.002}, (95, 96): {'mean': 0.009, 'std': 0.002}, (96, 97): {'mean': 0.009, 'std': 0.002}, (92, 97): {'mean': 0.009, 'std': 0.002}, (98, 99): {'mean': 0.016, 'std': 0.003}, (99, 100): {'mean': 0.013, 'std': 0.003}, (100, 101): {'mean': 0.008, 'std': 0.002}, (101, 102): {'mean': 0.008, 'std': 0.002}, (102, 103): {'mean': 0.012, 'std': 0.002}, (103, 104): {'mean': 0.014, 'std': 0.003}, (104, 105): {'mean': 0.015, 'std': 0.003}, (105, 106): {'mean': 0.012, 'std': 0.002}, (106, 107): {'mean': 0.009, 'std': 0.002}, (107, 108): {'mean': 0.009, 'std': 0.002}, (108, 109): {'mean': 0.013, 'std': 0.003}, (98, 109): {'mean': 0.016, 'std': 0.003}, (110, 111): {'mean': 0.021, 'std': 0.004}, (111, 112): {'mean': 0.009, 'std': 0.002}, (112, 113): {'mean': 0.008, 'std': 0.002}, (113, 114): {'mean': 0.019, 'std': 0.004}, (114, 115): {'mean': 0.018, 'std': 0.004}, (115, 116): {'mean': 0.008, 'std': 0.002}, (116, 117): {'mean': 0.009, 'std': 0.002}, (110, 117): {'mean': 0.020, 'std': 0.004}, } } face_kintree_without_contour = [[ 0, 1], [ 1, 2], [ 2, 3], [ 3, 4], [ 5, 6], [ 6, 7], [ 7, 8], [ 8, 9], [10, 11], [11, 12], [12, 13], [14, 15], [15, 16], [16, 17], [17, 18], [19, 20], [20, 21], [21, 22], [22, 23], [23, 24], [24, 19], [25, 26], [26, 27], [27, 28], [28, 29], [29, 30], [30, 25], [31, 32], [32, 33], [33, 34], [34, 35], [35, 36], [36, 37], [37, 38], [38, 39], [39, 40], [40, 41], [41, 42], [42, 31], [43, 44], [44, 45], [45, 46], [46, 47], [47, 48], [48, 49], [49, 50], [50, 43]] CONFIG['face'] = {'kintree':[ [0,1],[1,2],[2,3],[3,4],[4,5],[5,6],[6,7],[7,8],[8,9],[9,10],[10,11],[11,12],[12,13],[13,14],[14,15],[15,16], #outline (ignored) [17,18],[18,19],[19,20],[20,21], #right eyebrow [22,23],[23,24],[24,25],[25,26], #left eyebrow [27,28],[28,29],[29,30], #nose upper part [31,32],[32,33],[33,34],[34,35], #nose lower part [36,37],[37,38],[38,39],[39,40],[40,41],[41,36], #right eye [42,43],[43,44],[44,45],[45,46],[46,47],[47,42], #left eye [48,49],[49,50],[50,51],[51,52],[52,53],[53,54],[54,55],[55,56],[56,57],[57,58],[58,59],[59,48], #Lip outline [60,61],[61,62],[62,63],[63,64],[64,65],[65,66],[66,67],[67,60] #Lip inner line ], 'colors': ['g' for _ in range(100)]} CONFIG['h36m'] = { 'kintree': [[0, 1], [1, 2], [2, 3], [0, 4], [4, 5], [5, 6], [0, 7], [7, 8], [8, 9], [9, 10], [8, 11], [11, 12], [ 12, 13], [8, 14], [14, 15], [15, 16]], 'color': ['r', 'r', 'r', 'g', 'g', 'g', 'k', 'k', 'k', 'k', 'g', 'g', 'g', 'r', 'r', 'r'], 'joint_names': [ 'hip', # 0 'LHip', # 1 'LKnee', # 2 'LAnkle', # 3 'RHip', # 4 'RKnee', # 5 'RAnkle', # 6 'Spine (H36M)', # 7 'Neck', # 8 'Head (H36M)', # 9 'headtop', # 10 'LShoulder', # 11 'LElbow', # 12 'LWrist', # 13 'RShoulder', # 14 'RElbow', # 15 'RWrist', # 16 ], 'nJoints': 17} NJOINTS_BODY = 25 NJOINTS_HAND = 21 NJOINTS_FACE = 70 NLIMBS_BODY = len(CONFIG['body25']['kintree']) NLIMBS_HAND = len(CONFIG['hand']['kintree']) NLIMBS_FACE = len(CONFIG['face']['kintree']) def getKintree(name='total'): if name == 'total': # order: body25, face, rhand, lhand kintree = CONFIG['body25']['kintree'] + CONFIG['hand']['kintree'] + CONFIG['hand']['kintree'] + CONFIG['face']['kintree'] kintree = np.array(kintree) kintree[NLIMBS_BODY:NLIMBS_BODY + NLIMBS_HAND] += NJOINTS_BODY kintree[NLIMBS_BODY + NLIMBS_HAND:NLIMBS_BODY + 2*NLIMBS_HAND] += NJOINTS_BODY + NJOINTS_HAND kintree[NLIMBS_BODY + 2*NLIMBS_HAND:] += NJOINTS_BODY + 2*NJOINTS_HAND elif name == 'smplh': # order: body25, lhand, rhand kintree = CONFIG['body25']['kintree'] + CONFIG['hand']['kintree'] + CONFIG['hand']['kintree'] kintree = np.array(kintree) kintree[NLIMBS_BODY:NLIMBS_BODY + NLIMBS_HAND] += NJOINTS_BODY kintree[NLIMBS_BODY + NLIMBS_HAND:NLIMBS_BODY + 2*NLIMBS_HAND] += NJOINTS_BODY + NJOINTS_HAND return kintree CONFIG['total'] = {} CONFIG['total']['kintree'] = getKintree('total') CONFIG['total']['nJoints'] = 137 COCO17_IN_BODY25 = [0,16,15,18,17,5,2,6,3,7,4,12,9,13,10,14,11] CONFIG['bodyhandface']['joint_names'] = CONFIG['body25']['joint_names'] def coco17tobody25(points2d): dim = 3 if len(points2d.shape) == 2: points2d = points2d[None, :, :] dim = 2 kpts = np.zeros((points2d.shape[0], 25, 3)) kpts[:, COCO17_IN_BODY25, :2] = points2d[:, :, :2] kpts[:, COCO17_IN_BODY25, 2:3] = points2d[:, :, 2:3] kpts[:, 8, :2] = kpts[:, [9, 12], :2].mean(axis=1) kpts[:, 8, 2] = kpts[:, [9, 12], 2].min(axis=1) kpts[:, 1, :2] = kpts[:, [2, 5], :2].mean(axis=1) kpts[:, 1, 2] = kpts[:, [2, 5], 2].min(axis=1) if dim == 2: kpts = kpts[0] return kpts for skeltype, config in CONFIG.items(): if 'joint_names' in config.keys(): torsoid = [config['joint_names'].index(name) if name in config['joint_names'] else None for name in ['LShoulder', 'RShoulder', 'LHip', 'RHip']] torsoid = [i for i in torsoid if i is not None] config['torso'] = torsoid