EMAGE / dataloaders /data_tools.py
H-Liu1997's picture
Upload folder using huggingface_hub
2d47d90 verified
raw history blame
No virus
51.4 kB
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())
@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)
#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))