Spaces:
Sleeping
Sleeping
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 * | |
# pose version fpsxx_trinity/japanese_joints(_xxx) | |
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], | |
# 'nose': [3,168], | |
# 'right_eye': [3,171], | |
# 'left_eye': [3,174], | |
# 'right_ear': [3,177], | |
# 'left_ear': [3,180], | |
# 'left_big_toe': [3,183], | |
# 'left_small_toe': [3,186], | |
# 'left_heel': [3,189], | |
# 'right_big_toe': [3,192], | |
# 'right_small_toe': [3,195], | |
# 'right_heel': [3,198], | |
# 'left_thumb': [3,201], | |
# 'left_index': [3,204], | |
# 'left_middle': [3,207], | |
# 'left_ring': [3,210], | |
# 'left_pinky': [3,213], | |
# 'right_thumb': [3,216], | |
# 'right_index': [3,219], | |
# 'right_middle': [3,222], | |
# 'right_ring': [3,225], | |
# 'right_pinky': [3,228], | |
# 'right_eye_brow1': [3,231], | |
# 'right_eye_brow2': [3,234], | |
# 'right_eye_brow3': [3,237], | |
# 'right_eye_brow4': [3,240], | |
# 'right_eye_brow5': [3,243], | |
# 'left_eye_brow5': [3,246], | |
# 'left_eye_brow4': [3,249], | |
# 'left_eye_brow3': [3,252], | |
# 'left_eye_brow2': [3,255], | |
# 'left_eye_brow1': [3,258], | |
# 'nose1': [3,261], | |
# 'nose2': [3,264], | |
# 'nose3': [3,267], | |
# 'nose4': [3,270], | |
# 'right_nose_2': [3,273], | |
# 'right_nose_1': [3,276], | |
# 'nose_middle': [3,279], | |
# 'left_nose_1': [3,282], | |
# 'left_nose_2': [3,285], | |
# 'right_eye1': [3,288], | |
# 'right_eye2': [3,291], | |
# 'right_eye3': [3,294], | |
# 'right_eye4': [3,297], | |
# 'right_eye5': [3,300], | |
# 'right_eye6': [3,303], | |
# 'left_eye4': [3,306], | |
# 'left_eye3': [3,309], | |
# 'left_eye2': [3,312], | |
# 'left_eye1': [3,315], | |
# 'left_eye6': [3,318], | |
# 'left_eye5': [3,321], | |
# 'right_mouth_1': [3,324], | |
# 'right_mouth_2': [3,327], | |
# 'right_mouth_3': [3,330], | |
# 'mouth_top': [3,333], | |
# 'left_mouth_3': [3,336], | |
# 'left_mouth_2': [3,339], | |
# 'left_mouth_1': [3,342], | |
# 'left_mouth_5': [3,345], | |
# 'left_mouth_4': [3,348], | |
# 'mouth_bottom': [3,351], | |
# 'right_mouth_4': [3,354], | |
# 'right_mouth_5': [3,357], | |
# 'right_lip_1': [3,360], | |
# 'right_lip_2': [3,363], | |
# 'lip_top': [3,366], | |
# 'left_lip_2': [3,369], | |
# 'left_lip_1': [3,372], | |
# 'left_lip_3': [3,375], | |
# 'lip_bottom': [3,378], | |
# 'right_lip_3': [3,381], | |
# 'right_contour_1': [3,384], | |
# 'right_contour_2': [3,387], | |
# 'right_contour_3': [3,390], | |
# 'right_contour_4': [3,393], | |
# 'right_contour_5': [3,396], | |
# 'right_contour_6': [3,399], | |
# 'right_contour_7': [3,402], | |
# 'right_contour_8': [3,405], | |
# 'contour_middle': [3,408], | |
# 'left_contour_8': [3,411], | |
# 'left_contour_7': [3,414], | |
# 'left_contour_6': [3,417], | |
# 'left_contour_5': [3,420], | |
# 'left_contour_4': [3,423], | |
# 'left_contour_3': [3,426], | |
# 'left_contour_2': [3,429], | |
# 'left_contour_1': [3,432], | |
}, | |
"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_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_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": { | |
# "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_upper": { | |
#"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_hands": { | |
#"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_lower": { | |
"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_face": { | |
# "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_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": { | |
#'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, | |
}, | |
"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": { | |
#'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, | |
'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 # pandas dataframe for n frames * joints * 6 | |
self.gt_pos = None # n frames * (joints + 13) * 3 | |
self.op_rot = None # pandas dataframe for n frames * joints * 6 | |
self.op_pos = None # n frames * (joints + 13) * 3 | |
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()) | |
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 | |
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) | |
#print(mu1[0], mu2[0]) | |
sigma1 = np.atleast_2d(sigma1) | |
sigma2 = np.atleast_2d(sigma2) | |
#print(sigma1[0], sigma2[0]) | |
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 | |
# Product might be almost singular | |
covmean, _ = linalg.sqrtm(sigma1.dot(sigma2), disp=False) | |
#print(diff, covmean[0]) | |
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)) | |
# Numerical error might give slight imaginary component | |
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)] | |
#print(f'full_body contains {len(full_body)//3} joints') | |
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') | |
#print(f'calculate fid for {len(selected_body)//3} joints') | |
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) | |
#test_seq_list = os.list_dir(demo_name).sort() | |
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:] | |
#print(short_name) | |
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()): # here is 147 rotations by 3 | |
#print(data_rotation[ori_list[k][1]-v:ori_list[k][1]], data[iii*3:iii*3+3]) | |
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)) |