| | import numpy as np |
| | import glob |
| | import os |
| | import pickle |
| | import lmdb |
| | import pyarrow |
| | import fasttext |
| | from loguru import logger |
| | from scipy import linalg |
| | from .pymo.parsers import BVHParser |
| | from .pymo.viz_tools import * |
| | from .pymo.preprocessing import * |
| |
|
| |
|
| |
|
| |
|
| | |
| | joints_list = { |
| | "trinity_joints":{ |
| | 'Hips': [6,6], |
| | 'Spine': [3,9], |
| | 'Spine1': [3,12], |
| | 'Spine2': [3,15], |
| | 'Spine3': [3,18], |
| | 'Neck': [3,21], |
| | 'Neck1': [3,24], |
| | 'Head': [3,27], |
| | 'RShoulder': [3,30], |
| | 'RArm': [3,33], |
| | 'RArm1': [3,36], |
| | 'RHand': [3,39], |
| | 'RHandT1': [3,42], |
| | 'RHandT2': [3,45], |
| | 'RHandT3': [3,48], |
| | 'RHandI1': [3,51], |
| | 'RHandI2': [3,54], |
| | 'RHandI3': [3,57], |
| | 'RHandM1': [3,60], |
| | 'RHandM2': [3,63], |
| | 'RHandM3': [3,66], |
| | 'RHandR1': [3,69], |
| | 'RHandR2': [3,72], |
| | 'RHandR3': [3,75], |
| | 'RHandP1': [3,78], |
| | 'RHandP2': [3,81], |
| | 'RHandP3': [3,84], |
| | 'LShoulder': [3,87], |
| | 'LArm': [3,90], |
| | 'LArm1': [3,93], |
| | 'LHand': [3,96], |
| | 'LHandT1': [3,99], |
| | 'LHandT2': [3,102], |
| | 'LHandT3': [3,105], |
| | 'LHandI1': [3,108], |
| | 'LHandI2': [3,111], |
| | 'LHandI3': [3,114], |
| | 'LHandM1': [3,117], |
| | 'LHandM2': [3,120], |
| | 'LHandM3': [3,123], |
| | 'LHandR1': [3,126], |
| | 'LHandR2': [3,129], |
| | 'LHandR3': [3,132], |
| | 'LHandP1': [3,135], |
| | 'LHandP2': [3,138], |
| | 'LHandP3': [3,141], |
| | 'RUpLeg': [3,144], |
| | 'RLeg': [3,147], |
| | 'RFoot': [3,150], |
| | 'RFootF': [3,153], |
| | 'RToeBase': [3,156], |
| | 'LUpLeg': [3,159], |
| | 'LLeg': [3,162], |
| | 'LFoot': [3,165], |
| | 'LFootF': [3,168], |
| | 'LToeBase': [3,171],}, |
| | "trinity_joints_123":{ |
| | 'Spine': 3 , |
| | 'Neck': 3 , |
| | 'Neck1': 3 , |
| | 'RShoulder': 3 , |
| | 'RArm': 3 , |
| | 'RArm1': 3 , |
| | 'RHand': 3 , |
| | 'RHandT1': 3 , |
| | 'RHandT2': 3 , |
| | 'RHandT3': 3 , |
| | 'RHandI1': 3 , |
| | 'RHandI2': 3 , |
| | 'RHandI3': 3 , |
| | 'RHandM1': 3 , |
| | 'RHandM2': 3 , |
| | 'RHandM3': 3 , |
| | 'RHandR1': 3 , |
| | 'RHandR2': 3 , |
| | 'RHandR3': 3 , |
| | 'RHandP1': 3 , |
| | 'RHandP2': 3 , |
| | 'RHandP3': 3 , |
| | 'LShoulder': 3 , |
| | 'LArm': 3 , |
| | 'LArm1': 3 , |
| | 'LHand': 3 , |
| | 'LHandT1': 3 , |
| | 'LHandT2': 3 , |
| | 'LHandT3': 3 , |
| | 'LHandI1': 3 , |
| | 'LHandI2': 3 , |
| | 'LHandI3': 3 , |
| | 'LHandM1': 3 , |
| | 'LHandM2': 3 , |
| | 'LHandM3': 3 , |
| | 'LHandR1': 3 , |
| | 'LHandR2': 3 , |
| | 'LHandR3': 3 , |
| | 'LHandP1': 3 , |
| | 'LHandP2': 3 , |
| | 'LHandP3': 3 ,}, |
| | "trinity_joints_168":{ |
| | 'Hips': 3 , |
| | 'Spine': 3 , |
| | 'Spine1': 3 , |
| | 'Spine2': 3 , |
| | 'Spine3': 3 , |
| | 'Neck': 3 , |
| | 'Neck1': 3 , |
| | 'Head': 3 , |
| | 'RShoulder': 3 , |
| | 'RArm': 3 , |
| | 'RArm1': 3 , |
| | 'RHand': 3 , |
| | 'RHandT1': 3 , |
| | 'RHandT2': 3 , |
| | 'RHandT3': 3 , |
| | 'RHandI1': 3 , |
| | 'RHandI2': 3 , |
| | 'RHandI3': 3 , |
| | 'RHandM1': 3 , |
| | 'RHandM2': 3 , |
| | 'RHandM3': 3 , |
| | 'RHandR1': 3 , |
| | 'RHandR2': 3 , |
| | 'RHandR3': 3 , |
| | 'RHandP1': 3 , |
| | 'RHandP2': 3 , |
| | 'RHandP3': 3 , |
| | 'LShoulder': 3 , |
| | 'LArm': 3 , |
| | 'LArm1': 3 , |
| | 'LHand': 3 , |
| | 'LHandT1': 3 , |
| | 'LHandT2': 3 , |
| | 'LHandT3': 3 , |
| | 'LHandI1': 3 , |
| | 'LHandI2': 3 , |
| | 'LHandI3': 3 , |
| | 'LHandM1': 3 , |
| | 'LHandM2': 3 , |
| | 'LHandM3': 3 , |
| | 'LHandR1': 3 , |
| | 'LHandR2': 3 , |
| | 'LHandR3': 3 , |
| | 'LHandP1': 3 , |
| | 'LHandP2': 3 , |
| | 'LHandP3': 3 , |
| | 'RUpLeg': 3 , |
| | 'RLeg': 3 , |
| | 'RFoot': 3 , |
| | 'RFootF': 3 , |
| | 'RToeBase': 3 , |
| | 'LUpLeg': 3 , |
| | 'LLeg': 3 , |
| | 'LFoot': 3 , |
| | 'LFootF': 3 , |
| | 'LToeBase': 3 ,}, |
| | "trinity_joints_138":{ |
| | "Hips": 3 , |
| | 'Spine': 3 , |
| | 'Spine1': 3 , |
| | 'Spine2': 3 , |
| | 'Spine3': 3 , |
| | 'Neck': 3 , |
| | 'Neck1': 3 , |
| | 'Head': 3 , |
| | 'RShoulder': 3 , |
| | 'RArm': 3 , |
| | 'RArm1': 3 , |
| | 'RHand': 3 , |
| | 'RHandT1': 3 , |
| | 'RHandT2': 3 , |
| | 'RHandT3': 3 , |
| | 'RHandI1': 3 , |
| | 'RHandI2': 3 , |
| | 'RHandI3': 3 , |
| | 'RHandM1': 3 , |
| | 'RHandM2': 3 , |
| | 'RHandM3': 3 , |
| | 'RHandR1': 3 , |
| | 'RHandR2': 3 , |
| | 'RHandR3': 3 , |
| | 'RHandP1': 3 , |
| | 'RHandP2': 3 , |
| | 'RHandP3': 3 , |
| | 'LShoulder': 3 , |
| | 'LArm': 3 , |
| | 'LArm1': 3 , |
| | 'LHand': 3 , |
| | 'LHandT1': 3 , |
| | 'LHandT2': 3 , |
| | 'LHandT3': 3 , |
| | 'LHandI1': 3 , |
| | 'LHandI2': 3 , |
| | 'LHandI3': 3 , |
| | 'LHandM1': 3 , |
| | 'LHandM2': 3 , |
| | 'LHandM3': 3 , |
| | 'LHandR1': 3 , |
| | 'LHandR2': 3 , |
| | 'LHandR3': 3 , |
| | 'LHandP1': 3 , |
| | 'LHandP2': 3 , |
| | 'LHandP3': 3 ,}, |
| | "beat_smplx_joints": { |
| | 'pelvis': [3,3], |
| | 'left_hip': [3,6], |
| | 'right_hip': [3,9], |
| | 'spine1': [3,12], |
| | 'left_knee': [3,15], |
| | 'right_knee': [3,18], |
| | 'spine2': [3,21], |
| | 'left_ankle': [3,24], |
| | 'right_ankle': [3,27], |
| |
|
| | 'spine3': [3,30], |
| | 'left_foot': [3,33], |
| | 'right_foot': [3,36], |
| | 'neck': [3,39], |
| | 'left_collar': [3,42], |
| | 'right_collar': [3,45], |
| | 'head': [3,48], |
| | 'left_shoulder': [3,51], |
| |
|
| | 'right_shoulder': [3,54], |
| | 'left_elbow': [3,57], |
| | 'right_elbow': [3,60], |
| | 'left_wrist': [3,63], |
| | 'right_wrist': [3,66], |
| |
|
| | 'jaw': [3,69], |
| | 'left_eye_smplhf': [3,72], |
| | 'right_eye_smplhf': [3,75], |
| | 'left_index1': [3,78], |
| | 'left_index2': [3,81], |
| |
|
| | 'left_index3': [3,84], |
| | 'left_middle1': [3,87], |
| | 'left_middle2': [3,90], |
| | 'left_middle3': [3,93], |
| | 'left_pinky1': [3,96], |
| |
|
| | 'left_pinky2': [3,99], |
| | 'left_pinky3': [3,102], |
| | 'left_ring1': [3,105], |
| | 'left_ring2': [3,108], |
| |
|
| | 'left_ring3': [3,111], |
| | 'left_thumb1': [3,114], |
| | 'left_thumb2': [3,117], |
| | 'left_thumb3': [3,120], |
| | 'right_index1': [3,123], |
| | 'right_index2': [3,126], |
| | 'right_index3': [3,129], |
| | 'right_middle1': [3,132], |
| |
|
| | 'right_middle2': [3,135], |
| | 'right_middle3': [3,138], |
| | 'right_pinky1': [3,141], |
| | 'right_pinky2': [3,144], |
| | 'right_pinky3': [3,147], |
| |
|
| | 'right_ring1': [3,150], |
| | 'right_ring2': [3,153], |
| | 'right_ring3': [3,156], |
| | 'right_thumb1': [3,159], |
| | 'right_thumb2': [3,162], |
| | 'right_thumb3': [3,165], |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | }, |
| | |
| | "beat_smplx_no_eyes": { |
| | "pelvis":3, |
| | "left_hip":3, |
| | "right_hip":3, |
| | "spine1":3, |
| | "left_knee":3, |
| | "right_knee":3, |
| | "spine2":3, |
| | "left_ankle":3, |
| | "right_ankle":3, |
| | "spine3":3, |
| | "left_foot":3, |
| | "right_foot":3, |
| | "neck":3, |
| | "left_collar":3, |
| | "right_collar":3, |
| | "head":3, |
| | "left_shoulder":3, |
| | "right_shoulder":3, |
| | "left_elbow":3, |
| | "right_elbow":3, |
| | "left_wrist":3, |
| | "right_wrist":3, |
| | "jaw":3, |
| | |
| | |
| | "left_index1":3, |
| | "left_index2":3, |
| | "left_index3":3, |
| | "left_middle1":3, |
| | "left_middle2":3, |
| | "left_middle3":3, |
| | "left_pinky1":3, |
| | "left_pinky2":3, |
| | "left_pinky3":3, |
| | "left_ring1":3, |
| | "left_ring2":3, |
| | "left_ring3":3, |
| | "left_thumb1":3, |
| | "left_thumb2":3, |
| | "left_thumb3":3, |
| | "right_index1":3, |
| | "right_index2":3, |
| | "right_index3":3, |
| | "right_middle1":3, |
| | "right_middle2":3, |
| | "right_middle3":3, |
| | "right_pinky1":3, |
| | "right_pinky2":3, |
| | "right_pinky3":3, |
| | "right_ring1":3, |
| | "right_ring2":3, |
| | "right_ring3":3, |
| | "right_thumb1":3, |
| | "right_thumb2":3, |
| | "right_thumb3":3, |
| | }, |
| | |
| | "beat_smplx_full": { |
| | "pelvis":3, |
| | "left_hip":3, |
| | "right_hip":3, |
| | "spine1":3, |
| | "left_knee":3, |
| | "right_knee":3, |
| | "spine2":3, |
| | "left_ankle":3, |
| | "right_ankle":3, |
| | "spine3":3, |
| | "left_foot":3, |
| | "right_foot":3, |
| | "neck":3, |
| | "left_collar":3, |
| | "right_collar":3, |
| | "head":3, |
| | "left_shoulder":3, |
| | "right_shoulder":3, |
| | "left_elbow":3, |
| | "right_elbow":3, |
| | "left_wrist":3, |
| | "right_wrist":3, |
| | "jaw":3, |
| | "left_eye_smplhf":3, |
| | "right_eye_smplhf":3, |
| | "left_index1":3, |
| | "left_index2":3, |
| | "left_index3":3, |
| | "left_middle1":3, |
| | "left_middle2":3, |
| | "left_middle3":3, |
| | "left_pinky1":3, |
| | "left_pinky2":3, |
| | "left_pinky3":3, |
| | "left_ring1":3, |
| | "left_ring2":3, |
| | "left_ring3":3, |
| | "left_thumb1":3, |
| | "left_thumb2":3, |
| | "left_thumb3":3, |
| | "right_index1":3, |
| | "right_index2":3, |
| | "right_index3":3, |
| | "right_middle1":3, |
| | "right_middle2":3, |
| | "right_middle3":3, |
| | "right_pinky1":3, |
| | "right_pinky2":3, |
| | "right_pinky3":3, |
| | "right_ring1":3, |
| | "right_ring2":3, |
| | "right_ring3":3, |
| | "right_thumb1":3, |
| | "right_thumb2":3, |
| | "right_thumb3":3, |
| | }, |
| |
|
| | "beat_smplx_upall": { |
| | |
| | |
| | |
| | "spine1":3, |
| | |
| | |
| | "spine2":3, |
| | |
| | |
| | "spine3":3, |
| | |
| | |
| | "neck":3, |
| | "left_collar":3, |
| | "right_collar":3, |
| | "head":3, |
| | "left_shoulder":3, |
| | "right_shoulder":3, |
| | "left_elbow":3, |
| | "right_elbow":3, |
| | "left_wrist":3, |
| | "right_wrist":3, |
| | |
| | |
| | |
| | "left_index1":3, |
| | "left_index2":3, |
| | "left_index3":3, |
| | "left_middle1":3, |
| | "left_middle2":3, |
| | "left_middle3":3, |
| | "left_pinky1":3, |
| | "left_pinky2":3, |
| | "left_pinky3":3, |
| | "left_ring1":3, |
| | "left_ring2":3, |
| | "left_ring3":3, |
| | "left_thumb1":3, |
| | "left_thumb2":3, |
| | "left_thumb3":3, |
| | "right_index1":3, |
| | "right_index2":3, |
| | "right_index3":3, |
| | "right_middle1":3, |
| | "right_middle2":3, |
| | "right_middle3":3, |
| | "right_pinky1":3, |
| | "right_pinky2":3, |
| | "right_pinky3":3, |
| | "right_ring1":3, |
| | "right_ring2":3, |
| | "right_ring3":3, |
| | "right_thumb1":3, |
| | "right_thumb2":3, |
| | "right_thumb3":3, |
| | }, |
| |
|
| | "beat_smplx_upper": { |
| | |
| | |
| | |
| | "spine1":3, |
| | |
| | |
| | "spine2":3, |
| | |
| | |
| | "spine3":3, |
| | |
| | |
| | "neck":3, |
| | "left_collar":3, |
| | "right_collar":3, |
| | "head":3, |
| | "left_shoulder":3, |
| | "right_shoulder":3, |
| | "left_elbow":3, |
| | "right_elbow":3, |
| | "left_wrist":3, |
| | "right_wrist":3, |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | }, |
| |
|
| | "beat_smplx_hands": { |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | "left_index1":3, |
| | "left_index2":3, |
| | "left_index3":3, |
| | "left_middle1":3, |
| | "left_middle2":3, |
| | "left_middle3":3, |
| | "left_pinky1":3, |
| | "left_pinky2":3, |
| | "left_pinky3":3, |
| | "left_ring1":3, |
| | "left_ring2":3, |
| | "left_ring3":3, |
| | "left_thumb1":3, |
| | "left_thumb2":3, |
| | "left_thumb3":3, |
| | "right_index1":3, |
| | "right_index2":3, |
| | "right_index3":3, |
| | "right_middle1":3, |
| | "right_middle2":3, |
| | "right_middle3":3, |
| | "right_pinky1":3, |
| | "right_pinky2":3, |
| | "right_pinky3":3, |
| | "right_ring1":3, |
| | "right_ring2":3, |
| | "right_ring3":3, |
| | "right_thumb1":3, |
| | "right_thumb2":3, |
| | "right_thumb3":3, |
| | }, |
| |
|
| | "beat_smplx_lower": { |
| | "pelvis":3, |
| | "left_hip":3, |
| | "right_hip":3, |
| | |
| | "left_knee":3, |
| | "right_knee":3, |
| | |
| | "left_ankle":3, |
| | "right_ankle":3, |
| | |
| | "left_foot":3, |
| | "right_foot":3, |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | }, |
| |
|
| | "beat_smplx_face": { |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | "jaw":3, |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | }, |
| | |
| | "beat_joints": { |
| | 'Hips': [6,6], |
| | 'Spine': [3,9], |
| | 'Spine1': [3,12], |
| | 'Spine2': [3,15], |
| | 'Spine3': [3,18], |
| | 'Neck': [3,21], |
| | 'Neck1': [3,24], |
| | 'Head': [3,27], |
| | 'HeadEnd': [3,30], |
| |
|
| | 'RShoulder': [3,33], |
| | 'RArm': [3,36], |
| | 'RArm1': [3,39], |
| | 'RHand': [3,42], |
| | 'RHandM1': [3,45], |
| | 'RHandM2': [3,48], |
| | 'RHandM3': [3,51], |
| | 'RHandM4': [3,54], |
| |
|
| | 'RHandR': [3,57], |
| | 'RHandR1': [3,60], |
| | 'RHandR2': [3,63], |
| | 'RHandR3': [3,66], |
| | 'RHandR4': [3,69], |
| |
|
| | 'RHandP': [3,72], |
| | 'RHandP1': [3,75], |
| | 'RHandP2': [3,78], |
| | 'RHandP3': [3,81], |
| | 'RHandP4': [3,84], |
| |
|
| | 'RHandI': [3,87], |
| | 'RHandI1': [3,90], |
| | 'RHandI2': [3,93], |
| | 'RHandI3': [3,96], |
| | 'RHandI4': [3,99], |
| |
|
| | 'RHandT1': [3,102], |
| | 'RHandT2': [3,105], |
| | 'RHandT3': [3,108], |
| | 'RHandT4': [3,111], |
| |
|
| | 'LShoulder': [3,114], |
| | 'LArm': [3,117], |
| | 'LArm1': [3,120], |
| | 'LHand': [3,123], |
| | 'LHandM1': [3,126], |
| | 'LHandM2': [3,129], |
| | 'LHandM3': [3,132], |
| | 'LHandM4': [3,135], |
| |
|
| | 'LHandR': [3,138], |
| | 'LHandR1': [3,141], |
| | 'LHandR2': [3,144], |
| | 'LHandR3': [3,147], |
| | 'LHandR4': [3,150], |
| |
|
| | 'LHandP': [3,153], |
| | 'LHandP1': [3,156], |
| | 'LHandP2': [3,159], |
| | 'LHandP3': [3,162], |
| | 'LHandP4': [3,165], |
| |
|
| | 'LHandI': [3,168], |
| | 'LHandI1': [3,171], |
| | 'LHandI2': [3,174], |
| | 'LHandI3': [3,177], |
| | 'LHandI4': [3,180], |
| |
|
| | 'LHandT1': [3,183], |
| | 'LHandT2': [3,186], |
| | 'LHandT3': [3,189], |
| | 'LHandT4': [3,192], |
| |
|
| | 'RUpLeg': [3,195], |
| | 'RLeg': [3,198], |
| | 'RFoot': [3,201], |
| | 'RFootF': [3,204], |
| | 'RToeBase': [3,207], |
| | 'RToeBaseEnd': [3,210], |
| |
|
| | 'LUpLeg': [3,213], |
| | 'LLeg': [3,216], |
| | 'LFoot': [3,219], |
| | 'LFootF': [3,222], |
| | 'LToeBase': [3,225], |
| | 'LToeBaseEnd': [3,228],}, |
| | |
| | "beat_full":{ |
| | 'Hips': 3, |
| | 'Spine': 3 , |
| | 'Spine1': 3 , |
| | 'Spine2': 3 , |
| | 'Spine3': 3 , |
| | 'Neck': 3 , |
| | 'Neck1': 3 , |
| | 'Head' : 3, |
| | 'HeadEnd' : 3, |
| | 'RShoulder': 3 , |
| | 'RArm': 3 , |
| | 'RArm1': 3 , |
| | 'RHand': 3 , |
| | 'RHandM1': 3 , |
| | 'RHandM2': 3 , |
| | 'RHandM3': 3 , |
| | 'RHandM4': 3 , |
| | 'RHandR': 3 , |
| | 'RHandR1': 3 , |
| | 'RHandR2': 3 , |
| | 'RHandR3': 3 , |
| | 'RHandR4': 3 , |
| | 'RHandP': 3 , |
| | 'RHandP1': 3 , |
| | 'RHandP2': 3 , |
| | 'RHandP3': 3 , |
| | 'RHandP4': 3 , |
| | 'RHandI': 3 , |
| | 'RHandI1': 3 , |
| | 'RHandI2': 3 , |
| | 'RHandI3': 3 , |
| | 'RHandI4': 3 , |
| | 'RHandT1': 3 , |
| | 'RHandT2': 3 , |
| | 'RHandT3': 3 , |
| | 'RHandT4': 3 , |
| | 'LShoulder': 3 , |
| | 'LArm': 3 , |
| | 'LArm1': 3 , |
| | 'LHand': 3 , |
| | 'LHandM1': 3 , |
| | 'LHandM2': 3 , |
| | 'LHandM3': 3 , |
| | 'LHandM4': 3 , |
| | 'LHandR': 3 , |
| | 'LHandR1': 3 , |
| | 'LHandR2': 3 , |
| | 'LHandR3': 3 , |
| | 'LHandR4': 3 , |
| | 'LHandP': 3 , |
| | 'LHandP1': 3 , |
| | 'LHandP2': 3 , |
| | 'LHandP3': 3 , |
| | 'LHandP4': 3 , |
| | 'LHandI': 3 , |
| | 'LHandI1': 3 , |
| | 'LHandI2': 3 , |
| | 'LHandI3': 3 , |
| | 'LHandI4': 3 , |
| | 'LHandT1': 3 , |
| | 'LHandT2': 3 , |
| | 'LHandT3': 3 , |
| | 'LHandT4': 3 , |
| | 'RUpLeg': 3, |
| | 'RLeg': 3, |
| | 'RFoot': 3, |
| | 'RFootF': 3, |
| | 'RToeBase': 3, |
| | 'RToeBaseEnd': 3, |
| | 'LUpLeg': 3, |
| | 'LLeg': 3, |
| | 'LFoot': 3, |
| | 'LFootF': 3, |
| | 'LToeBase': 3, |
| | 'LToeBaseEnd': 3, |
| | }, |
| | |
| | "japanese_joints":{ |
| | 'Hips': [6,6], |
| | 'Spine': [6,12], |
| | 'Spine1': [6,18], |
| | 'Spine2': [6,24], |
| | 'Spine3': [6,30], |
| | 'Neck': [6,36], |
| | 'Neck1': [6,42], |
| | 'Head': [6,48], |
| | 'RShoulder': [6,54], |
| | 'RArm': [6,60], |
| | 'RArm1': [6,66], |
| | 'RHand': [6,72], |
| | 'RHandM1': [6,78], |
| | 'RHandM2': [6,84], |
| | 'RHandM3': [6,90], |
| | 'RHandR': [6,96], |
| | 'RHandR1': [6,102], |
| | 'RHandR2': [6,108], |
| | 'RHandR3': [6,114], |
| | 'RHandP': [6,120], |
| | 'RHandP1': [6,126], |
| | 'RHandP2': [6,132], |
| | 'RHandP3': [6,138], |
| | 'RHandI': [6,144], |
| | 'RHandI1': [6,150], |
| | 'RHandI2': [6,156], |
| | 'RHandI3': [6,162], |
| | 'RHandT1': [6,168], |
| | 'RHandT2': [6,174], |
| | 'RHandT3': [6,180], |
| | 'LShoulder': [6,186], |
| | 'LArm': [6,192], |
| | 'LArm1': [6,198], |
| | 'LHand': [6,204], |
| | 'LHandM1': [6,210], |
| | 'LHandM2': [6,216], |
| | 'LHandM3': [6,222], |
| | 'LHandR': [6,228], |
| | 'LHandR1': [6,234], |
| | 'LHandR2': [6,240], |
| | 'LHandR3': [6,246], |
| | 'LHandP': [6,252], |
| | 'LHandP1': [6,258], |
| | 'LHandP2': [6,264], |
| | 'LHandP3': [6,270], |
| | 'LHandI': [6,276], |
| | 'LHandI1': [6,282], |
| | 'LHandI2': [6,288], |
| | 'LHandI3': [6,294], |
| | 'LHandT1': [6,300], |
| | 'LHandT2': [6,306], |
| | 'LHandT3': [6,312], |
| | 'RUpLeg': [6,318], |
| | 'RLeg': [6,324], |
| | 'RFoot': [6,330], |
| | 'RFootF': [6,336], |
| | 'RToeBase': [6,342], |
| | 'LUpLeg': [6,348], |
| | 'LLeg': [6,354], |
| | 'LFoot': [6,360], |
| | 'LFootF': [6,366], |
| | 'LToeBase': [6,372],}, |
| | |
| | "yostar":{ |
| | 'Hips': [6,6], |
| | 'Spine': [3,9], |
| | 'Spine1': [3,12], |
| | 'Bone040': [3,15], |
| | 'Bone041': [3,18], |
| |
|
| | 'Bone034': [3,21], |
| | 'Bone035': [3,24], |
| | 'Bone036': [3,27], |
| | 'Bone037': [3,30], |
| | 'Bone038': [3,33], |
| | 'Bone039': [3,36], |
| |
|
| | 'RibbonL1': [3,39], |
| | 'RibbonL1_end': [3,42], |
| |
|
| | 'Chest': [3,45], |
| | 'L_eri': [3,48], |
| | 'R_eri': [3,51], |
| | 'Neck': [3,54], |
| | 'Head': [3,57], |
| | 'Head_end': [3,60], |
| | |
| | 'RBackHair_1': [3,63], |
| | 'RBackHair_2': [3,66], |
| | 'RBackHair_3': [3,69], |
| | 'RBackHair_4': [3,72], |
| | 'RBackHair_end': [3,75], |
| | |
| | 'RFrontHair': [3,78], |
| | 'CFrontHair_1': [3,81], |
| | 'CFrontHair_2': [3,84], |
| | 'CFrontHair_3': [3,87], |
| | 'CFrontHair_emd': [3,90], |
| | |
| | 'LFrontHair_1': [3,93], |
| | 'LFrontHair_2': [3,96], |
| | 'LFrontHair_3': [3,99], |
| | |
| | 'LBackHair_1': [3,102], |
| | 'LBackHair_2': [3,105], |
| | 'LBackHair_3': [3,108], |
| | 'LBackHair_4': [3,111], |
| | 'LBackHair_end': [3,114], |
| | |
| | 'LSideHair_1': [3,117], |
| | 'LSideHair_2': [3,120], |
| | 'LSideHair_3': [3,123], |
| | 'LSideHair_4': [3,126], |
| | 'LSideHair_5': [3,129], |
| | 'LSideHair_6': [3,132], |
| | 'LSideHair_7': [3,135], |
| | 'LSideHair_end': [3,138], |
| | |
| | 'CBackHair_1': [3,141], |
| | 'CBackHair_2': [3,144], |
| | 'CBackHair_3': [3,147], |
| | 'CBackHair_4': [3,150], |
| | 'CBackHair_end': [3,153], |
| | |
| | 'RSideHair_1': [3,156], |
| | 'RSideHair_2': [3,159], |
| | 'RSideHair_3': [3,162], |
| | 'RSideHair_4': [3,165], |
| | |
| | 'RibbonR_1': [3,168], |
| | 'RibbonR_2': [3,171], |
| | 'RibbonR_3': [3,174], |
| | |
| | 'RibbonL_1': [3,177], |
| | 'RibbonL_2': [3,180], |
| | 'RibbonL_3': [3,183], |
| | |
| | 'LeftEye': [3,186], |
| | 'LeftEye_end': [3,189], |
| | 'RightEye': [3,192], |
| | 'RightEye_end': [3,195], |
| | |
| | 'LeftShoulder': [3,198], |
| | 'LeftArm': [3,201], |
| | 'LeftForearm': [3,204], |
| | 'LeftHand': [3,207], |
| | 'LeftHandThumb1': [3,210], |
| | 'LeftHandThumb2': [3,213], |
| | 'LeftHandThumb3': [3,216], |
| | 'LeftHandThumb_end': [3,219], |
| | |
| | 'LeftHandIndex1': [3,222], |
| | 'LeftHandIndex2': [3,225], |
| | 'LeftHandIndex3': [3,228], |
| | 'LeftHandIndex_end': [3,231], |
| | |
| | 'LeftHandMiddle1': [3,234], |
| | 'LeftHandMiddle2': [3,237], |
| | 'LeftHandMiddle3': [3,240], |
| | 'LeftHandMiddle_end': [3,243], |
| |
|
| | 'LeftHandRing1': [3,246], |
| | 'LeftHandRing2': [3,249], |
| | 'LeftHandRing3': [3,252], |
| | 'LeftHandRing_end': [3,255], |
| |
|
| | 'LeftHandPinky1': [3,258], |
| | 'LeftHandPinky2': [3,261], |
| | 'LeftHandPinky3': [3,264], |
| | 'LeftHandPinky_end': [3,267], |
| |
|
| | 'RightShoulder': [3,270], |
| | 'RightArm': [3,273], |
| | 'RightForearm': [3,276], |
| | 'RightHand': [3,279], |
| | 'RightHandThumb1': [3,282], |
| | 'RightHandThumb2': [3,285], |
| | 'RightHandThumb3': [3,288], |
| | 'RightHandThumb_end': [3,291], |
| | |
| | 'RightHandIndex1': [3,294], |
| | 'RightHandIndex2': [3,297], |
| | 'RightHandIndex3': [3,300], |
| | 'RightHandIndex_end': [3,303], |
| | |
| | 'RightHandMiddle1': [3,306], |
| | 'RightHandMiddle2': [3,309], |
| | 'RightHandMiddle3': [3,312], |
| | 'RightHandMiddle_end': [3,315], |
| |
|
| | 'RightHandRing1': [3,318], |
| | 'RightHandRing2': [3,321], |
| | 'RightHandRing3': [3,324], |
| | 'RightHandRing_end': [3,327], |
| |
|
| | 'RightHandPinky1': [3,330], |
| | 'RightHandPinky2': [3,333], |
| | 'RightHandPinky3': [3,336], |
| | 'RightHandPinky_end': [3,339], |
| |
|
| | 'RibbonR1': [3,342], |
| | 'RibbonR1_end': [3,345], |
| | 'RibbonR2': [3,348], |
| | 'RibbonR2_end': [3,351], |
| | 'RibbonL2': [3,354], |
| | 'RibbonL2_end': [3,357], |
| | |
| | 'LeftUpLeg': [3,360], |
| | 'LeftLeg': [3,363], |
| | 'LeftFoot': [3,366], |
| | 'LeftToe': [3,369], |
| | 'LeftToe_end': [3,372], |
| | |
| | 'RightUpLeg': [3,375], |
| | 'RightLEg': [3,378], |
| | 'RightFoot': [3,381], |
| | 'RightToe': [3,384], |
| | 'RightToe_end': [3,387], |
| | |
| | 'bone_skirtF00': [3, 390], |
| | 'bone_skirtF01': [3, 393], |
| | 'bone_skirtF02': [3, 396], |
| | 'bone_skirtF03': [3, 399], |
| | 'Bone020': [3, 402], |
| | 'Bone026': [3, 405], |
| | |
| | 'bone_skirtF_R_00': [3, 408], |
| | 'bone_skirtF_R_01': [3, 411], |
| | 'bone_skirtF_R_02': [3, 414], |
| | 'bone_skirtF_R_03': [3, 417], |
| | 'Bone019': [3, 420], |
| | 'Bone028': [3, 423], |
| | |
| | 'bone_skirtR00': [3, 426], |
| | 'bone_skirtR01': [3, 429], |
| | 'bone_skirtR02': [3, 432], |
| | 'bone_skirtR03': [3, 435], |
| | 'Bone018': [3, 438], |
| | 'Bone029': [3, 441], |
| | |
| | 'bone_skirtF_L_00': [3, 444], |
| | 'bone_skirtF_L_01': [3, 447], |
| | 'bone_skirtF_L_02': [3, 450], |
| | 'bone_skirtF_L_03': [3, 453], |
| | 'Bone021': [3, 456], |
| | 'Bone027': [3, 459], |
| | |
| | 'bone_skirtL00': [3, 462], |
| | 'bone_skirtL01': [3, 465], |
| | 'bone_skirtL02': [3, 468], |
| | 'bone_skirtL03': [3, 471], |
| | 'Bone022': [3, 474], |
| | 'Bone033': [3, 477], |
| | |
| | 'bone_skirtB_L_00': [3, 480], |
| | 'bone_skirtB_L_01': [3, 483], |
| | 'bone_skirtB_L_02': [3, 486], |
| | 'bone_skirtB_L_03': [3, 489], |
| | 'Bone023': [3, 492], |
| | 'Bone032': [3, 495], |
| | |
| | 'bone_skirtB00': [3, 498], |
| | 'bone_skirtB01': [3, 501], |
| | 'bone_skirtB02': [3, 504], |
| | 'bone_skirtB03': [3, 507], |
| | 'Bone024': [3, 510], |
| | 'Bone031': [3, 513], |
| | |
| | 'bone_skirtB_R_00': [3, 516], |
| | 'bone_skirtB_R_01': [3, 519], |
| | 'bone_skirtB_R_02': [3, 521], |
| | 'bone_skirtB_R_03': [3, 524], |
| | 'Bone025': [3, 527], |
| | 'Bone030': [3, 530], |
| | }, |
| | |
| | "yostar_fullbody_213":{ |
| | 'Hips': 3 , |
| | 'Spine': 3 , |
| | 'Spine1': 3 , |
| | 'Chest': 3 , |
| | 'L_eri': 3 , |
| | 'R_eri': 3 , |
| | 'Neck': 3 , |
| | 'Head': 3 , |
| | 'Head_end': 3 , |
| | |
| | 'LeftEye': 3, |
| | 'LeftEye_end': 3, |
| | 'RightEye': 3, |
| | 'RightEye_end': 3, |
| | |
| | 'LeftShoulder': 3, |
| | 'LeftArm': 3, |
| | 'LeftForearm': 3, |
| | 'LeftHand': 3, |
| | 'LeftHandThumb1': 3, |
| | 'LeftHandThumb2': 3, |
| | 'LeftHandThumb3': 3, |
| | 'LeftHandThumb_end': 3, |
| | |
| | 'LeftHandIndex1': 3, |
| | 'LeftHandIndex2': 3, |
| | 'LeftHandIndex3': 3, |
| | 'LeftHandIndex_end': 3, |
| | |
| | 'LeftHandMiddle1': 3, |
| | 'LeftHandMiddle2': 3, |
| | 'LeftHandMiddle3': 3, |
| | 'LeftHandMiddle_end': 3, |
| |
|
| | 'LeftHandRing1': 3, |
| | 'LeftHandRing2': 3, |
| | 'LeftHandRing3': 3, |
| | 'LeftHandRing_end': 3, |
| |
|
| | 'LeftHandPinky1': 3, |
| | 'LeftHandPinky2': 3, |
| | 'LeftHandPinky3': 3, |
| | 'LeftHandPinky_end':3, |
| |
|
| | 'RightShoulder': 3, |
| | 'RightArm': 3, |
| | 'RightForearm': 3, |
| | 'RightHand': 3, |
| | 'RightHandThumb1': 3, |
| | 'RightHandThumb2': 3, |
| | 'RightHandThumb3': 3, |
| | 'RightHandThumb_end': 3, |
| | |
| | 'RightHandIndex1': 3, |
| | 'RightHandIndex2': 3, |
| | 'RightHandIndex3': 3, |
| | 'RightHandIndex_end': 3, |
| | |
| | 'RightHandMiddle1': 3, |
| | 'RightHandMiddle2': 3, |
| | 'RightHandMiddle3': 3, |
| | 'RightHandMiddle_end': 3, |
| |
|
| | 'RightHandRing1': 3, |
| | 'RightHandRing2': 3, |
| | 'RightHandRing3': 3, |
| | 'RightHandRing_end': 3, |
| |
|
| | 'RightHandPinky1': 3, |
| | 'RightHandPinky2': 3, |
| | 'RightHandPinky3': 3, |
| | 'RightHandPinky_end': 3, |
| | |
| | 'LeftUpLeg': 3, |
| | 'LeftLeg': 3, |
| | 'LeftFoot': 3, |
| | 'LeftToe': 3, |
| | 'LeftToe_end': 3, |
| | |
| | 'RightUpLeg': 3, |
| | 'RightLEg': 3, |
| | 'RightFoot': 3, |
| | 'RightToe': 3, |
| | 'RightToe_end': 3, |
| | }, |
| | "yostar_mainbody_48": { |
| | |
| | 'Spine': 3 , |
| | 'Spine1': 3 , |
| | 'Chest': 3 , |
| | 'L_eri': 3 , |
| | 'R_eri': 3 , |
| | 'Neck': 3 , |
| | 'Head': 3 , |
| | 'Head_end': 3 , |
| | |
| | 'LeftShoulder': 3, |
| | 'LeftArm': 3, |
| | 'LeftForearm': 3, |
| | 'LeftHand': 3, |
| |
|
| | 'RightShoulder': 3, |
| | 'RightArm': 3, |
| | 'RightForearm': 3, |
| | 'RightHand': 3, |
| | }, |
| | "yostar_mainbody_69": { |
| | 'Hips': 3 , |
| | 'Spine': 3 , |
| | 'Spine1': 3 , |
| | 'Chest': 3 , |
| | 'L_eri': 3 , |
| | 'R_eri': 3 , |
| | 'Neck': 3 , |
| | 'Head': 3 , |
| | 'Head_end': 3 , |
| | |
| | 'LeftShoulder': 3, |
| | 'LeftArm': 3, |
| | 'LeftForearm': 3, |
| | 'LeftHand': 3, |
| |
|
| | 'RightShoulder': 3, |
| | 'RightArm': 3, |
| | 'RightForearm': 3, |
| | 'RightHand': 3, |
| | |
| | 'LeftUpLeg': 3, |
| | 'LeftLeg': 3, |
| | 'LeftFoot': 3, |
| | |
| | 'RightUpLeg': 3, |
| | 'RightLEg': 3, |
| | 'RightFoot': 3, |
| | }, |
| | |
| | "yostar_upbody_168": { |
| | |
| | 'Spine': 3 , |
| | 'Spine1': 3 , |
| | 'Chest': 3 , |
| | 'L_eri': 3 , |
| | 'R_eri': 3 , |
| | 'Neck': 3 , |
| | 'Head': 3 , |
| | 'Head_end': 3 , |
| | |
| | 'LeftShoulder': 3, |
| | 'LeftArm': 3, |
| | 'LeftForearm': 3, |
| | 'LeftHand': 3, |
| | 'LeftHandThumb1': 3, |
| | 'LeftHandThumb2': 3, |
| | 'LeftHandThumb3': 3, |
| | 'LeftHandThumb_end': 3, |
| | |
| | 'LeftHandIndex1': 3, |
| | 'LeftHandIndex2': 3, |
| | 'LeftHandIndex3': 3, |
| | 'LeftHandIndex_end': 3, |
| | |
| | 'LeftHandMiddle1': 3, |
| | 'LeftHandMiddle2': 3, |
| | 'LeftHandMiddle3': 3, |
| | 'LeftHandMiddle_end': 3, |
| |
|
| | 'LeftHandRing1': 3, |
| | 'LeftHandRing2': 3, |
| | 'LeftHandRing3': 3, |
| | 'LeftHandRing_end': 3, |
| |
|
| | 'LeftHandPinky1': 3, |
| | 'LeftHandPinky2': 3, |
| | 'LeftHandPinky3': 3, |
| | 'LeftHandPinky_end':3, |
| | |
| | 'RightShoulder': 3, |
| | 'RightArm': 3, |
| | 'RightForearm': 3, |
| | 'RightHand': 3, |
| | 'RightHandThumb1': 3, |
| | 'RightHandThumb2': 3, |
| | 'RightHandThumb3': 3, |
| | 'RightHandThumb_end': 3, |
| | |
| | 'RightHandIndex1': 3, |
| | 'RightHandIndex2': 3, |
| | 'RightHandIndex3': 3, |
| | 'RightHandIndex_end': 3, |
| | |
| | 'RightHandMiddle1': 3, |
| | 'RightHandMiddle2': 3, |
| | 'RightHandMiddle3': 3, |
| | 'RightHandMiddle_end': 3, |
| |
|
| | 'RightHandRing1': 3, |
| | 'RightHandRing2': 3, |
| | 'RightHandRing3': 3, |
| | 'RightHandRing_end': 3, |
| |
|
| | 'RightHandPinky1': 3, |
| | 'RightHandPinky2': 3, |
| | 'RightHandPinky3': 3, |
| | 'RightHandPinky_end': 3, |
| | }, |
| | "spine_neck_141":{ |
| | 'Spine': 3 , |
| | 'Neck': 3 , |
| | 'Neck1': 3 , |
| | 'RShoulder': 3 , |
| | 'RArm': 3 , |
| | 'RArm1': 3 , |
| | 'RHand': 3 , |
| | 'RHandM1': 3 , |
| | 'RHandM2': 3 , |
| | 'RHandM3': 3 , |
| | 'RHandR': 3 , |
| | 'RHandR1': 3 , |
| | 'RHandR2': 3 , |
| | 'RHandR3': 3 , |
| | 'RHandP': 3 , |
| | 'RHandP1': 3 , |
| | 'RHandP2': 3 , |
| | 'RHandP3': 3 , |
| | 'RHandI': 3 , |
| | 'RHandI1': 3 , |
| | 'RHandI2': 3 , |
| | 'RHandI3': 3 , |
| | 'RHandT1': 3 , |
| | 'RHandT2': 3 , |
| | 'RHandT3': 3 , |
| | 'LShoulder': 3 , |
| | 'LArm': 3 , |
| | 'LArm1': 3 , |
| | 'LHand': 3 , |
| | 'LHandM1': 3 , |
| | 'LHandM2': 3 , |
| | 'LHandM3': 3 , |
| | 'LHandR': 3 , |
| | 'LHandR1': 3 , |
| | 'LHandR2': 3 , |
| | 'LHandR3': 3 , |
| | 'LHandP': 3 , |
| | 'LHandP1': 3 , |
| | 'LHandP2': 3 , |
| | 'LHandP3': 3 , |
| | 'LHandI': 3 , |
| | 'LHandI1': 3 , |
| | 'LHandI2': 3 , |
| | 'LHandI3': 3 , |
| | 'LHandT1': 3 , |
| | 'LHandT2': 3 , |
| | 'LHandT3': 3 ,}, |
| | } |
| |
|
| |
|
| | class FIDCalculator(object): |
| | ''' |
| | todo |
| | ''' |
| | def __init__(self): |
| | self.gt_rot = None |
| | self.gt_pos = None |
| | self.op_rot = None |
| | self.op_pos = None |
| | |
| |
|
| | def load(self, path, load_type, save_pos=False): |
| | ''' |
| | select gt or op for load_type |
| | ''' |
| | parser = BVHParser() |
| | parsed_data = parser.parse(path) |
| | if load_type == 'gt': |
| | self.gt_rot = parsed_data.values |
| | elif load_type == 'op': |
| | self.op_rot = parsed_data.values |
| | else: print('error, select gt or op for load_type') |
| |
|
| | if save_pos: |
| | mp = MocapParameterizer('position') |
| | positions = mp.fit_transform([parsed_data]) |
| | if load_type == 'gt': |
| | self.gt_pos = positions[0].values |
| | elif load_type == 'op': |
| | self.op_pos = positions[0].values |
| | else: print('error, select gt or op for load_type') |
| |
|
| |
|
| | def _joint_selector(self, selected_joints, ori_data): |
| | selected_data = pd.DataFrame(columns=[]) |
| |
|
| | for joint_name in selected_joints: |
| | selected_data[joint_name] = ori_data[joint_name] |
| | return selected_data.to_numpy() |
| | |
| | |
| | def cal_vol(self, dtype): |
| | if dtype == 'pos': |
| | gt = self.gt_pos |
| | op = self.op_pos |
| | else: |
| | gt = self.gt_rot |
| | op = self.op_rot |
| | |
| | gt_v = gt.to_numpy()[1:, :] - gt.to_numpy()[0:-1, :] |
| | op_v = op.to_numpy()[1:, :] - op.to_numpy()[0:-1, :] |
| | if dtype == 'pos': |
| | self.gt_vol_pos = pd.DataFrame(gt_v, columns = gt.columns.tolist()) |
| | self.op_vol_pos = pd.DataFrame(op_v, columns = gt.columns.tolist()) |
| | else: |
| | self.gt_vol_rot = pd.DataFrame(gt_v, columns = gt.columns.tolist()) |
| | self.op_vol_rot = pd.DataFrame(op_v, columns = gt.columns.tolist()) |
| |
|
| |
|
| | @staticmethod |
| | def frechet_distance(samples_A, samples_B): |
| | A_mu = np.mean(samples_A, axis=0) |
| | A_sigma = np.cov(samples_A, rowvar=False) |
| | B_mu = np.mean(samples_B, axis=0) |
| | B_sigma = np.cov(samples_B, rowvar=False) |
| | try: |
| | frechet_dist = FIDCalculator.calculate_frechet_distance(A_mu, A_sigma, B_mu, B_sigma) |
| | except ValueError: |
| | frechet_dist = 1e+10 |
| | return frechet_dist |
| |
|
| |
|
| | @staticmethod |
| | def calculate_frechet_distance(mu1, sigma1, mu2, sigma2, eps=1e-6): |
| | """ from https://github.com/mseitzer/pytorch-fid/blob/master/fid_score.py """ |
| | """Numpy implementation of the Frechet Distance. |
| | The Frechet distance between two multivariate Gaussians X_1 ~ N(mu_1, C_1) |
| | and X_2 ~ N(mu_2, C_2) is |
| | d^2 = ||mu_1 - mu_2||^2 + Tr(C_1 + C_2 - 2*sqrt(C_1*C_2)). |
| | Stable version by Dougal J. Sutherland. |
| | Params: |
| | -- mu1 : Numpy array containing the activations of a layer of the |
| | inception net (like returned by the function 'get_predictions') |
| | for generated samples. |
| | -- mu2 : The sample mean over activations, precalculated on an |
| | representative data set. |
| | -- sigma1: The covariance matrix over activations for generated samples. |
| | -- sigma2: The covariance matrix over activations, precalculated on an |
| | representative data set. |
| | Returns: |
| | -- : The Frechet Distance. |
| | """ |
| |
|
| | mu1 = np.atleast_1d(mu1) |
| | mu2 = np.atleast_1d(mu2) |
| | |
| | sigma1 = np.atleast_2d(sigma1) |
| | sigma2 = np.atleast_2d(sigma2) |
| | |
| | assert mu1.shape == mu2.shape, \ |
| | 'Training and test mean vectors have different lengths' |
| | assert sigma1.shape == sigma2.shape, \ |
| | 'Training and test covariances have different dimensions' |
| |
|
| | diff = mu1 - mu2 |
| |
|
| | |
| | covmean, _ = linalg.sqrtm(sigma1.dot(sigma2), disp=False) |
| | |
| | if not np.isfinite(covmean).all(): |
| | msg = ('fid calculation produces singular product; ' |
| | 'adding %s to diagonal of cov estimates') % eps |
| | print(msg) |
| | offset = np.eye(sigma1.shape[0]) * eps |
| | covmean = linalg.sqrtm((sigma1 + offset).dot(sigma2 + offset)) |
| |
|
| | |
| | if np.iscomplexobj(covmean): |
| | if not np.allclose(np.diagonal(covmean).imag, 0, atol=1e-3): |
| | m = np.max(np.abs(covmean.imag)) |
| | raise ValueError('Imaginary component {}'.format(m)) |
| | covmean = covmean.real |
| |
|
| | tr_covmean = np.trace(covmean) |
| |
|
| | return (diff.dot(diff) + np.trace(sigma1) + |
| | np.trace(sigma2) - 2 * tr_covmean) |
| |
|
| | |
| | def calculate_fid(self, cal_type, joint_type, high_level_opt): |
| | |
| | if cal_type == 'pos': |
| | if self.gt_pos.shape != self.op_pos.shape: |
| | min_val = min(self.gt_pos.shape[0],self.op_pos.shape[0]) |
| | gt = self.gt_pos[:min_val] |
| | op = self.op_pos[:min_val] |
| | else: |
| | gt = self.gt_pos |
| | op = self.op_pos |
| | full_body = gt.columns.tolist() |
| | elif cal_type == 'rot': |
| | if self.gt_rot.shape != self.op_rot.shape: |
| | min_val = min(self.gt_rot.shape[0],self.op_rot.shape[0]) |
| | gt = self.gt_rot[:min_val] |
| | op = self.op_rot[:min_val] |
| | else: |
| | gt = self.gt_rot |
| | op = self.op_rot |
| | full_body_with_offset = gt.columns.tolist() |
| | full_body = [o for o in full_body_with_offset if ('position' not in o)] |
| | elif cal_type == 'pos_vol': |
| | assert self.gt_vol_pos.shape == self.op_vol_pos.shape |
| | gt = self.gt_vol_pos |
| | op = self.op_vol_pos |
| | full_body_with_offset = gt.columns.tolist() |
| | full_body = gt.columns.tolist() |
| | elif cal_type == 'rot_vol': |
| | assert self.gt_vol_rot.shape == self.op_vol_rot.shape |
| | gt = self.gt_vol_rot |
| | op = self.op_vol_rot |
| | full_body_with_offset = gt.columns.tolist() |
| | full_body = [o for o in full_body_with_offset if ('position' not in o)] |
| | |
| |
|
| | if joint_type == 'full_upper_body': |
| | selected_body = [o for o in full_body if ('Leg' not in o) and ('Foot' not in o) and ('Toe' not in o)] |
| | elif joint_type == 'upper_body': |
| | selected_body = [o for o in full_body if ('Hand' not in o) and ('Leg' not in o) and ('Foot' not in o) and ('Toe' not in o)] |
| | elif joint_type == 'fingers': |
| | selected_body = [o for o in full_body if ('Hand' in o)] |
| | elif joint_type == 'indivdual': |
| | pass |
| | else: print('error, plz select correct joint type') |
| | |
| |
|
| | gt = self._joint_selector(selected_body, gt) |
| | op = self._joint_selector(selected_body, op) |
| |
|
| | if high_level_opt == 'fid': |
| | fid = FIDCalculator.frechet_distance(gt, op) |
| | return fid |
| | elif high_level_opt == 'var': |
| | var_gt = gt.var() |
| | var_op = op.var() |
| | return var_gt, var_op |
| | elif high_level_opt == 'mean': |
| | mean_gt = gt.mean() |
| | mean_op = op.mean() |
| | return mean_gt, mean_op |
| | else: return 0 |
| | |
| |
|
| | def result2target_vis(pose_version, res_bvhlist, save_path, demo_name, verbose=True): |
| | if "trinity" in pose_version: |
| | ori_list = joints_list[pose_version[6:-4]] |
| | target_list = joints_list[pose_version[6:]] |
| | file_content_length = 336 |
| | elif "beat" in pose_version or "spine_neck_141" in pose_version: |
| | ori_list = joints_list["beat_joints"] |
| | target_list = joints_list["spine_neck_141"] |
| | file_content_length = 431 |
| | elif "yostar" in pose_version: |
| | ori_list = joints_list["yostar"] |
| | target_list = joints_list[pose_version] |
| | file_content_length = 1056 |
| | else: |
| | ori_list = joints_list["japanese_joints"] |
| | target_list = joints_list[pose_version] |
| | file_content_length = 366 |
| | |
| | bvh_files_dirs = sorted(glob.glob(f'{res_bvhlist}*.bvh'), key=str) |
| | |
| | |
| | counter = 0 |
| | if not os.path.exists(save_path): |
| | os.makedirs(save_path) |
| | for i, bvh_file_dir in enumerate(bvh_files_dirs): |
| | short_name = bvh_file_dir.split("/")[-1][11:] |
| | |
| | wirte_file = open(os.path.join(save_path, f'res_{short_name}'),'w+') |
| | with open(f"{demo_name}{short_name}",'r') as pose_data_pre: |
| | pose_data_pre_file = pose_data_pre.readlines() |
| | for j, line in enumerate(pose_data_pre_file[0:file_content_length]): |
| | wirte_file.write(line) |
| | offset_data = pose_data_pre_file[file_content_length] |
| | offset_data = np.fromstring(offset_data, dtype=float, sep=' ') |
| | wirte_file.close() |
| |
|
| | wirte_file = open(os.path.join(save_path, f'res_{short_name}'),'r') |
| | ori_lines = wirte_file.readlines() |
| | with open(bvh_file_dir, 'r') as pose_data: |
| | pose_data_file = pose_data.readlines() |
| | ori_lines[file_content_length-2] = 'Frames: ' + str(len(pose_data_file)-1) + '\n' |
| | wirte_file.close() |
| |
|
| | wirte_file = open(os.path.join(save_path, f'res_{short_name}'),'w+') |
| | wirte_file.writelines(i for i in ori_lines[:file_content_length]) |
| | wirte_file.close() |
| |
|
| | with open(os.path.join(save_path, f'res_{short_name}'),'a+') as wirte_file: |
| | with open(bvh_file_dir, 'r') as pose_data: |
| | data_each_file = [] |
| | pose_data_file = pose_data.readlines() |
| | for j, line in enumerate(pose_data_file): |
| | if not j: |
| | pass |
| | else: |
| | data = np.fromstring(line, dtype=float, sep=' ') |
| | data_rotation = offset_data.copy() |
| | for iii, (k, v) in enumerate(target_list.items()): |
| | |
| | data_rotation[ori_list[k][1]-v:ori_list[k][1]] = data[iii*3:iii*3+3] |
| | data_each_file.append(data_rotation) |
| | |
| | for line_data in data_each_file: |
| | line_data = np.array2string(line_data, max_line_width=np.inf, precision=6, suppress_small=False, separator=' ') |
| | wirte_file.write(line_data[1:-2]+'\n') |
| |
|
| | counter += 1 |
| | if verbose: |
| | logger.info('data_shape:', data_rotation.shape, 'process:', counter, '/', len(bvh_files_dirs)) |