liyy201912's picture
Upload folder using huggingface_hub
cc0dd3c
# Copyright (c) OpenMMLab. All rights reserved.
from typing import Dict, List, Tuple
def get_eye_keypoint_ids(dataset_meta: Dict) -> Tuple[int, int]:
"""A helper function to get the keypoint indices of left and right eyes
from the dataset meta information.
Args:
dataset_meta (dict): dataset meta information.
Returns:
tuple[int, int]: The keypoint indices of left eye and right eye.
"""
left_eye_idx = None
right_eye_idx = None
# try obtaining eye point ids from dataset_meta
keypoint_name2id = dataset_meta.get('keypoint_name2id', {})
left_eye_idx = keypoint_name2id.get('left_eye', None)
right_eye_idx = keypoint_name2id.get('right_eye', None)
if left_eye_idx is None or right_eye_idx is None:
# Fall back to hard coded keypoint id
dataset_name = dataset_meta.get('dataset_name', 'unknown dataset')
if dataset_name in {'coco', 'coco_wholebody'}:
left_eye_idx = 1
right_eye_idx = 2
elif dataset_name in {'animalpose', 'ap10k'}:
left_eye_idx = 0
right_eye_idx = 1
else:
raise ValueError('Can not determine the eye keypoint id of '
f'{dataset_name}')
return left_eye_idx, right_eye_idx
def get_face_keypoint_ids(dataset_meta: Dict) -> List:
"""A helper function to get the keypoint indices of the face from the
dataset meta information.
Args:
dataset_meta (dict): dataset meta information.
Returns:
list[int]: face keypoint indices. The length depends on the dataset.
"""
face_indices = []
# try obtaining nose point ids from dataset_meta
keypoint_name2id = dataset_meta.get('keypoint_name2id', {})
for id in range(68):
face_indices.append(keypoint_name2id.get(f'face-{id}', None))
if None in face_indices:
# Fall back to hard coded keypoint id
dataset_name = dataset_meta.get('dataset_name', 'unknown dataset')
if dataset_name in {'coco_wholebody'}:
face_indices = list(range(23, 91))
else:
raise ValueError('Can not determine the face id of '
f'{dataset_name}')
return face_indices
def get_wrist_keypoint_ids(dataset_meta: Dict) -> Tuple[int, int]:
"""A helper function to get the keypoint indices of left and right wrists
from the dataset meta information.
Args:
dataset_meta (dict): dataset meta information.
Returns:
tuple[int, int]: The keypoint indices of left and right wrists.
"""
# try obtaining wrist point ids from dataset_meta
keypoint_name2id = dataset_meta.get('keypoint_name2id', {})
left_wrist_idx = keypoint_name2id.get('left_wrist', None)
right_wrist_idx = keypoint_name2id.get('right_wrist', None)
if left_wrist_idx is None or right_wrist_idx is None:
# Fall back to hard coded keypoint id
dataset_name = dataset_meta.get('dataset_name', 'unknown dataset')
if dataset_name in {'coco', 'coco_wholebody'}:
left_wrist_idx = 9
right_wrist_idx = 10
elif dataset_name == 'animalpose':
left_wrist_idx = 16
right_wrist_idx = 17
elif dataset_name == 'ap10k':
left_wrist_idx = 7
right_wrist_idx = 10
else:
raise ValueError('Can not determine the eye keypoint id of '
f'{dataset_name}')
return left_wrist_idx, right_wrist_idx
def get_mouth_keypoint_ids(dataset_meta: Dict) -> int:
"""A helper function to get the mouth keypoint index from the dataset meta
information.
Args:
dataset_meta (dict): dataset meta information.
Returns:
int: The mouth keypoint index
"""
# try obtaining mouth point ids from dataset_info
keypoint_name2id = dataset_meta.get('keypoint_name2id', {})
mouth_index = keypoint_name2id.get('face-62', None)
if mouth_index is None:
# Fall back to hard coded keypoint id
dataset_name = dataset_meta.get('dataset_name', 'unknown dataset')
if dataset_name == 'coco_wholebody':
mouth_index = 85
else:
raise ValueError('Can not determine the eye keypoint id of '
f'{dataset_name}')
return mouth_index
def get_hand_keypoint_ids(dataset_meta: Dict) -> List[int]:
"""A helper function to get the keypoint indices of left and right hand
from the dataset meta information.
Args:
dataset_meta (dict): dataset meta information.
Returns:
list[int]: hand keypoint indices. The length depends on the dataset.
"""
# try obtaining hand keypoint ids from dataset_meta
keypoint_name2id = dataset_meta.get('keypoint_name2id', {})
hand_indices = []
hand_indices.append(keypoint_name2id.get('left_hand_root', None))
for id in range(1, 5):
hand_indices.append(keypoint_name2id.get(f'left_thumb{id}', None))
for id in range(1, 5):
hand_indices.append(keypoint_name2id.get(f'left_forefinger{id}', None))
for id in range(1, 5):
hand_indices.append(
keypoint_name2id.get(f'left_middle_finger{id}', None))
for id in range(1, 5):
hand_indices.append(
keypoint_name2id.get(f'left_ring_finger{id}', None))
for id in range(1, 5):
hand_indices.append(
keypoint_name2id.get(f'left_pinky_finger{id}', None))
hand_indices.append(keypoint_name2id.get('right_hand_root', None))
for id in range(1, 5):
hand_indices.append(keypoint_name2id.get(f'right_thumb{id}', None))
for id in range(1, 5):
hand_indices.append(
keypoint_name2id.get(f'right_forefinger{id}', None))
for id in range(1, 5):
hand_indices.append(
keypoint_name2id.get(f'right_middle_finger{id}', None))
for id in range(1, 5):
hand_indices.append(
keypoint_name2id.get(f'right_ring_finger{id}', None))
for id in range(1, 5):
hand_indices.append(
keypoint_name2id.get(f'right_pinky_finger{id}', None))
if None in hand_indices:
# Fall back to hard coded keypoint id
dataset_name = dataset_meta.get('dataset_name', 'unknown dataset')
if dataset_name in {'coco_wholebody'}:
hand_indices = list(range(91, 133))
else:
raise ValueError('Can not determine the hand id of '
f'{dataset_name}')
return hand_indices