Jialin Yang
Initial release on Huggingface Spaces with Gradio UI
352b049
from dataclasses import dataclass
FPS=60
from .base import SkeletonBaseClass
LANDMARKS = [
"pelvis", # check
"left_hip", # check
"right_hip", # check
"spine1", # check
"left_knee", # check
"right_knee", # check
"spine2",
"left_ankle", # check
"right_ankle", # check
"spine3",
"left_foot", # check, but wrong
"right_foot", # check, but wrong
"neck", # check
"left_collar",
"right_collar",
"head", # check
"left_shoulder", # check
"right_shoulder", # check
"left_elbow", # check
"right_elbow", # check
"left_wrist", # check
"right_wrist", # check
]
# ['GlobalHip', 'RHip', 'LHip', 'Spine1', 'RKnee', 'LKnee', 'Spine3', 'RHeel', 'LHeel', 'Neck', 'RFoot', 'LFoot', 'BMN', 'RSI', 'LSI', 'Head', 'RShoulder', 'LShoulder', 'RElbow', 'LElbow', 'RWrist', 'LWrist']
SKELETON_NAMES = [
["pelvis", "right_hip", "right_knee", "right_ankle", "right_foot"],
["pelvis", "left_hip", "left_knee", "left_ankle", "left_foot"],
["pelvis", "spine1", "spine2", "spine3", "neck", "head"],
["spine3", "right_collar", "right_shoulder", "right_elbow", "right_wrist"],
["spine3", "left_collar", "left_shoulder", "left_elbow", "left_wrist"],
]
SKELETON = [[LANDMARKS.index(name) for name in names] for names in SKELETON_NAMES]
ROOT_INDEX = LANDMARKS.index("pelvis")
MIRRORED_LANDMARKS = {
"pelvis": "pelvis",
"left_hip": "right_hip",
"right_hip": "left_hip",
"spine1": "spine1",
"left_knee": "right_knee",
"right_knee": "left_knee",
"spine2": "spine2",
"left_ankle": "right_ankle",
"right_ankle": "left_ankle",
"spine3": "spine3",
"left_foot": "right_foot",
"right_foot": "left_foot",
"neck": "neck",
"left_collar": "right_collar",
"right_collar": "left_collar",
"head": "head",
"left_shoulder": "right_shoulder",
"right_shoulder": "left_shoulder",
"left_elbow": "right_elbow",
"right_elbow": "left_elbow",
"left_wrist": "right_wrist",
"right_wrist": "left_wrist",
}
MIRRORED_INDICES = [
LANDMARKS.index(MIRRORED_LANDMARKS[landmark]) for landmark in LANDMARKS
]
TO_HUMANML_NAMES = [
("pelvis", "pelvis"),
("right_hip", "right_hip"),
("right_knee", "right_knee"),
("right_ankle", "right_ankle"),
("right_foot", "right_foot"),
("left_hip", "left_hip"),
("left_knee", "left_knee"),
("left_ankle", "left_ankle"),
("left_foot", "left_foot"),
("spine1", "spine1"),
("spine2", "spine2"),
("spine3", "spine3"),
("neck", "neck"),
("head", "head"),
("left_collar", "left_collar"),
("right_collar", "right_collar"),
("left_shoulder", "left_shoulder"),
("right_shoulder", "right_shoulder"),
("left_elbow", "left_elbow"),
("right_elbow", "right_elbow"),
("left_wrist", "left_wrist"),
("right_wrist", "right_wrist"),
]
LIMBSEQ = [
[0, 3],
[3, 6],
[6, 9],
[9, 12],
[12, 15], # body
[9, 14],
[14, 17],
[17, 19],
[19, 21], # right arm
[9, 13],
[13, 16],
[16, 18],
[18, 20], # left arm
[0, 2],
[2, 5],
[5, 8],
[8, 11], # right leg
[0, 1],
[1, 4],
[4, 7],
[7, 10], # left leg
]
PARENTS= [-1, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 9, 12, 13, 14, 16, 17, 18, 19]
PARENTS_COLOR_LIST = ["m", 'r', 'l', "m", 'r', 'l', "m", 'r', 'l', "m", 'r', 'l', "m", 'r', 'l', "m", 'r', 'l', 'r', 'l', 'r', 'l']
LIMB_POSITIONS = [
"m",
"m",
"m",
"m",
"m",
"r",
"r",
"r",
"r",
"l",
"l",
"l",
"l",
"r",
"r",
"r",
"r",
"l",
"l",
"l",
"l",
]
Amass = SkeletonBaseClass(
LANDMARKS,
SKELETON_NAMES,
SKELETON,
ROOT_INDEX,
MIRRORED_LANDMARKS,
MIRRORED_INDICES,
TO_HUMANML_NAMES,
LIMBSEQ,
LIMB_POSITIONS,
PARENTS,
PARENTS_COLOR_LIST,
FPS
)