Commit ca8a762a authored by chenzk's avatar chenzk
Browse files

v1.0

parents
Pipeline #716 failed with stages
in 0 seconds
dataset_info = dict(
dataset_name='onehand10k',
paper_info=dict(
author='Wang, Yangang and Peng, Cong and Liu, Yebin',
title='Mask-pose cascaded cnn for 2d hand pose estimation '
'from single color image',
container='IEEE Transactions on Circuits and Systems '
'for Video Technology',
year='2018',
homepage='https://www.yangangwang.com/papers/WANG-MCC-2018-10.html',
),
keypoint_info={
0:
dict(name='wrist', id=0, color=[255, 255, 255], type='', swap=''),
1:
dict(name='thumb1', id=1, color=[255, 128, 0], type='', swap=''),
2:
dict(name='thumb2', id=2, color=[255, 128, 0], type='', swap=''),
3:
dict(name='thumb3', id=3, color=[255, 128, 0], type='', swap=''),
4:
dict(name='thumb4', id=4, color=[255, 128, 0], type='', swap=''),
5:
dict(
name='forefinger1', id=5, color=[255, 153, 255], type='', swap=''),
6:
dict(
name='forefinger2', id=6, color=[255, 153, 255], type='', swap=''),
7:
dict(
name='forefinger3', id=7, color=[255, 153, 255], type='', swap=''),
8:
dict(
name='forefinger4', id=8, color=[255, 153, 255], type='', swap=''),
9:
dict(
name='middle_finger1',
id=9,
color=[102, 178, 255],
type='',
swap=''),
10:
dict(
name='middle_finger2',
id=10,
color=[102, 178, 255],
type='',
swap=''),
11:
dict(
name='middle_finger3',
id=11,
color=[102, 178, 255],
type='',
swap=''),
12:
dict(
name='middle_finger4',
id=12,
color=[102, 178, 255],
type='',
swap=''),
13:
dict(
name='ring_finger1', id=13, color=[255, 51, 51], type='', swap=''),
14:
dict(
name='ring_finger2', id=14, color=[255, 51, 51], type='', swap=''),
15:
dict(
name='ring_finger3', id=15, color=[255, 51, 51], type='', swap=''),
16:
dict(
name='ring_finger4', id=16, color=[255, 51, 51], type='', swap=''),
17:
dict(name='pinky_finger1', id=17, color=[0, 255, 0], type='', swap=''),
18:
dict(name='pinky_finger2', id=18, color=[0, 255, 0], type='', swap=''),
19:
dict(name='pinky_finger3', id=19, color=[0, 255, 0], type='', swap=''),
20:
dict(name='pinky_finger4', id=20, color=[0, 255, 0], type='', swap='')
},
skeleton_info={
0:
dict(link=('wrist', 'thumb1'), id=0, color=[255, 128, 0]),
1:
dict(link=('thumb1', 'thumb2'), id=1, color=[255, 128, 0]),
2:
dict(link=('thumb2', 'thumb3'), id=2, color=[255, 128, 0]),
3:
dict(link=('thumb3', 'thumb4'), id=3, color=[255, 128, 0]),
4:
dict(link=('wrist', 'forefinger1'), id=4, color=[255, 153, 255]),
5:
dict(link=('forefinger1', 'forefinger2'), id=5, color=[255, 153, 255]),
6:
dict(link=('forefinger2', 'forefinger3'), id=6, color=[255, 153, 255]),
7:
dict(link=('forefinger3', 'forefinger4'), id=7, color=[255, 153, 255]),
8:
dict(link=('wrist', 'middle_finger1'), id=8, color=[102, 178, 255]),
9:
dict(
link=('middle_finger1', 'middle_finger2'),
id=9,
color=[102, 178, 255]),
10:
dict(
link=('middle_finger2', 'middle_finger3'),
id=10,
color=[102, 178, 255]),
11:
dict(
link=('middle_finger3', 'middle_finger4'),
id=11,
color=[102, 178, 255]),
12:
dict(link=('wrist', 'ring_finger1'), id=12, color=[255, 51, 51]),
13:
dict(
link=('ring_finger1', 'ring_finger2'), id=13, color=[255, 51, 51]),
14:
dict(
link=('ring_finger2', 'ring_finger3'), id=14, color=[255, 51, 51]),
15:
dict(
link=('ring_finger3', 'ring_finger4'), id=15, color=[255, 51, 51]),
16:
dict(link=('wrist', 'pinky_finger1'), id=16, color=[0, 255, 0]),
17:
dict(
link=('pinky_finger1', 'pinky_finger2'), id=17, color=[0, 255, 0]),
18:
dict(
link=('pinky_finger2', 'pinky_finger3'), id=18, color=[0, 255, 0]),
19:
dict(
link=('pinky_finger3', 'pinky_finger4'), id=19, color=[0, 255, 0])
},
joint_weights=[1.] * 21,
sigmas=[])
dataset_info = dict(
dataset_name='panoptic_pose_3d',
paper_info=dict(
author='Joo, Hanbyul and Simon, Tomas and Li, Xulong'
'and Liu, Hao and Tan, Lei and Gui, Lin and Banerjee, Sean'
'and Godisart, Timothy and Nabbe, Bart and Matthews, Iain'
'and Kanade, Takeo and Nobuhara, Shohei and Sheikh, Yaser',
title='Panoptic Studio: A Massively Multiview System '
'for Interaction Motion Capture',
container='IEEE Transactions on Pattern Analysis'
' and Machine Intelligence',
year='2017',
homepage='http://domedb.perception.cs.cmu.edu',
),
keypoint_info={
0:
dict(name='neck', id=0, color=[51, 153, 255], type='upper', swap=''),
1:
dict(name='nose', id=1, color=[51, 153, 255], type='upper', swap=''),
2:
dict(name='mid_hip', id=2, color=[0, 255, 0], type='lower', swap=''),
3:
dict(
name='left_shoulder',
id=3,
color=[0, 255, 0],
type='upper',
swap='right_shoulder'),
4:
dict(
name='left_elbow',
id=4,
color=[0, 255, 0],
type='upper',
swap='right_elbow'),
5:
dict(
name='left_wrist',
id=5,
color=[0, 255, 0],
type='upper',
swap='right_wrist'),
6:
dict(
name='left_hip',
id=6,
color=[0, 255, 0],
type='lower',
swap='right_hip'),
7:
dict(
name='left_knee',
id=7,
color=[0, 255, 0],
type='lower',
swap='right_knee'),
8:
dict(
name='left_ankle',
id=8,
color=[0, 255, 0],
type='lower',
swap='right_ankle'),
9:
dict(
name='right_shoulder',
id=9,
color=[255, 128, 0],
type='upper',
swap='left_shoulder'),
10:
dict(
name='right_elbow',
id=10,
color=[255, 128, 0],
type='upper',
swap='left_elbow'),
11:
dict(
name='right_wrist',
id=11,
color=[255, 128, 0],
type='upper',
swap='left_wrist'),
12:
dict(
name='right_hip',
id=12,
color=[255, 128, 0],
type='lower',
swap='left_hip'),
13:
dict(
name='right_knee',
id=13,
color=[255, 128, 0],
type='lower',
swap='left_knee'),
14:
dict(
name='right_ankle',
id=14,
color=[255, 128, 0],
type='lower',
swap='left_ankle'),
15:
dict(
name='left_eye',
id=15,
color=[51, 153, 255],
type='upper',
swap='right_eye'),
16:
dict(
name='left_ear',
id=16,
color=[51, 153, 255],
type='upper',
swap='right_ear'),
17:
dict(
name='right_eye',
id=17,
color=[51, 153, 255],
type='upper',
swap='left_eye'),
18:
dict(
name='right_ear',
id=18,
color=[51, 153, 255],
type='upper',
swap='left_ear')
},
skeleton_info={
0: dict(link=('nose', 'neck'), id=0, color=[51, 153, 255]),
1: dict(link=('neck', 'left_shoulder'), id=1, color=[0, 255, 0]),
2: dict(link=('neck', 'right_shoulder'), id=2, color=[255, 128, 0]),
3: dict(link=('left_shoulder', 'left_elbow'), id=3, color=[0, 255, 0]),
4: dict(
link=('right_shoulder', 'right_elbow'), id=4, color=[255, 128, 0]),
5: dict(link=('left_elbow', 'left_wrist'), id=5, color=[0, 255, 0]),
6:
dict(link=('right_elbow', 'right_wrist'), id=6, color=[255, 128, 0]),
7: dict(link=('left_ankle', 'left_knee'), id=7, color=[0, 255, 0]),
8: dict(link=('left_knee', 'left_hip'), id=8, color=[0, 255, 0]),
9: dict(link=('right_ankle', 'right_knee'), id=9, color=[255, 128, 0]),
10: dict(link=('right_knee', 'right_hip'), id=10, color=[255, 128, 0]),
11: dict(link=('mid_hip', 'left_hip'), id=11, color=[0, 255, 0]),
12: dict(link=('mid_hip', 'right_hip'), id=12, color=[255, 128, 0]),
13: dict(link=('mid_hip', 'neck'), id=13, color=[51, 153, 255]),
},
joint_weights=[
1.0, 1.0, 1.0, 1.0, 1.2, 1.5, 1.0, 1.2, 1.5, 1.0, 1.2, 1.5, 1.0, 1.2,
1.5, 1.0, 1.0, 1.0, 1.0
],
sigmas=[
0.026, 0.026, 0.107, 0.079, 0.072, 0.062, 0.107, 0.087, 0.089, 0.079,
0.072, 0.062, 0.107, 0.087, 0.089, 0.025, 0.035, 0.025, 0.035
])
dataset_info = dict(
dataset_name='panoptic_hand2d',
paper_info=dict(
author='Simon, Tomas and Joo, Hanbyul and '
'Matthews, Iain and Sheikh, Yaser',
title='Hand keypoint detection in single images using '
'multiview bootstrapping',
container='Proceedings of the IEEE conference on '
'Computer Vision and Pattern Recognition',
year='2017',
homepage='http://domedb.perception.cs.cmu.edu/handdb.html',
),
keypoint_info={
0:
dict(name='wrist', id=0, color=[255, 255, 255], type='', swap=''),
1:
dict(name='thumb1', id=1, color=[255, 128, 0], type='', swap=''),
2:
dict(name='thumb2', id=2, color=[255, 128, 0], type='', swap=''),
3:
dict(name='thumb3', id=3, color=[255, 128, 0], type='', swap=''),
4:
dict(name='thumb4', id=4, color=[255, 128, 0], type='', swap=''),
5:
dict(
name='forefinger1', id=5, color=[255, 153, 255], type='', swap=''),
6:
dict(
name='forefinger2', id=6, color=[255, 153, 255], type='', swap=''),
7:
dict(
name='forefinger3', id=7, color=[255, 153, 255], type='', swap=''),
8:
dict(
name='forefinger4', id=8, color=[255, 153, 255], type='', swap=''),
9:
dict(
name='middle_finger1',
id=9,
color=[102, 178, 255],
type='',
swap=''),
10:
dict(
name='middle_finger2',
id=10,
color=[102, 178, 255],
type='',
swap=''),
11:
dict(
name='middle_finger3',
id=11,
color=[102, 178, 255],
type='',
swap=''),
12:
dict(
name='middle_finger4',
id=12,
color=[102, 178, 255],
type='',
swap=''),
13:
dict(
name='ring_finger1', id=13, color=[255, 51, 51], type='', swap=''),
14:
dict(
name='ring_finger2', id=14, color=[255, 51, 51], type='', swap=''),
15:
dict(
name='ring_finger3', id=15, color=[255, 51, 51], type='', swap=''),
16:
dict(
name='ring_finger4', id=16, color=[255, 51, 51], type='', swap=''),
17:
dict(name='pinky_finger1', id=17, color=[0, 255, 0], type='', swap=''),
18:
dict(name='pinky_finger2', id=18, color=[0, 255, 0], type='', swap=''),
19:
dict(name='pinky_finger3', id=19, color=[0, 255, 0], type='', swap=''),
20:
dict(name='pinky_finger4', id=20, color=[0, 255, 0], type='', swap='')
},
skeleton_info={
0:
dict(link=('wrist', 'thumb1'), id=0, color=[255, 128, 0]),
1:
dict(link=('thumb1', 'thumb2'), id=1, color=[255, 128, 0]),
2:
dict(link=('thumb2', 'thumb3'), id=2, color=[255, 128, 0]),
3:
dict(link=('thumb3', 'thumb4'), id=3, color=[255, 128, 0]),
4:
dict(link=('wrist', 'forefinger1'), id=4, color=[255, 153, 255]),
5:
dict(link=('forefinger1', 'forefinger2'), id=5, color=[255, 153, 255]),
6:
dict(link=('forefinger2', 'forefinger3'), id=6, color=[255, 153, 255]),
7:
dict(link=('forefinger3', 'forefinger4'), id=7, color=[255, 153, 255]),
8:
dict(link=('wrist', 'middle_finger1'), id=8, color=[102, 178, 255]),
9:
dict(
link=('middle_finger1', 'middle_finger2'),
id=9,
color=[102, 178, 255]),
10:
dict(
link=('middle_finger2', 'middle_finger3'),
id=10,
color=[102, 178, 255]),
11:
dict(
link=('middle_finger3', 'middle_finger4'),
id=11,
color=[102, 178, 255]),
12:
dict(link=('wrist', 'ring_finger1'), id=12, color=[255, 51, 51]),
13:
dict(
link=('ring_finger1', 'ring_finger2'), id=13, color=[255, 51, 51]),
14:
dict(
link=('ring_finger2', 'ring_finger3'), id=14, color=[255, 51, 51]),
15:
dict(
link=('ring_finger3', 'ring_finger4'), id=15, color=[255, 51, 51]),
16:
dict(link=('wrist', 'pinky_finger1'), id=16, color=[0, 255, 0]),
17:
dict(
link=('pinky_finger1', 'pinky_finger2'), id=17, color=[0, 255, 0]),
18:
dict(
link=('pinky_finger2', 'pinky_finger3'), id=18, color=[0, 255, 0]),
19:
dict(
link=('pinky_finger3', 'pinky_finger4'), id=19, color=[0, 255, 0])
},
joint_weights=[1.] * 21,
sigmas=[])
dataset_info = dict(
dataset_name='posetrack18',
paper_info=dict(
author='Andriluka, Mykhaylo and Iqbal, Umar and '
'Insafutdinov, Eldar and Pishchulin, Leonid and '
'Milan, Anton and Gall, Juergen and Schiele, Bernt',
title='Posetrack: A benchmark for human pose estimation and tracking',
container='Proceedings of the IEEE Conference on '
'Computer Vision and Pattern Recognition',
year='2018',
homepage='https://posetrack.net/users/download.php',
),
keypoint_info={
0:
dict(name='nose', id=0, color=[51, 153, 255], type='upper', swap=''),
1:
dict(
name='head_bottom',
id=1,
color=[51, 153, 255],
type='upper',
swap=''),
2:
dict(
name='head_top', id=2, color=[51, 153, 255], type='upper',
swap=''),
3:
dict(
name='left_ear',
id=3,
color=[51, 153, 255],
type='upper',
swap='right_ear'),
4:
dict(
name='right_ear',
id=4,
color=[51, 153, 255],
type='upper',
swap='left_ear'),
5:
dict(
name='left_shoulder',
id=5,
color=[0, 255, 0],
type='upper',
swap='right_shoulder'),
6:
dict(
name='right_shoulder',
id=6,
color=[255, 128, 0],
type='upper',
swap='left_shoulder'),
7:
dict(
name='left_elbow',
id=7,
color=[0, 255, 0],
type='upper',
swap='right_elbow'),
8:
dict(
name='right_elbow',
id=8,
color=[255, 128, 0],
type='upper',
swap='left_elbow'),
9:
dict(
name='left_wrist',
id=9,
color=[0, 255, 0],
type='upper',
swap='right_wrist'),
10:
dict(
name='right_wrist',
id=10,
color=[255, 128, 0],
type='upper',
swap='left_wrist'),
11:
dict(
name='left_hip',
id=11,
color=[0, 255, 0],
type='lower',
swap='right_hip'),
12:
dict(
name='right_hip',
id=12,
color=[255, 128, 0],
type='lower',
swap='left_hip'),
13:
dict(
name='left_knee',
id=13,
color=[0, 255, 0],
type='lower',
swap='right_knee'),
14:
dict(
name='right_knee',
id=14,
color=[255, 128, 0],
type='lower',
swap='left_knee'),
15:
dict(
name='left_ankle',
id=15,
color=[0, 255, 0],
type='lower',
swap='right_ankle'),
16:
dict(
name='right_ankle',
id=16,
color=[255, 128, 0],
type='lower',
swap='left_ankle')
},
skeleton_info={
0:
dict(link=('left_ankle', 'left_knee'), id=0, color=[0, 255, 0]),
1:
dict(link=('left_knee', 'left_hip'), id=1, color=[0, 255, 0]),
2:
dict(link=('right_ankle', 'right_knee'), id=2, color=[255, 128, 0]),
3:
dict(link=('right_knee', 'right_hip'), id=3, color=[255, 128, 0]),
4:
dict(link=('left_hip', 'right_hip'), id=4, color=[51, 153, 255]),
5:
dict(link=('left_shoulder', 'left_hip'), id=5, color=[51, 153, 255]),
6:
dict(link=('right_shoulder', 'right_hip'), id=6, color=[51, 153, 255]),
7:
dict(
link=('left_shoulder', 'right_shoulder'),
id=7,
color=[51, 153, 255]),
8:
dict(link=('left_shoulder', 'left_elbow'), id=8, color=[0, 255, 0]),
9:
dict(
link=('right_shoulder', 'right_elbow'), id=9, color=[255, 128, 0]),
10:
dict(link=('left_elbow', 'left_wrist'), id=10, color=[0, 255, 0]),
11:
dict(link=('right_elbow', 'right_wrist'), id=11, color=[255, 128, 0]),
12:
dict(link=('nose', 'head_bottom'), id=12, color=[51, 153, 255]),
13:
dict(link=('nose', 'head_top'), id=13, color=[51, 153, 255]),
14:
dict(
link=('head_bottom', 'left_shoulder'), id=14, color=[51, 153,
255]),
15:
dict(
link=('head_bottom', 'right_shoulder'),
id=15,
color=[51, 153, 255])
},
joint_weights=[
1., 1., 1., 1., 1., 1., 1., 1.2, 1.2, 1.5, 1.5, 1., 1., 1.2, 1.2, 1.5,
1.5
],
sigmas=[
0.026, 0.025, 0.025, 0.035, 0.035, 0.079, 0.079, 0.072, 0.072, 0.062,
0.062, 0.107, 0.107, 0.087, 0.087, 0.089, 0.089
])
dataset_info = dict(
dataset_name='rhd2d',
paper_info=dict(
author='Christian Zimmermann and Thomas Brox',
title='Learning to Estimate 3D Hand Pose from Single RGB Images',
container='arXiv',
year='2017',
homepage='https://lmb.informatik.uni-freiburg.de/resources/'
'datasets/RenderedHandposeDataset.en.html',
),
# In RHD, 1-4: left thumb [tip to palm], which means the finger is from
# tip to palm, so as other fingers. Please refer to
# `https://lmb.informatik.uni-freiburg.de/resources/datasets/
# RenderedHandpose/README` for details of keypoint definition.
# But in COCO-WholeBody-Hand, FreiHand, CMU Panoptic HandDB, it is in
# inverse order. Pay attention to this if you want to combine RHD with
# other hand datasets to train a single model.
# Also, note that 'keypoint_info' will not directly affect the order of
# the keypoint in the dataset. It is mostly for visualization & storing
# information about flip_pairs.
keypoint_info={
0:
dict(name='wrist', id=0, color=[255, 255, 255], type='', swap=''),
1:
dict(name='thumb4', id=1, color=[255, 128, 0], type='', swap=''),
2:
dict(name='thumb3', id=2, color=[255, 128, 0], type='', swap=''),
3:
dict(name='thumb2', id=3, color=[255, 128, 0], type='', swap=''),
4:
dict(name='thumb1', id=4, color=[255, 128, 0], type='', swap=''),
5:
dict(
name='forefinger4', id=5, color=[255, 153, 255], type='', swap=''),
6:
dict(
name='forefinger3', id=6, color=[255, 153, 255], type='', swap=''),
7:
dict(
name='forefinger2', id=7, color=[255, 153, 255], type='', swap=''),
8:
dict(
name='forefinger1', id=8, color=[255, 153, 255], type='', swap=''),
9:
dict(
name='middle_finger4',
id=9,
color=[102, 178, 255],
type='',
swap=''),
10:
dict(
name='middle_finger3',
id=10,
color=[102, 178, 255],
type='',
swap=''),
11:
dict(
name='middle_finger2',
id=11,
color=[102, 178, 255],
type='',
swap=''),
12:
dict(
name='middle_finger1',
id=12,
color=[102, 178, 255],
type='',
swap=''),
13:
dict(
name='ring_finger4', id=13, color=[255, 51, 51], type='', swap=''),
14:
dict(
name='ring_finger3', id=14, color=[255, 51, 51], type='', swap=''),
15:
dict(
name='ring_finger2', id=15, color=[255, 51, 51], type='', swap=''),
16:
dict(
name='ring_finger1', id=16, color=[255, 51, 51], type='', swap=''),
17:
dict(name='pinky_finger4', id=17, color=[0, 255, 0], type='', swap=''),
18:
dict(name='pinky_finger3', id=18, color=[0, 255, 0], type='', swap=''),
19:
dict(name='pinky_finger2', id=19, color=[0, 255, 0], type='', swap=''),
20:
dict(name='pinky_finger1', id=20, color=[0, 255, 0], type='', swap='')
},
skeleton_info={
0:
dict(link=('wrist', 'thumb1'), id=0, color=[255, 128, 0]),
1:
dict(link=('thumb1', 'thumb2'), id=1, color=[255, 128, 0]),
2:
dict(link=('thumb2', 'thumb3'), id=2, color=[255, 128, 0]),
3:
dict(link=('thumb3', 'thumb4'), id=3, color=[255, 128, 0]),
4:
dict(link=('wrist', 'forefinger1'), id=4, color=[255, 153, 255]),
5:
dict(link=('forefinger1', 'forefinger2'), id=5, color=[255, 153, 255]),
6:
dict(link=('forefinger2', 'forefinger3'), id=6, color=[255, 153, 255]),
7:
dict(link=('forefinger3', 'forefinger4'), id=7, color=[255, 153, 255]),
8:
dict(link=('wrist', 'middle_finger1'), id=8, color=[102, 178, 255]),
9:
dict(
link=('middle_finger1', 'middle_finger2'),
id=9,
color=[102, 178, 255]),
10:
dict(
link=('middle_finger2', 'middle_finger3'),
id=10,
color=[102, 178, 255]),
11:
dict(
link=('middle_finger3', 'middle_finger4'),
id=11,
color=[102, 178, 255]),
12:
dict(link=('wrist', 'ring_finger1'), id=12, color=[255, 51, 51]),
13:
dict(
link=('ring_finger1', 'ring_finger2'), id=13, color=[255, 51, 51]),
14:
dict(
link=('ring_finger2', 'ring_finger3'), id=14, color=[255, 51, 51]),
15:
dict(
link=('ring_finger3', 'ring_finger4'), id=15, color=[255, 51, 51]),
16:
dict(link=('wrist', 'pinky_finger1'), id=16, color=[0, 255, 0]),
17:
dict(
link=('pinky_finger1', 'pinky_finger2'), id=17, color=[0, 255, 0]),
18:
dict(
link=('pinky_finger2', 'pinky_finger3'), id=18, color=[0, 255, 0]),
19:
dict(
link=('pinky_finger3', 'pinky_finger4'), id=19, color=[0, 255, 0])
},
joint_weights=[1.] * 21,
sigmas=[])
dataset_info = dict(
dataset_name='shelf',
paper_info=dict(
author='Belagiannis, Vasileios and Amin, Sikandar and Andriluka, '
'Mykhaylo and Schiele, Bernt and Navab, Nassir and Ilic, Slobodan',
title='3D Pictorial Structures for Multiple Human Pose Estimation',
container='IEEE Computer Society Conference on Computer Vision and '
'Pattern Recognition (CVPR)',
year='2014',
homepage='http://campar.in.tum.de/Chair/MultiHumanPose',
),
keypoint_info={
0:
dict(
name='right_ankle',
id=0,
color=[255, 128, 0],
type='lower',
swap='left_ankle'),
1:
dict(
name='right_knee',
id=1,
color=[255, 128, 0],
type='lower',
swap='left_knee'),
2:
dict(
name='right_hip',
id=2,
color=[255, 128, 0],
type='lower',
swap='left_hip'),
3:
dict(
name='left_hip',
id=3,
color=[0, 255, 0],
type='lower',
swap='right_hip'),
4:
dict(
name='left_knee',
id=4,
color=[0, 255, 0],
type='lower',
swap='right_knee'),
5:
dict(
name='left_ankle',
id=5,
color=[0, 255, 0],
type='lower',
swap='right_ankle'),
6:
dict(
name='right_wrist',
id=6,
color=[255, 128, 0],
type='upper',
swap='left_wrist'),
7:
dict(
name='right_elbow',
id=7,
color=[255, 128, 0],
type='upper',
swap='left_elbow'),
8:
dict(
name='right_shoulder',
id=8,
color=[255, 128, 0],
type='upper',
swap='left_shoulder'),
9:
dict(
name='left_shoulder',
id=9,
color=[0, 255, 0],
type='upper',
swap='right_shoulder'),
10:
dict(
name='left_elbow',
id=10,
color=[0, 255, 0],
type='upper',
swap='right_elbow'),
11:
dict(
name='left_wrist',
id=11,
color=[0, 255, 0],
type='upper',
swap='right_wrist'),
12:
dict(
name='bottom_head',
id=12,
color=[51, 153, 255],
type='upper',
swap=''),
13:
dict(
name='top_head',
id=13,
color=[51, 153, 255],
type='upper',
swap=''),
},
skeleton_info={
0:
dict(link=('right_ankle', 'right_knee'), id=0, color=[255, 128, 0]),
1:
dict(link=('right_knee', 'right_hip'), id=1, color=[255, 128, 0]),
2:
dict(link=('left_hip', 'left_knee'), id=2, color=[0, 255, 0]),
3:
dict(link=('left_knee', 'left_ankle'), id=3, color=[0, 255, 0]),
4:
dict(link=('right_hip', 'left_hip'), id=4, color=[51, 153, 255]),
5:
dict(link=('right_wrist', 'right_elbow'), id=5, color=[255, 128, 0]),
6:
dict(
link=('right_elbow', 'right_shoulder'), id=6, color=[255, 128, 0]),
7:
dict(link=('left_shoulder', 'left_elbow'), id=7, color=[0, 255, 0]),
8:
dict(link=('left_elbow', 'left_wrist'), id=8, color=[0, 255, 0]),
9:
dict(link=('right_hip', 'right_shoulder'), id=9, color=[255, 128, 0]),
10:
dict(link=('left_hip', 'left_shoulder'), id=10, color=[0, 255, 0]),
11:
dict(
link=('right_shoulder', 'bottom_head'), id=11, color=[255, 128,
0]),
12:
dict(link=('left_shoulder', 'bottom_head'), id=12, color=[0, 255, 0]),
13:
dict(link=('bottom_head', 'top_head'), id=13, color=[51, 153, 255]),
},
joint_weights=[
1.5, 1.2, 1.0, 1.0, 1.2, 1.5, 1.5, 1.2, 1.0, 1.0, 1.2, 1.5, 1.0, 1.0
],
sigmas=[
0.089, 0.087, 0.107, 0.107, 0.087, 0.089, 0.062, 0.072, 0.079, 0.079,
0.072, 0.062, 0.026, 0.026
])
dataset_info = dict(
dataset_name='ubody2d',
paper_info=dict(
author='Jing Lin, Ailing Zeng, Haoqian Wang, Lei Zhang, Yu Li',
title='One-Stage 3D Whole-Body Mesh Recovery with Component Aware'
'Transformer',
container='IEEE Computer Society Conference on Computer Vision and '
'Pattern Recognition (CVPR)',
year='2023',
homepage='https://github.com/IDEA-Research/OSX',
),
keypoint_info={
0:
dict(name='nose', id=0, color=[51, 153, 255], type='upper', swap=''),
1:
dict(
name='left_eye',
id=1,
color=[51, 153, 255],
type='upper',
swap='right_eye'),
2:
dict(
name='right_eye',
id=2,
color=[51, 153, 255],
type='upper',
swap='left_eye'),
3:
dict(
name='left_ear',
id=3,
color=[51, 153, 255],
type='upper',
swap='right_ear'),
4:
dict(
name='right_ear',
id=4,
color=[51, 153, 255],
type='upper',
swap='left_ear'),
5:
dict(
name='left_shoulder',
id=5,
color=[0, 255, 0],
type='upper',
swap='right_shoulder'),
6:
dict(
name='right_shoulder',
id=6,
color=[255, 128, 0],
type='upper',
swap='left_shoulder'),
7:
dict(
name='left_elbow',
id=7,
color=[0, 255, 0],
type='upper',
swap='right_elbow'),
8:
dict(
name='right_elbow',
id=8,
color=[255, 128, 0],
type='upper',
swap='left_elbow'),
9:
dict(
name='left_wrist',
id=9,
color=[0, 255, 0],
type='upper',
swap='right_wrist'),
10:
dict(
name='right_wrist',
id=10,
color=[255, 128, 0],
type='upper',
swap='left_wrist'),
11:
dict(
name='left_hip',
id=11,
color=[0, 255, 0],
type='lower',
swap='right_hip'),
12:
dict(
name='right_hip',
id=12,
color=[255, 128, 0],
type='lower',
swap='left_hip'),
13:
dict(
name='left_knee',
id=13,
color=[0, 255, 0],
type='lower',
swap='right_knee'),
14:
dict(
name='right_knee',
id=14,
color=[255, 128, 0],
type='lower',
swap='left_knee'),
15:
dict(
name='left_ankle',
id=15,
color=[0, 255, 0],
type='lower',
swap='right_ankle'),
16:
dict(
name='right_ankle',
id=16,
color=[255, 128, 0],
type='lower',
swap='left_ankle'),
17:
dict(
name='left_big_toe',
id=17,
color=[255, 128, 0],
type='lower',
swap='right_big_toe'),
18:
dict(
name='left_small_toe',
id=18,
color=[255, 128, 0],
type='lower',
swap='right_small_toe'),
19:
dict(
name='left_heel',
id=19,
color=[255, 128, 0],
type='lower',
swap='right_heel'),
20:
dict(
name='right_big_toe',
id=20,
color=[255, 128, 0],
type='lower',
swap='left_big_toe'),
21:
dict(
name='right_small_toe',
id=21,
color=[255, 128, 0],
type='lower',
swap='left_small_toe'),
22:
dict(
name='right_heel',
id=22,
color=[255, 128, 0],
type='lower',
swap='left_heel'),
23:
dict(
name='face-0',
id=23,
color=[255, 255, 255],
type='',
swap='face-16'),
24:
dict(
name='face-1',
id=24,
color=[255, 255, 255],
type='',
swap='face-15'),
25:
dict(
name='face-2',
id=25,
color=[255, 255, 255],
type='',
swap='face-14'),
26:
dict(
name='face-3',
id=26,
color=[255, 255, 255],
type='',
swap='face-13'),
27:
dict(
name='face-4',
id=27,
color=[255, 255, 255],
type='',
swap='face-12'),
28:
dict(
name='face-5',
id=28,
color=[255, 255, 255],
type='',
swap='face-11'),
29:
dict(
name='face-6',
id=29,
color=[255, 255, 255],
type='',
swap='face-10'),
30:
dict(
name='face-7',
id=30,
color=[255, 255, 255],
type='',
swap='face-9'),
31:
dict(name='face-8', id=31, color=[255, 255, 255], type='', swap=''),
32:
dict(
name='face-9',
id=32,
color=[255, 255, 255],
type='',
swap='face-7'),
33:
dict(
name='face-10',
id=33,
color=[255, 255, 255],
type='',
swap='face-6'),
34:
dict(
name='face-11',
id=34,
color=[255, 255, 255],
type='',
swap='face-5'),
35:
dict(
name='face-12',
id=35,
color=[255, 255, 255],
type='',
swap='face-4'),
36:
dict(
name='face-13',
id=36,
color=[255, 255, 255],
type='',
swap='face-3'),
37:
dict(
name='face-14',
id=37,
color=[255, 255, 255],
type='',
swap='face-2'),
38:
dict(
name='face-15',
id=38,
color=[255, 255, 255],
type='',
swap='face-1'),
39:
dict(
name='face-16',
id=39,
color=[255, 255, 255],
type='',
swap='face-0'),
40:
dict(
name='face-17',
id=40,
color=[255, 255, 255],
type='',
swap='face-26'),
41:
dict(
name='face-18',
id=41,
color=[255, 255, 255],
type='',
swap='face-25'),
42:
dict(
name='face-19',
id=42,
color=[255, 255, 255],
type='',
swap='face-24'),
43:
dict(
name='face-20',
id=43,
color=[255, 255, 255],
type='',
swap='face-23'),
44:
dict(
name='face-21',
id=44,
color=[255, 255, 255],
type='',
swap='face-22'),
45:
dict(
name='face-22',
id=45,
color=[255, 255, 255],
type='',
swap='face-21'),
46:
dict(
name='face-23',
id=46,
color=[255, 255, 255],
type='',
swap='face-20'),
47:
dict(
name='face-24',
id=47,
color=[255, 255, 255],
type='',
swap='face-19'),
48:
dict(
name='face-25',
id=48,
color=[255, 255, 255],
type='',
swap='face-18'),
49:
dict(
name='face-26',
id=49,
color=[255, 255, 255],
type='',
swap='face-17'),
50:
dict(name='face-27', id=50, color=[255, 255, 255], type='', swap=''),
51:
dict(name='face-28', id=51, color=[255, 255, 255], type='', swap=''),
52:
dict(name='face-29', id=52, color=[255, 255, 255], type='', swap=''),
53:
dict(name='face-30', id=53, color=[255, 255, 255], type='', swap=''),
54:
dict(
name='face-31',
id=54,
color=[255, 255, 255],
type='',
swap='face-35'),
55:
dict(
name='face-32',
id=55,
color=[255, 255, 255],
type='',
swap='face-34'),
56:
dict(name='face-33', id=56, color=[255, 255, 255], type='', swap=''),
57:
dict(
name='face-34',
id=57,
color=[255, 255, 255],
type='',
swap='face-32'),
58:
dict(
name='face-35',
id=58,
color=[255, 255, 255],
type='',
swap='face-31'),
59:
dict(
name='face-36',
id=59,
color=[255, 255, 255],
type='',
swap='face-45'),
60:
dict(
name='face-37',
id=60,
color=[255, 255, 255],
type='',
swap='face-44'),
61:
dict(
name='face-38',
id=61,
color=[255, 255, 255],
type='',
swap='face-43'),
62:
dict(
name='face-39',
id=62,
color=[255, 255, 255],
type='',
swap='face-42'),
63:
dict(
name='face-40',
id=63,
color=[255, 255, 255],
type='',
swap='face-47'),
64:
dict(
name='face-41',
id=64,
color=[255, 255, 255],
type='',
swap='face-46'),
65:
dict(
name='face-42',
id=65,
color=[255, 255, 255],
type='',
swap='face-39'),
66:
dict(
name='face-43',
id=66,
color=[255, 255, 255],
type='',
swap='face-38'),
67:
dict(
name='face-44',
id=67,
color=[255, 255, 255],
type='',
swap='face-37'),
68:
dict(
name='face-45',
id=68,
color=[255, 255, 255],
type='',
swap='face-36'),
69:
dict(
name='face-46',
id=69,
color=[255, 255, 255],
type='',
swap='face-41'),
70:
dict(
name='face-47',
id=70,
color=[255, 255, 255],
type='',
swap='face-40'),
71:
dict(
name='face-48',
id=71,
color=[255, 255, 255],
type='',
swap='face-54'),
72:
dict(
name='face-49',
id=72,
color=[255, 255, 255],
type='',
swap='face-53'),
73:
dict(
name='face-50',
id=73,
color=[255, 255, 255],
type='',
swap='face-52'),
74:
dict(name='face-51', id=74, color=[255, 255, 255], type='', swap=''),
75:
dict(
name='face-52',
id=75,
color=[255, 255, 255],
type='',
swap='face-50'),
76:
dict(
name='face-53',
id=76,
color=[255, 255, 255],
type='',
swap='face-49'),
77:
dict(
name='face-54',
id=77,
color=[255, 255, 255],
type='',
swap='face-48'),
78:
dict(
name='face-55',
id=78,
color=[255, 255, 255],
type='',
swap='face-59'),
79:
dict(
name='face-56',
id=79,
color=[255, 255, 255],
type='',
swap='face-58'),
80:
dict(name='face-57', id=80, color=[255, 255, 255], type='', swap=''),
81:
dict(
name='face-58',
id=81,
color=[255, 255, 255],
type='',
swap='face-56'),
82:
dict(
name='face-59',
id=82,
color=[255, 255, 255],
type='',
swap='face-55'),
83:
dict(
name='face-60',
id=83,
color=[255, 255, 255],
type='',
swap='face-64'),
84:
dict(
name='face-61',
id=84,
color=[255, 255, 255],
type='',
swap='face-63'),
85:
dict(name='face-62', id=85, color=[255, 255, 255], type='', swap=''),
86:
dict(
name='face-63',
id=86,
color=[255, 255, 255],
type='',
swap='face-61'),
87:
dict(
name='face-64',
id=87,
color=[255, 255, 255],
type='',
swap='face-60'),
88:
dict(
name='face-65',
id=88,
color=[255, 255, 255],
type='',
swap='face-67'),
89:
dict(name='face-66', id=89, color=[255, 255, 255], type='', swap=''),
90:
dict(
name='face-67',
id=90,
color=[255, 255, 255],
type='',
swap='face-65'),
91:
dict(
name='left_hand_root',
id=91,
color=[255, 255, 255],
type='',
swap='right_hand_root'),
92:
dict(
name='left_thumb1',
id=92,
color=[255, 128, 0],
type='',
swap='right_thumb1'),
93:
dict(
name='left_thumb2',
id=93,
color=[255, 128, 0],
type='',
swap='right_thumb2'),
94:
dict(
name='left_thumb3',
id=94,
color=[255, 128, 0],
type='',
swap='right_thumb3'),
95:
dict(
name='left_thumb4',
id=95,
color=[255, 128, 0],
type='',
swap='right_thumb4'),
96:
dict(
name='left_forefinger1',
id=96,
color=[255, 153, 255],
type='',
swap='right_forefinger1'),
97:
dict(
name='left_forefinger2',
id=97,
color=[255, 153, 255],
type='',
swap='right_forefinger2'),
98:
dict(
name='left_forefinger3',
id=98,
color=[255, 153, 255],
type='',
swap='right_forefinger3'),
99:
dict(
name='left_forefinger4',
id=99,
color=[255, 153, 255],
type='',
swap='right_forefinger4'),
100:
dict(
name='left_middle_finger1',
id=100,
color=[102, 178, 255],
type='',
swap='right_middle_finger1'),
101:
dict(
name='left_middle_finger2',
id=101,
color=[102, 178, 255],
type='',
swap='right_middle_finger2'),
102:
dict(
name='left_middle_finger3',
id=102,
color=[102, 178, 255],
type='',
swap='right_middle_finger3'),
103:
dict(
name='left_middle_finger4',
id=103,
color=[102, 178, 255],
type='',
swap='right_middle_finger4'),
104:
dict(
name='left_ring_finger1',
id=104,
color=[255, 51, 51],
type='',
swap='right_ring_finger1'),
105:
dict(
name='left_ring_finger2',
id=105,
color=[255, 51, 51],
type='',
swap='right_ring_finger2'),
106:
dict(
name='left_ring_finger3',
id=106,
color=[255, 51, 51],
type='',
swap='right_ring_finger3'),
107:
dict(
name='left_ring_finger4',
id=107,
color=[255, 51, 51],
type='',
swap='right_ring_finger4'),
108:
dict(
name='left_pinky_finger1',
id=108,
color=[0, 255, 0],
type='',
swap='right_pinky_finger1'),
109:
dict(
name='left_pinky_finger2',
id=109,
color=[0, 255, 0],
type='',
swap='right_pinky_finger2'),
110:
dict(
name='left_pinky_finger3',
id=110,
color=[0, 255, 0],
type='',
swap='right_pinky_finger3'),
111:
dict(
name='left_pinky_finger4',
id=111,
color=[0, 255, 0],
type='',
swap='right_pinky_finger4'),
112:
dict(
name='right_hand_root',
id=112,
color=[255, 255, 255],
type='',
swap='left_hand_root'),
113:
dict(
name='right_thumb1',
id=113,
color=[255, 128, 0],
type='',
swap='left_thumb1'),
114:
dict(
name='right_thumb2',
id=114,
color=[255, 128, 0],
type='',
swap='left_thumb2'),
115:
dict(
name='right_thumb3',
id=115,
color=[255, 128, 0],
type='',
swap='left_thumb3'),
116:
dict(
name='right_thumb4',
id=116,
color=[255, 128, 0],
type='',
swap='left_thumb4'),
117:
dict(
name='right_forefinger1',
id=117,
color=[255, 153, 255],
type='',
swap='left_forefinger1'),
118:
dict(
name='right_forefinger2',
id=118,
color=[255, 153, 255],
type='',
swap='left_forefinger2'),
119:
dict(
name='right_forefinger3',
id=119,
color=[255, 153, 255],
type='',
swap='left_forefinger3'),
120:
dict(
name='right_forefinger4',
id=120,
color=[255, 153, 255],
type='',
swap='left_forefinger4'),
121:
dict(
name='right_middle_finger1',
id=121,
color=[102, 178, 255],
type='',
swap='left_middle_finger1'),
122:
dict(
name='right_middle_finger2',
id=122,
color=[102, 178, 255],
type='',
swap='left_middle_finger2'),
123:
dict(
name='right_middle_finger3',
id=123,
color=[102, 178, 255],
type='',
swap='left_middle_finger3'),
124:
dict(
name='right_middle_finger4',
id=124,
color=[102, 178, 255],
type='',
swap='left_middle_finger4'),
125:
dict(
name='right_ring_finger1',
id=125,
color=[255, 51, 51],
type='',
swap='left_ring_finger1'),
126:
dict(
name='right_ring_finger2',
id=126,
color=[255, 51, 51],
type='',
swap='left_ring_finger2'),
127:
dict(
name='right_ring_finger3',
id=127,
color=[255, 51, 51],
type='',
swap='left_ring_finger3'),
128:
dict(
name='right_ring_finger4',
id=128,
color=[255, 51, 51],
type='',
swap='left_ring_finger4'),
129:
dict(
name='right_pinky_finger1',
id=129,
color=[0, 255, 0],
type='',
swap='left_pinky_finger1'),
130:
dict(
name='right_pinky_finger2',
id=130,
color=[0, 255, 0],
type='',
swap='left_pinky_finger2'),
131:
dict(
name='right_pinky_finger3',
id=131,
color=[0, 255, 0],
type='',
swap='left_pinky_finger3'),
132:
dict(
name='right_pinky_finger4',
id=132,
color=[0, 255, 0],
type='',
swap='left_pinky_finger4')
},
skeleton_info={
0:
dict(link=('left_ankle', 'left_knee'), id=0, color=[0, 255, 0]),
1:
dict(link=('left_knee', 'left_hip'), id=1, color=[0, 255, 0]),
2:
dict(link=('right_ankle', 'right_knee'), id=2, color=[255, 128, 0]),
3:
dict(link=('right_knee', 'right_hip'), id=3, color=[255, 128, 0]),
4:
dict(link=('left_hip', 'right_hip'), id=4, color=[51, 153, 255]),
5:
dict(link=('left_shoulder', 'left_hip'), id=5, color=[51, 153, 255]),
6:
dict(link=('right_shoulder', 'right_hip'), id=6, color=[51, 153, 255]),
7:
dict(
link=('left_shoulder', 'right_shoulder'),
id=7,
color=[51, 153, 255]),
8:
dict(link=('left_shoulder', 'left_elbow'), id=8, color=[0, 255, 0]),
9:
dict(
link=('right_shoulder', 'right_elbow'), id=9, color=[255, 128, 0]),
10:
dict(link=('left_elbow', 'left_wrist'), id=10, color=[0, 255, 0]),
11:
dict(link=('right_elbow', 'right_wrist'), id=11, color=[255, 128, 0]),
12:
dict(link=('left_eye', 'right_eye'), id=12, color=[51, 153, 255]),
13:
dict(link=('nose', 'left_eye'), id=13, color=[51, 153, 255]),
14:
dict(link=('nose', 'right_eye'), id=14, color=[51, 153, 255]),
15:
dict(link=('left_eye', 'left_ear'), id=15, color=[51, 153, 255]),
16:
dict(link=('right_eye', 'right_ear'), id=16, color=[51, 153, 255]),
17:
dict(link=('left_ear', 'left_shoulder'), id=17, color=[51, 153, 255]),
18:
dict(
link=('right_ear', 'right_shoulder'), id=18, color=[51, 153, 255]),
19:
dict(link=('left_ankle', 'left_big_toe'), id=19, color=[0, 255, 0]),
20:
dict(link=('left_ankle', 'left_small_toe'), id=20, color=[0, 255, 0]),
21:
dict(link=('left_ankle', 'left_heel'), id=21, color=[0, 255, 0]),
22:
dict(
link=('right_ankle', 'right_big_toe'), id=22, color=[255, 128, 0]),
23:
dict(
link=('right_ankle', 'right_small_toe'),
id=23,
color=[255, 128, 0]),
24:
dict(link=('right_ankle', 'right_heel'), id=24, color=[255, 128, 0]),
25:
dict(
link=('left_hand_root', 'left_thumb1'), id=25, color=[255, 128,
0]),
26:
dict(link=('left_thumb1', 'left_thumb2'), id=26, color=[255, 128, 0]),
27:
dict(link=('left_thumb2', 'left_thumb3'), id=27, color=[255, 128, 0]),
28:
dict(link=('left_thumb3', 'left_thumb4'), id=28, color=[255, 128, 0]),
29:
dict(
link=('left_hand_root', 'left_forefinger1'),
id=29,
color=[255, 153, 255]),
30:
dict(
link=('left_forefinger1', 'left_forefinger2'),
id=30,
color=[255, 153, 255]),
31:
dict(
link=('left_forefinger2', 'left_forefinger3'),
id=31,
color=[255, 153, 255]),
32:
dict(
link=('left_forefinger3', 'left_forefinger4'),
id=32,
color=[255, 153, 255]),
33:
dict(
link=('left_hand_root', 'left_middle_finger1'),
id=33,
color=[102, 178, 255]),
34:
dict(
link=('left_middle_finger1', 'left_middle_finger2'),
id=34,
color=[102, 178, 255]),
35:
dict(
link=('left_middle_finger2', 'left_middle_finger3'),
id=35,
color=[102, 178, 255]),
36:
dict(
link=('left_middle_finger3', 'left_middle_finger4'),
id=36,
color=[102, 178, 255]),
37:
dict(
link=('left_hand_root', 'left_ring_finger1'),
id=37,
color=[255, 51, 51]),
38:
dict(
link=('left_ring_finger1', 'left_ring_finger2'),
id=38,
color=[255, 51, 51]),
39:
dict(
link=('left_ring_finger2', 'left_ring_finger3'),
id=39,
color=[255, 51, 51]),
40:
dict(
link=('left_ring_finger3', 'left_ring_finger4'),
id=40,
color=[255, 51, 51]),
41:
dict(
link=('left_hand_root', 'left_pinky_finger1'),
id=41,
color=[0, 255, 0]),
42:
dict(
link=('left_pinky_finger1', 'left_pinky_finger2'),
id=42,
color=[0, 255, 0]),
43:
dict(
link=('left_pinky_finger2', 'left_pinky_finger3'),
id=43,
color=[0, 255, 0]),
44:
dict(
link=('left_pinky_finger3', 'left_pinky_finger4'),
id=44,
color=[0, 255, 0]),
45:
dict(
link=('right_hand_root', 'right_thumb1'),
id=45,
color=[255, 128, 0]),
46:
dict(
link=('right_thumb1', 'right_thumb2'), id=46, color=[255, 128, 0]),
47:
dict(
link=('right_thumb2', 'right_thumb3'), id=47, color=[255, 128, 0]),
48:
dict(
link=('right_thumb3', 'right_thumb4'), id=48, color=[255, 128, 0]),
49:
dict(
link=('right_hand_root', 'right_forefinger1'),
id=49,
color=[255, 153, 255]),
50:
dict(
link=('right_forefinger1', 'right_forefinger2'),
id=50,
color=[255, 153, 255]),
51:
dict(
link=('right_forefinger2', 'right_forefinger3'),
id=51,
color=[255, 153, 255]),
52:
dict(
link=('right_forefinger3', 'right_forefinger4'),
id=52,
color=[255, 153, 255]),
53:
dict(
link=('right_hand_root', 'right_middle_finger1'),
id=53,
color=[102, 178, 255]),
54:
dict(
link=('right_middle_finger1', 'right_middle_finger2'),
id=54,
color=[102, 178, 255]),
55:
dict(
link=('right_middle_finger2', 'right_middle_finger3'),
id=55,
color=[102, 178, 255]),
56:
dict(
link=('right_middle_finger3', 'right_middle_finger4'),
id=56,
color=[102, 178, 255]),
57:
dict(
link=('right_hand_root', 'right_ring_finger1'),
id=57,
color=[255, 51, 51]),
58:
dict(
link=('right_ring_finger1', 'right_ring_finger2'),
id=58,
color=[255, 51, 51]),
59:
dict(
link=('right_ring_finger2', 'right_ring_finger3'),
id=59,
color=[255, 51, 51]),
60:
dict(
link=('right_ring_finger3', 'right_ring_finger4'),
id=60,
color=[255, 51, 51]),
61:
dict(
link=('right_hand_root', 'right_pinky_finger1'),
id=61,
color=[0, 255, 0]),
62:
dict(
link=('right_pinky_finger1', 'right_pinky_finger2'),
id=62,
color=[0, 255, 0]),
63:
dict(
link=('right_pinky_finger2', 'right_pinky_finger3'),
id=63,
color=[0, 255, 0]),
64:
dict(
link=('right_pinky_finger3', 'right_pinky_finger4'),
id=64,
color=[0, 255, 0])
},
joint_weights=[1.] * 133,
# 'https://github.com/jin-s13/COCO-WholeBody/blob/master/'
# 'evaluation/myeval_wholebody.py#L175'
sigmas=[
0.026, 0.025, 0.025, 0.035, 0.035, 0.079, 0.079, 0.072, 0.072, 0.062,
0.062, 0.107, 0.107, 0.087, 0.087, 0.089, 0.089, 0.068, 0.066, 0.066,
0.092, 0.094, 0.094, 0.042, 0.043, 0.044, 0.043, 0.040, 0.035, 0.031,
0.025, 0.020, 0.023, 0.029, 0.032, 0.037, 0.038, 0.043, 0.041, 0.045,
0.013, 0.012, 0.011, 0.011, 0.012, 0.012, 0.011, 0.011, 0.013, 0.015,
0.009, 0.007, 0.007, 0.007, 0.012, 0.009, 0.008, 0.016, 0.010, 0.017,
0.011, 0.009, 0.011, 0.009, 0.007, 0.013, 0.008, 0.011, 0.012, 0.010,
0.034, 0.008, 0.008, 0.009, 0.008, 0.008, 0.007, 0.010, 0.008, 0.009,
0.009, 0.009, 0.007, 0.007, 0.008, 0.011, 0.008, 0.008, 0.008, 0.01,
0.008, 0.029, 0.022, 0.035, 0.037, 0.047, 0.026, 0.025, 0.024, 0.035,
0.018, 0.024, 0.022, 0.026, 0.017, 0.021, 0.021, 0.032, 0.02, 0.019,
0.022, 0.031, 0.029, 0.022, 0.035, 0.037, 0.047, 0.026, 0.025, 0.024,
0.035, 0.018, 0.024, 0.022, 0.026, 0.017, 0.021, 0.021, 0.032, 0.02,
0.019, 0.022, 0.031
])
dataset_info = dict(
dataset_name='ubody3d',
paper_info=dict(
author='Jing Lin, Ailing Zeng, Haoqian Wang, Lei Zhang, Yu Li',
title='One-Stage 3D Whole-Body Mesh Recovery with Component Aware'
'Transformer',
container='IEEE Computer Society Conference on Computer Vision and '
'Pattern Recognition (CVPR)',
year='2023',
homepage='https://github.com/IDEA-Research/OSX',
),
keypoint_info={
0:
dict(name='Pelvis', id=0, color=[0, 255, 0], type='', swap=''),
1:
dict(
name='L_Hip', id=1, color=[0, 255, 0], type='lower', swap='R_Hip'),
2:
dict(
name='R_Hip', id=2, color=[0, 255, 0], type='lower', swap='L_Hip'),
3:
dict(
name='L_Knee',
id=3,
color=[0, 255, 0],
type='lower',
swap='R_Knee'),
4:
dict(
name='R_Knee',
id=4,
color=[0, 255, 0],
type='lower',
swap='L_Knee'),
5:
dict(
name='L_Ankle',
id=5,
color=[0, 255, 0],
type='lower',
swap='R_Ankle'),
6:
dict(
name='R_Ankle',
id=6,
color=[0, 255, 0],
type='lower',
swap='L_Ankle'),
7:
dict(name='Neck', id=7, color=[0, 255, 0], type='upper', swap=''),
8:
dict(
name='L_Shoulder',
id=8,
color=[0, 255, 0],
type='upper',
swap='R_Shoulder'),
9:
dict(
name='R_Shoulder',
id=9,
color=[0, 255, 0],
type='upper',
swap='L_Shoulder'),
10:
dict(
name='L_Elbow',
id=10,
color=[0, 255, 0],
type='upper',
swap='R_Elbow'),
11:
dict(
name='R_Elbow',
id=11,
color=[0, 255, 0],
type='upper',
swap='L_Elbow'),
12:
dict(
name='L_Wrist',
id=12,
color=[0, 255, 0],
type='upper',
swap='R_Wrist'),
13:
dict(
name='R_Wrist',
id=13,
color=[0, 255, 0],
type='upper',
swap='L_Wrist'),
14:
dict(
name='L_Big_toe',
id=14,
color=[0, 255, 0],
type='lower',
swap='R_Big_toe'),
15:
dict(
name='L_Small_toe',
id=15,
color=[0, 255, 0],
type='lower',
swap='R_Small_toe'),
16:
dict(
name='L_Heel',
id=16,
color=[0, 255, 0],
type='lower',
swap='R_Heel'),
17:
dict(
name='R_Big_toe',
id=17,
color=[0, 255, 0],
type='lower',
swap='L_Big_toe'),
18:
dict(
name='R_Small_toe',
id=18,
color=[0, 255, 0],
type='lower',
swap='L_Small_toe'),
19:
dict(
name='R_Heel',
id=19,
color=[0, 255, 0],
type='lower',
swap='L_Heel'),
20:
dict(
name='L_Ear', id=20, color=[0, 255, 0], type='upper',
swap='R_Ear'),
21:
dict(
name='R_Ear', id=21, color=[0, 255, 0], type='upper',
swap='L_Ear'),
22:
dict(name='L_Eye', id=22, color=[0, 255, 0], type='', swap='R_Eye'),
23:
dict(name='R_Eye', id=23, color=[0, 255, 0], type='', swap='L_Eye'),
24:
dict(name='Nose', id=24, color=[0, 255, 0], type='upper', swap=''),
25:
dict(
name='L_Thumb_1',
id=25,
color=[255, 128, 0],
type='',
swap='R_Thumb_1'),
26:
dict(
name='L_Thumb_2',
id=26,
color=[255, 128, 0],
type='',
swap='R_Thumb_2'),
27:
dict(
name='L_Thumb_3',
id=27,
color=[255, 128, 0],
type='',
swap='R_Thumb_3'),
28:
dict(
name='L_Thumb_4',
id=28,
color=[255, 128, 0],
type='',
swap='R_Thumb_4'),
29:
dict(
name='L_Index_1',
id=29,
color=[255, 128, 0],
type='',
swap='R_Index_1'),
30:
dict(
name='L_Index_2',
id=30,
color=[255, 128, 0],
type='',
swap='R_Index_2'),
31:
dict(
name='L_Index_3',
id=31,
color=[255, 128, 0],
type='',
swap='R_Index_3'),
32:
dict(
name='L_Index_4',
id=32,
color=[255, 128, 0],
type='',
swap='R_Index_4'),
33:
dict(
name='L_Middle_1',
id=33,
color=[255, 128, 0],
type='',
swap='R_Middle_1'),
34:
dict(
name='L_Middle_2',
id=34,
color=[255, 128, 0],
type='',
swap='R_Middle_2'),
35:
dict(
name='L_Middle_3',
id=35,
color=[255, 128, 0],
type='',
swap='R_Middle_3'),
36:
dict(
name='L_Middle_4',
id=36,
color=[255, 128, 0],
type='',
swap='R_Middle_4'),
37:
dict(
name='L_Ring_1',
id=37,
color=[255, 128, 0],
type='',
swap='R_Ring_1'),
38:
dict(
name='L_Ring_2',
id=38,
color=[255, 128, 0],
type='',
swap='R_Ring_2'),
39:
dict(
name='L_Ring_3',
id=39,
color=[255, 128, 0],
type='',
swap='R_Ring_3'),
40:
dict(
name='L_Ring_4',
id=40,
color=[255, 128, 0],
type='',
swap='R_Ring_4'),
41:
dict(
name='L_Pinky_1',
id=41,
color=[255, 128, 0],
type='',
swap='R_Pinky_1'),
42:
dict(
name='L_Pinky_2',
id=42,
color=[255, 128, 0],
type='',
swap='R_Pinky_2'),
43:
dict(
name='L_Pinky_3',
id=43,
color=[255, 128, 0],
type='',
swap='R_Pinky_3'),
44:
dict(
name='L_Pinky_4',
id=44,
color=[255, 128, 0],
type='',
swap='R_Pinky_4'),
45:
dict(
name='R_Thumb_1',
id=45,
color=[255, 128, 0],
type='',
swap='L_Thumb_1'),
46:
dict(
name='R_Thumb_2',
id=46,
color=[255, 128, 0],
type='',
swap='L_Thumb_2'),
47:
dict(
name='R_Thumb_3',
id=47,
color=[255, 128, 0],
type='',
swap='L_Thumb_3'),
48:
dict(
name='R_Thumb_4',
id=48,
color=[255, 128, 0],
type='',
swap='L_Thumb_4'),
49:
dict(
name='R_Index_1',
id=49,
color=[255, 128, 0],
type='',
swap='L_Index_1'),
50:
dict(
name='R_Index_2',
id=50,
color=[255, 128, 0],
type='',
swap='L_Index_2'),
51:
dict(
name='R_Index_3',
id=51,
color=[255, 128, 0],
type='',
swap='L_Index_3'),
52:
dict(
name='R_Index_4',
id=52,
color=[255, 128, 0],
type='',
swap='L_Index_4'),
53:
dict(
name='R_Middle_1',
id=53,
color=[255, 128, 0],
type='',
swap='L_Middle_1'),
54:
dict(
name='R_Middle_2',
id=54,
color=[255, 128, 0],
type='',
swap='L_Middle_2'),
55:
dict(
name='R_Middle_3',
id=55,
color=[255, 128, 0],
type='',
swap='L_Middle_3'),
56:
dict(
name='R_Middle_4',
id=56,
color=[255, 128, 0],
type='',
swap='L_Middle_4'),
57:
dict(
name='R_Ring_1',
id=57,
color=[255, 128, 0],
type='',
swap='L_Ring_1'),
58:
dict(
name='R_Ring_2',
id=58,
color=[255, 128, 0],
type='',
swap='L_Ring_2'),
59:
dict(
name='R_Ring_3',
id=59,
color=[255, 128, 0],
type='',
swap='L_Ring_3'),
60:
dict(
name='R_Ring_4',
id=60,
color=[255, 128, 0],
type='',
swap='L_Ring_4'),
61:
dict(
name='R_Pinky_1',
id=61,
color=[255, 128, 0],
type='',
swap='L_Pinky_1'),
62:
dict(
name='R_Pinky_2',
id=62,
color=[255, 128, 0],
type='',
swap='L_Pinky_2'),
63:
dict(
name='R_Pinky_3',
id=63,
color=[255, 128, 0],
type='',
swap='L_Pinky_3'),
64:
dict(
name='R_Pinky_4',
id=64,
color=[255, 128, 0],
type='',
swap='L_Pinky_4'),
65:
dict(name='Face_1', id=65, color=[255, 255, 255], type='', swap=''),
66:
dict(name='Face_2', id=66, color=[255, 255, 255], type='', swap=''),
67:
dict(
name='Face_3',
id=67,
color=[255, 255, 255],
type='',
swap='Face_4'),
68:
dict(
name='Face_4',
id=68,
color=[255, 255, 255],
type='',
swap='Face_3'),
69:
dict(
name='Face_5',
id=69,
color=[255, 255, 255],
type='',
swap='Face_14'),
70:
dict(
name='Face_6',
id=70,
color=[255, 255, 255],
type='',
swap='Face_13'),
71:
dict(
name='Face_7',
id=71,
color=[255, 255, 255],
type='',
swap='Face_12'),
72:
dict(
name='Face_8',
id=72,
color=[255, 255, 255],
type='',
swap='Face_11'),
73:
dict(
name='Face_9',
id=73,
color=[255, 255, 255],
type='',
swap='Face_10'),
74:
dict(
name='Face_10',
id=74,
color=[255, 255, 255],
type='',
swap='Face_9'),
75:
dict(
name='Face_11',
id=75,
color=[255, 255, 255],
type='',
swap='Face_8'),
76:
dict(
name='Face_12',
id=76,
color=[255, 255, 255],
type='',
swap='Face_7'),
77:
dict(
name='Face_13',
id=77,
color=[255, 255, 255],
type='',
swap='Face_6'),
78:
dict(
name='Face_14',
id=78,
color=[255, 255, 255],
type='',
swap='Face_5'),
79:
dict(name='Face_15', id=79, color=[255, 255, 255], type='', swap=''),
80:
dict(name='Face_16', id=80, color=[255, 255, 255], type='', swap=''),
81:
dict(name='Face_17', id=81, color=[255, 255, 255], type='', swap=''),
82:
dict(name='Face_18', id=82, color=[255, 255, 255], type='', swap=''),
83:
dict(
name='Face_19',
id=83,
color=[255, 255, 255],
type='',
swap='Face_23'),
84:
dict(
name='Face_20',
id=84,
color=[255, 255, 255],
type='',
swap='Face_22'),
85:
dict(name='Face_21', id=85, color=[255, 255, 255], type='', swap=''),
86:
dict(
name='Face_22',
id=86,
color=[255, 255, 255],
type='',
swap='Face_20'),
87:
dict(
name='Face_23',
id=87,
color=[255, 255, 255],
type='',
swap='Face_19'),
88:
dict(
name='Face_24',
id=88,
color=[255, 255, 255],
type='',
swap='Face_33'),
89:
dict(
name='Face_25',
id=89,
color=[255, 255, 255],
type='',
swap='Face_32'),
90:
dict(
name='Face_26',
id=90,
color=[255, 255, 255],
type='',
swap='Face_31'),
91:
dict(
name='Face_27',
id=91,
color=[255, 255, 255],
type='',
swap='Face_30'),
92:
dict(
name='Face_28',
id=92,
color=[255, 255, 255],
type='',
swap='Face_35'),
93:
dict(
name='Face_29',
id=93,
color=[255, 255, 255],
type='',
swap='Face_34'),
94:
dict(
name='Face_30',
id=94,
color=[255, 255, 255],
type='',
swap='Face_27'),
95:
dict(
name='Face_31',
id=95,
color=[255, 255, 255],
type='',
swap='Face_26'),
96:
dict(
name='Face_32',
id=96,
color=[255, 255, 255],
type='',
swap='Face_25'),
97:
dict(
name='Face_33',
id=97,
color=[255, 255, 255],
type='',
swap='Face_24'),
98:
dict(
name='Face_34',
id=98,
color=[255, 255, 255],
type='',
swap='Face_29'),
99:
dict(
name='Face_35',
id=99,
color=[255, 255, 255],
type='',
swap='Face_28'),
100:
dict(
name='Face_36',
id=100,
color=[255, 255, 255],
type='',
swap='Face_42'),
101:
dict(
name='Face_37',
id=101,
color=[255, 255, 255],
type='',
swap='Face_41'),
102:
dict(
name='Face_38',
id=102,
color=[255, 255, 255],
type='',
swap='Face_40'),
103:
dict(name='Face_39', id=103, color=[255, 255, 255], type='', swap=''),
104:
dict(
name='Face_40',
id=104,
color=[255, 255, 255],
type='',
swap='Face_38'),
105:
dict(
name='Face_41',
id=105,
color=[255, 255, 255],
type='',
swap='Face_37'),
106:
dict(
name='Face_42',
id=106,
color=[255, 255, 255],
type='',
swap='Face_36'),
107:
dict(
name='Face_43',
id=107,
color=[255, 255, 255],
type='',
swap='Face_47'),
108:
dict(
name='Face_44',
id=108,
color=[255, 255, 255],
type='',
swap='Face_46'),
109:
dict(name='Face_45', id=109, color=[255, 255, 255], type='', swap=''),
110:
dict(
name='Face_46',
id=110,
color=[255, 255, 255],
type='',
swap='Face_44'),
111:
dict(
name='Face_47',
id=111,
color=[255, 255, 255],
type='',
swap='Face_43'),
112:
dict(
name='Face_48',
id=112,
color=[255, 255, 255],
type='',
swap='Face_52'),
113:
dict(
name='Face_49',
id=113,
color=[255, 255, 255],
type='',
swap='Face_51'),
114:
dict(name='Face_50', id=114, color=[255, 255, 255], type='', swap=''),
115:
dict(
name='Face_51',
id=115,
color=[255, 255, 255],
type='',
swap='Face_49'),
116:
dict(
name='Face_52',
id=116,
color=[255, 255, 255],
type='',
swap='Face_48'),
117:
dict(
name='Face_53',
id=117,
color=[255, 255, 255],
type='',
swap='Face_55'),
118:
dict(name='Face_54', id=118, color=[255, 255, 255], type='', swap=''),
119:
dict(
name='Face_55',
id=119,
color=[255, 255, 255],
type='',
swap='Face_53'),
120:
dict(
name='Face_56',
id=120,
color=[255, 255, 255],
type='',
swap='Face_72'),
121:
dict(
name='Face_57',
id=121,
color=[255, 255, 255],
type='',
swap='Face_71'),
122:
dict(
name='Face_58',
id=122,
color=[255, 255, 255],
type='',
swap='Face_70'),
123:
dict(
name='Face_59',
id=123,
color=[255, 255, 255],
type='',
swap='Face_69'),
124:
dict(
name='Face_60',
id=124,
color=[255, 255, 255],
type='',
swap='Face_68'),
125:
dict(
name='Face_61',
id=125,
color=[255, 255, 255],
type='',
swap='Face_67'),
126:
dict(
name='Face_62',
id=126,
color=[255, 255, 255],
type='',
swap='Face_66'),
127:
dict(
name='Face_63',
id=127,
color=[255, 255, 255],
type='',
swap='Face_65'),
128:
dict(name='Face_64', id=128, color=[255, 255, 255], type='', swap=''),
129:
dict(
name='Face_65',
id=129,
color=[255, 255, 255],
type='',
swap='Face_63'),
130:
dict(
name='Face_66',
id=130,
color=[255, 255, 255],
type='',
swap='Face_62'),
131:
dict(
name='Face_67',
id=131,
color=[255, 255, 255],
type='',
swap='Face_61'),
132:
dict(
name='Face_68',
id=132,
color=[255, 255, 255],
type='',
swap='Face_60'),
133:
dict(
name='Face_69',
id=133,
color=[255, 255, 255],
type='',
swap='Face_59'),
134:
dict(
name='Face_70',
id=134,
color=[255, 255, 255],
type='',
swap='Face_58'),
135:
dict(
name='Face_71',
id=135,
color=[255, 255, 255],
type='',
swap='Face_57'),
136:
dict(
name='Face_72',
id=136,
color=[255, 255, 255],
type='',
swap='Face_56'),
},
skeleton_info={
0: dict(link=('L_Ankle', 'L_Knee'), id=0, color=[0, 255, 0]),
1: dict(link=('L_Knee', 'L_Hip'), id=1, color=[0, 255, 0]),
2: dict(link=('R_Ankle', 'R_Knee'), id=2, color=[0, 255, 0]),
3: dict(link=('R_Knee', 'R_Hip'), id=3, color=[0, 255, 0]),
4: dict(link=('L_Hip', 'R_Hip'), id=4, color=[0, 255, 0]),
5: dict(link=('L_Shoulder', 'L_Hip'), id=5, color=[0, 255, 0]),
6: dict(link=('R_Shoulder', 'R_Hip'), id=6, color=[0, 255, 0]),
7: dict(link=('L_Shoulder', 'R_Shoulder'), id=7, color=[0, 255, 0]),
8: dict(link=('L_Shoulder', 'L_Elbow'), id=8, color=[0, 255, 0]),
9: dict(link=('R_Shoulder', 'R_Elbow'), id=9, color=[0, 255, 0]),
10: dict(link=('L_Elbow', 'L_Wrist'), id=10, color=[0, 255, 0]),
11: dict(link=('R_Elbow', 'R_Wrist'), id=11, color=[255, 128, 0]),
12: dict(link=('L_Eye', 'R_Eye'), id=12, color=[255, 128, 0]),
13: dict(link=('Nose', 'L_Eye'), id=13, color=[255, 128, 0]),
14: dict(link=('Nose', 'R_Eye'), id=14, color=[255, 128, 0]),
15: dict(link=('L_Eye', 'L_Ear'), id=15, color=[255, 128, 0]),
16: dict(link=('R_Eye', 'R_Ear'), id=16, color=[255, 128, 0]),
17: dict(link=('L_Ear', 'L_Shoulder'), id=17, color=[255, 128, 0]),
18: dict(link=('R_Ear', 'R_Shoulder'), id=18, color=[255, 128, 0]),
19: dict(link=('L_Ankle', 'L_Big_toe'), id=19, color=[255, 128, 0]),
20: dict(link=('L_Ankle', 'L_Small_toe'), id=20, color=[255, 128, 0]),
21: dict(link=('L_Ankle', 'L_Heel'), id=21, color=[255, 128, 0]),
22: dict(link=('R_Ankle', 'R_Big_toe'), id=22, color=[255, 128, 0]),
23: dict(link=('R_Ankle', 'R_Small_toe'), id=23, color=[255, 128, 0]),
24: dict(link=('R_Ankle', 'R_Heel'), id=24, color=[255, 128, 0]),
25: dict(link=('L_Wrist', 'L_Thumb_1'), id=25, color=[255, 128, 0]),
26: dict(link=('L_Thumb_1', 'L_Thumb_2'), id=26, color=[255, 128, 0]),
27: dict(link=('L_Thumb_2', 'L_Thumb_3'), id=27, color=[255, 128, 0]),
28: dict(link=('L_Thumb_3', 'L_Thumb_4'), id=28, color=[255, 128, 0]),
29: dict(link=('L_Wrist', 'L_Index_1'), id=29, color=[255, 128, 0]),
30: dict(link=('L_Index_1', 'L_Index_2'), id=30, color=[255, 128, 0]),
31:
dict(link=('L_Index_2', 'L_Index_3'), id=31, color=[255, 255, 255]),
32:
dict(link=('L_Index_3', 'L_Index_4'), id=32, color=[255, 255, 255]),
33: dict(link=('L_Wrist', 'L_Middle_1'), id=33, color=[255, 255, 255]),
34:
dict(link=('L_Middle_1', 'L_Middle_2'), id=34, color=[255, 255, 255]),
35:
dict(link=('L_Middle_2', 'L_Middle_3'), id=35, color=[255, 255, 255]),
36:
dict(link=('L_Middle_3', 'L_Middle_4'), id=36, color=[255, 255, 255]),
37: dict(link=('L_Wrist', 'L_Ring_1'), id=37, color=[255, 255, 255]),
38: dict(link=('L_Ring_1', 'L_Ring_2'), id=38, color=[255, 255, 255]),
39: dict(link=('L_Ring_2', 'L_Ring_3'), id=39, color=[255, 255, 255]),
40: dict(link=('L_Ring_3', 'L_Ring_4'), id=40, color=[255, 255, 255]),
41: dict(link=('L_Wrist', 'L_Pinky_1'), id=41, color=[255, 255, 255]),
42:
dict(link=('L_Pinky_1', 'L_Pinky_2'), id=42, color=[255, 255, 255]),
43:
dict(link=('L_Pinky_2', 'L_Pinky_3'), id=43, color=[255, 255, 255]),
44:
dict(link=('L_Pinky_3', 'L_Pinky_4'), id=44, color=[255, 255, 255]),
45: dict(link=('R_Wrist', 'R_Thumb_1'), id=45, color=[255, 255, 255]),
46:
dict(link=('R_Thumb_1', 'R_Thumb_2'), id=46, color=[255, 255, 255]),
47:
dict(link=('R_Thumb_2', 'R_Thumb_3'), id=47, color=[255, 255, 255]),
48:
dict(link=('R_Thumb_3', 'R_Thumb_4'), id=48, color=[255, 255, 255]),
49: dict(link=('R_Wrist', 'R_Index_1'), id=49, color=[255, 255, 255]),
50:
dict(link=('R_Index_1', 'R_Index_2'), id=50, color=[255, 255, 255]),
51:
dict(link=('R_Index_2', 'R_Index_3'), id=51, color=[255, 255, 255]),
52:
dict(link=('R_Index_3', 'R_Index_4'), id=52, color=[255, 255, 255]),
53: dict(link=('R_Wrist', 'R_Middle_1'), id=53, color=[255, 255, 255]),
54:
dict(link=('R_Middle_1', 'R_Middle_2'), id=54, color=[255, 255, 255]),
55:
dict(link=('R_Middle_2', 'R_Middle_3'), id=55, color=[255, 255, 255]),
56:
dict(link=('R_Middle_3', 'R_Middle_4'), id=56, color=[255, 255, 255]),
57: dict(link=('R_Wrist', 'R_Pinky_1'), id=57, color=[255, 255, 255]),
58:
dict(link=('R_Pinky_1', 'R_Pinky_2'), id=58, color=[255, 255, 255]),
59:
dict(link=('R_Pinky_2', 'R_Pinky_3'), id=59, color=[255, 255, 255]),
60:
dict(link=('R_Pinky_3', 'R_Pinky_4'), id=60, color=[255, 255, 255]),
},
joint_weights=[1.] * 137,
sigmas=[])
dataset_info = dict(
dataset_name='wflw',
paper_info=dict(
author='Wu, Wayne and Qian, Chen and Yang, Shuo and Wang, '
'Quan and Cai, Yici and Zhou, Qiang',
title='Look at boundary: A boundary-aware face alignment algorithm',
container='Proceedings of the IEEE conference on computer '
'vision and pattern recognition',
year='2018',
homepage='https://wywu.github.io/projects/LAB/WFLW.html',
),
keypoint_info={
0: dict(name='kpt-0', id=0, color=[255, 0, 0], type='', swap='kpt-32'),
1: dict(name='kpt-1', id=1, color=[255, 0, 0], type='', swap='kpt-31'),
2: dict(name='kpt-2', id=2, color=[255, 0, 0], type='', swap='kpt-30'),
3: dict(name='kpt-3', id=3, color=[255, 0, 0], type='', swap='kpt-29'),
4: dict(name='kpt-4', id=4, color=[255, 0, 0], type='', swap='kpt-28'),
5: dict(name='kpt-5', id=5, color=[255, 0, 0], type='', swap='kpt-27'),
6: dict(name='kpt-6', id=6, color=[255, 0, 0], type='', swap='kpt-26'),
7: dict(name='kpt-7', id=7, color=[255, 0, 0], type='', swap='kpt-25'),
8: dict(name='kpt-8', id=8, color=[255, 0, 0], type='', swap='kpt-24'),
9: dict(name='kpt-9', id=9, color=[255, 0, 0], type='', swap='kpt-23'),
10:
dict(name='kpt-10', id=10, color=[255, 0, 0], type='', swap='kpt-22'),
11:
dict(name='kpt-11', id=11, color=[255, 0, 0], type='', swap='kpt-21'),
12:
dict(name='kpt-12', id=12, color=[255, 0, 0], type='', swap='kpt-20'),
13:
dict(name='kpt-13', id=13, color=[255, 0, 0], type='', swap='kpt-19'),
14:
dict(name='kpt-14', id=14, color=[255, 0, 0], type='', swap='kpt-18'),
15:
dict(name='kpt-15', id=15, color=[255, 0, 0], type='', swap='kpt-17'),
16: dict(name='kpt-16', id=16, color=[255, 0, 0], type='', swap=''),
17:
dict(name='kpt-17', id=17, color=[255, 0, 0], type='', swap='kpt-15'),
18:
dict(name='kpt-18', id=18, color=[255, 0, 0], type='', swap='kpt-14'),
19:
dict(name='kpt-19', id=19, color=[255, 0, 0], type='', swap='kpt-13'),
20:
dict(name='kpt-20', id=20, color=[255, 0, 0], type='', swap='kpt-12'),
21:
dict(name='kpt-21', id=21, color=[255, 0, 0], type='', swap='kpt-11'),
22:
dict(name='kpt-22', id=22, color=[255, 0, 0], type='', swap='kpt-10'),
23:
dict(name='kpt-23', id=23, color=[255, 0, 0], type='', swap='kpt-9'),
24:
dict(name='kpt-24', id=24, color=[255, 0, 0], type='', swap='kpt-8'),
25:
dict(name='kpt-25', id=25, color=[255, 0, 0], type='', swap='kpt-7'),
26:
dict(name='kpt-26', id=26, color=[255, 0, 0], type='', swap='kpt-6'),
27:
dict(name='kpt-27', id=27, color=[255, 0, 0], type='', swap='kpt-5'),
28:
dict(name='kpt-28', id=28, color=[255, 0, 0], type='', swap='kpt-4'),
29:
dict(name='kpt-29', id=29, color=[255, 0, 0], type='', swap='kpt-3'),
30:
dict(name='kpt-30', id=30, color=[255, 0, 0], type='', swap='kpt-2'),
31:
dict(name='kpt-31', id=31, color=[255, 0, 0], type='', swap='kpt-1'),
32:
dict(name='kpt-32', id=32, color=[255, 0, 0], type='', swap='kpt-0'),
33:
dict(name='kpt-33', id=33, color=[255, 0, 0], type='', swap='kpt-46'),
34:
dict(name='kpt-34', id=34, color=[255, 0, 0], type='', swap='kpt-45'),
35:
dict(name='kpt-35', id=35, color=[255, 0, 0], type='', swap='kpt-44'),
36:
dict(name='kpt-36', id=36, color=[255, 0, 0], type='', swap='kpt-43'),
37: dict(
name='kpt-37', id=37, color=[255, 0, 0], type='', swap='kpt-42'),
38: dict(
name='kpt-38', id=38, color=[255, 0, 0], type='', swap='kpt-50'),
39: dict(
name='kpt-39', id=39, color=[255, 0, 0], type='', swap='kpt-49'),
40: dict(
name='kpt-40', id=40, color=[255, 0, 0], type='', swap='kpt-48'),
41: dict(
name='kpt-41', id=41, color=[255, 0, 0], type='', swap='kpt-47'),
42: dict(
name='kpt-42', id=42, color=[255, 0, 0], type='', swap='kpt-37'),
43: dict(
name='kpt-43', id=43, color=[255, 0, 0], type='', swap='kpt-36'),
44: dict(
name='kpt-44', id=44, color=[255, 0, 0], type='', swap='kpt-35'),
45: dict(
name='kpt-45', id=45, color=[255, 0, 0], type='', swap='kpt-34'),
46: dict(
name='kpt-46', id=46, color=[255, 0, 0], type='', swap='kpt-33'),
47: dict(
name='kpt-47', id=47, color=[255, 0, 0], type='', swap='kpt-41'),
48: dict(
name='kpt-48', id=48, color=[255, 0, 0], type='', swap='kpt-40'),
49: dict(
name='kpt-49', id=49, color=[255, 0, 0], type='', swap='kpt-39'),
50: dict(
name='kpt-50', id=50, color=[255, 0, 0], type='', swap='kpt-38'),
51: dict(name='kpt-51', id=51, color=[255, 0, 0], type='', swap=''),
52: dict(name='kpt-52', id=52, color=[255, 0, 0], type='', swap=''),
53: dict(name='kpt-53', id=53, color=[255, 0, 0], type='', swap=''),
54: dict(name='kpt-54', id=54, color=[255, 0, 0], type='', swap=''),
55: dict(
name='kpt-55', id=55, color=[255, 0, 0], type='', swap='kpt-59'),
56: dict(
name='kpt-56', id=56, color=[255, 0, 0], type='', swap='kpt-58'),
57: dict(name='kpt-57', id=57, color=[255, 0, 0], type='', swap=''),
58: dict(
name='kpt-58', id=58, color=[255, 0, 0], type='', swap='kpt-56'),
59: dict(
name='kpt-59', id=59, color=[255, 0, 0], type='', swap='kpt-55'),
60: dict(
name='kpt-60', id=60, color=[255, 0, 0], type='', swap='kpt-72'),
61: dict(
name='kpt-61', id=61, color=[255, 0, 0], type='', swap='kpt-71'),
62: dict(
name='kpt-62', id=62, color=[255, 0, 0], type='', swap='kpt-70'),
63: dict(
name='kpt-63', id=63, color=[255, 0, 0], type='', swap='kpt-69'),
64: dict(
name='kpt-64', id=64, color=[255, 0, 0], type='', swap='kpt-68'),
65: dict(
name='kpt-65', id=65, color=[255, 0, 0], type='', swap='kpt-75'),
66: dict(
name='kpt-66', id=66, color=[255, 0, 0], type='', swap='kpt-74'),
67: dict(
name='kpt-67', id=67, color=[255, 0, 0], type='', swap='kpt-73'),
68: dict(
name='kpt-68', id=68, color=[255, 0, 0], type='', swap='kpt-64'),
69: dict(
name='kpt-69', id=69, color=[255, 0, 0], type='', swap='kpt-63'),
70: dict(
name='kpt-70', id=70, color=[255, 0, 0], type='', swap='kpt-62'),
71: dict(
name='kpt-71', id=71, color=[255, 0, 0], type='', swap='kpt-61'),
72: dict(
name='kpt-72', id=72, color=[255, 0, 0], type='', swap='kpt-60'),
73: dict(
name='kpt-73', id=73, color=[255, 0, 0], type='', swap='kpt-67'),
74: dict(
name='kpt-74', id=74, color=[255, 0, 0], type='', swap='kpt-66'),
75: dict(
name='kpt-75', id=75, color=[255, 0, 0], type='', swap='kpt-65'),
76: dict(
name='kpt-76', id=76, color=[255, 0, 0], type='', swap='kpt-82'),
77: dict(
name='kpt-77', id=77, color=[255, 0, 0], type='', swap='kpt-81'),
78: dict(
name='kpt-78', id=78, color=[255, 0, 0], type='', swap='kpt-80'),
79: dict(name='kpt-79', id=79, color=[255, 0, 0], type='', swap=''),
80: dict(
name='kpt-80', id=80, color=[255, 0, 0], type='', swap='kpt-78'),
81: dict(
name='kpt-81', id=81, color=[255, 0, 0], type='', swap='kpt-77'),
82: dict(
name='kpt-82', id=82, color=[255, 0, 0], type='', swap='kpt-76'),
83: dict(
name='kpt-83', id=83, color=[255, 0, 0], type='', swap='kpt-87'),
84: dict(
name='kpt-84', id=84, color=[255, 0, 0], type='', swap='kpt-86'),
85: dict(name='kpt-85', id=85, color=[255, 0, 0], type='', swap=''),
86: dict(
name='kpt-86', id=86, color=[255, 0, 0], type='', swap='kpt-84'),
87: dict(
name='kpt-87', id=87, color=[255, 0, 0], type='', swap='kpt-83'),
88: dict(
name='kpt-88', id=88, color=[255, 0, 0], type='', swap='kpt-92'),
89: dict(
name='kpt-89', id=89, color=[255, 0, 0], type='', swap='kpt-91'),
90: dict(name='kpt-90', id=90, color=[255, 0, 0], type='', swap=''),
91: dict(
name='kpt-91', id=91, color=[255, 0, 0], type='', swap='kpt-89'),
92: dict(
name='kpt-92', id=92, color=[255, 0, 0], type='', swap='kpt-88'),
93: dict(
name='kpt-93', id=93, color=[255, 0, 0], type='', swap='kpt-95'),
94: dict(name='kpt-94', id=94, color=[255, 0, 0], type='', swap=''),
95: dict(
name='kpt-95', id=95, color=[255, 0, 0], type='', swap='kpt-93'),
96: dict(
name='kpt-96', id=96, color=[255, 0, 0], type='', swap='kpt-97'),
97: dict(
name='kpt-97', id=97, color=[255, 0, 0], type='', swap='kpt-96')
},
skeleton_info={},
joint_weights=[1.] * 98,
sigmas=[])
dataset_info = dict(
dataset_name='zebra',
paper_info=dict(
author='Graving, Jacob M and Chae, Daniel and Naik, Hemal and '
'Li, Liang and Koger, Benjamin and Costelloe, Blair R and '
'Couzin, Iain D',
title='DeepPoseKit, a software toolkit for fast and robust '
'animal pose estimation using deep learning',
container='Elife',
year='2019',
homepage='https://github.com/jgraving/DeepPoseKit-Data',
),
keypoint_info={
0:
dict(name='snout', id=0, color=[255, 255, 255], type='', swap=''),
1:
dict(name='head', id=1, color=[255, 255, 255], type='', swap=''),
2:
dict(name='neck', id=2, color=[255, 255, 255], type='', swap=''),
3:
dict(
name='forelegL1',
id=3,
color=[255, 255, 255],
type='',
swap='forelegR1'),
4:
dict(
name='forelegR1',
id=4,
color=[255, 255, 255],
type='',
swap='forelegL1'),
5:
dict(
name='hindlegL1',
id=5,
color=[255, 255, 255],
type='',
swap='hindlegR1'),
6:
dict(
name='hindlegR1',
id=6,
color=[255, 255, 255],
type='',
swap='hindlegL1'),
7:
dict(name='tailbase', id=7, color=[255, 255, 255], type='', swap=''),
8:
dict(name='tailtip', id=8, color=[255, 255, 255], type='', swap='')
},
skeleton_info={
0: dict(link=('head', 'snout'), id=0, color=[255, 255, 255]),
1: dict(link=('neck', 'head'), id=1, color=[255, 255, 255]),
2: dict(link=('forelegL1', 'neck'), id=2, color=[255, 255, 255]),
3: dict(link=('forelegR1', 'neck'), id=3, color=[255, 255, 255]),
4: dict(link=('hindlegL1', 'tailbase'), id=4, color=[255, 255, 255]),
5: dict(link=('hindlegR1', 'tailbase'), id=5, color=[255, 255, 255]),
6: dict(link=('tailbase', 'neck'), id=6, color=[255, 255, 255]),
7: dict(link=('tailtip', 'tailbase'), id=7, color=[255, 255, 255])
},
joint_weights=[1.] * 9,
sigmas=[])
default_scope = 'mmpose'
# hooks
default_hooks = dict(
timer=dict(type='IterTimerHook'),
logger=dict(type='LoggerHook', interval=50),
param_scheduler=dict(type='ParamSchedulerHook'),
checkpoint=dict(type='CheckpointHook', interval=10),
sampler_seed=dict(type='DistSamplerSeedHook'),
visualization=dict(type='PoseVisualizationHook', enable=False),
badcase=dict(
type='BadCaseAnalysisHook',
enable=False,
out_dir='badcase',
metric_type='loss',
badcase_thr=5))
# custom hooks
custom_hooks = [
# Synchronize model buffers such as running_mean and running_var in BN
# at the end of each epoch
dict(type='SyncBuffersHook')
]
# multi-processing backend
env_cfg = dict(
cudnn_benchmark=False,
mp_cfg=dict(mp_start_method='fork', opencv_num_threads=0),
dist_cfg=dict(backend='nccl'),
)
# visualizer
vis_backends = [
dict(type='LocalVisBackend'),
# dict(type='TensorboardVisBackend'),
# dict(type='WandbVisBackend'),
]
visualizer = dict(
type='PoseLocalVisualizer', vis_backends=vis_backends, name='visualizer')
# logger
log_processor = dict(
type='LogProcessor', window_size=50, by_epoch=True, num_digits=6)
log_level = 'INFO'
load_from = None
resume = False
# file I/O backend
backend_args = dict(backend='local')
# training/validation/testing progress
train_cfg = dict(by_epoch=True)
val_cfg = dict()
test_cfg = dict()
# 2D Animal Keypoint Detection
2D animal keypoint detection (animal pose estimation) aims to detect the key-point of different species, including rats,
dogs, macaques, and cheetah. It provides detailed behavioral analysis for neuroscience, medical and ecology applications.
## Data preparation
Please follow [DATA Preparation](/docs/en/dataset_zoo/2d_animal_keypoint.md) to prepare data.
## Demo
Please follow [DEMO](/demo/docs/en/2d_animal_demo.md) to generate fancy demos.
<img src="https://user-images.githubusercontent.com/26127467/187655602-907db86e-710b-447a-8ec9-5b623d43d160.gif" height="500px" alt><br>
<img src="https://user-images.githubusercontent.com/11788150/114201893-4446ec00-9989-11eb-808b-5718c47c7b23.gif" height="140px" alt><br>
<img src="https://user-images.githubusercontent.com/11788150/114205282-b5d46980-998c-11eb-9d6b-85ba47f81252.gif" height="140px" alt><br>
<img src="https://user-images.githubusercontent.com/11788150/114023530-944c8280-98a5-11eb-86b0-5f6d3e232af0.gif" height="140px" alt><br>
# RTMPose
Recent studies on 2D pose estimation have achieved excellent performance on public benchmarks, yet its application in the industrial community still suffers from heavy model parameters and high latency.
In order to bridge this gap, we empirically study five aspects that affect the performance of multi-person pose estimation algorithms: paradigm, backbone network, localization algorithm, training strategy, and deployment inference, and present a high-performance real-time multi-person pose estimation framework, **RTMPose**, based on MMPose.
Our RTMPose-m achieves **75.8% AP** on COCO with **90+ FPS** on an Intel i7-11700 CPU and **430+ FPS** on an NVIDIA GTX 1660 Ti GPU, and RTMPose-l achieves **67.0% AP** on COCO-WholeBody with **130+ FPS**, outperforming existing open-source libraries.
To further evaluate RTMPose's capability in critical real-time applications, we also report the performance after deploying on the mobile device.
## Results and Models
### AP-10K Dataset
Results on AP-10K validation set
| Model | Input Size | AP | Details and Download |
| :-------: | :--------: | :---: | :------------------------------------------: |
| RTMPose-m | 256x256 | 0.722 | [rtmpose_cp10k.md](./ap10k/rtmpose_ap10k.md) |
_base_ = ['../../../_base_/default_runtime.py']
# runtime
max_epochs = 210
stage2_num_epochs = 30
base_lr = 4e-3
train_cfg = dict(max_epochs=max_epochs, val_interval=10)
randomness = dict(seed=21)
# optimizer
optim_wrapper = dict(
type='OptimWrapper',
optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.05),
paramwise_cfg=dict(
norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True))
# learning rate
param_scheduler = [
dict(
type='LinearLR',
start_factor=1.0e-5,
by_epoch=False,
begin=0,
end=1000),
dict(
type='CosineAnnealingLR',
eta_min=base_lr * 0.05,
begin=max_epochs // 2,
end=max_epochs,
T_max=max_epochs // 2,
by_epoch=True,
convert_to_iter_based=True),
]
# automatically scaling LR based on the actual training batch size
auto_scale_lr = dict(base_batch_size=512)
# codec settings
codec = dict(
type='SimCCLabel',
input_size=(256, 256),
sigma=(5.66, 5.66),
simcc_split_ratio=2.0,
normalize=False,
use_dark=False)
# model settings
model = dict(
type='TopdownPoseEstimator',
data_preprocessor=dict(
type='PoseDataPreprocessor',
mean=[123.675, 116.28, 103.53],
std=[58.395, 57.12, 57.375],
bgr_to_rgb=True),
backbone=dict(
_scope_='mmdet',
type='CSPNeXt',
arch='P5',
expand_ratio=0.5,
deepen_factor=0.67,
widen_factor=0.75,
out_indices=(4, ),
channel_attention=True,
norm_cfg=dict(type='SyncBN'),
act_cfg=dict(type='SiLU'),
init_cfg=dict(
type='Pretrained',
prefix='backbone.',
checkpoint='https://download.openmmlab.com/mmpose/v1/projects/'
'rtmposev1/cspnext-m_udp-aic-coco_210e-256x192-f2f7d6f6_20230130.pth' # noqa
)),
head=dict(
type='RTMCCHead',
in_channels=768,
out_channels=17,
input_size=codec['input_size'],
in_featuremap_size=tuple([s // 32 for s in codec['input_size']]),
simcc_split_ratio=codec['simcc_split_ratio'],
final_layer_kernel_size=7,
gau_cfg=dict(
hidden_dims=256,
s=128,
expansion_factor=2,
dropout_rate=0.,
drop_path=0.,
act_fn='SiLU',
use_rel_bias=False,
pos_enc=False),
loss=dict(
type='KLDiscretLoss',
use_target_weight=True,
beta=10.,
label_softmax=True),
decoder=codec),
test_cfg=dict(flip_test=True, ))
# base dataset settings
dataset_type = 'AP10KDataset'
data_mode = 'topdown'
data_root = 'data/ap10k/'
backend_args = dict(backend='local')
# backend_args = dict(
# backend='petrel',
# path_mapping=dict({
# f'{data_root}': 's3://openmmlab/datasets/pose/ap10k/',
# f'{data_root}': 's3://openmmlab/datasets/pose/ap10k/'
# }))
# pipelines
train_pipeline = [
dict(type='LoadImage', backend_args=backend_args),
dict(type='GetBBoxCenterScale'),
dict(type='RandomFlip', direction='horizontal'),
dict(type='RandomHalfBody'),
dict(
type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80),
dict(type='TopdownAffine', input_size=codec['input_size']),
dict(type='mmdet.YOLOXHSVRandomAug'),
dict(
type='Albumentation',
transforms=[
dict(type='Blur', p=0.1),
dict(type='MedianBlur', p=0.1),
dict(
type='CoarseDropout',
max_holes=1,
max_height=0.4,
max_width=0.4,
min_holes=1,
min_height=0.2,
min_width=0.2,
p=1.0),
]),
dict(type='GenerateTarget', encoder=codec),
dict(type='PackPoseInputs')
]
val_pipeline = [
dict(type='LoadImage', backend_args=backend_args),
dict(type='GetBBoxCenterScale'),
dict(type='TopdownAffine', input_size=codec['input_size']),
dict(type='PackPoseInputs')
]
train_pipeline_stage2 = [
dict(type='LoadImage', backend_args=backend_args),
dict(type='GetBBoxCenterScale'),
dict(type='RandomFlip', direction='horizontal'),
dict(type='RandomHalfBody'),
dict(
type='RandomBBoxTransform',
shift_factor=0.,
scale_factor=[0.75, 1.25],
rotate_factor=60),
dict(type='TopdownAffine', input_size=codec['input_size']),
dict(type='mmdet.YOLOXHSVRandomAug'),
dict(
type='Albumentation',
transforms=[
dict(type='Blur', p=0.1),
dict(type='MedianBlur', p=0.1),
dict(
type='CoarseDropout',
max_holes=1,
max_height=0.4,
max_width=0.4,
min_holes=1,
min_height=0.2,
min_width=0.2,
p=0.5),
]),
dict(type='GenerateTarget', encoder=codec),
dict(type='PackPoseInputs')
]
# data loaders
train_dataloader = dict(
batch_size=64,
num_workers=10,
persistent_workers=True,
sampler=dict(type='DefaultSampler', shuffle=True),
dataset=dict(
type=dataset_type,
data_root=data_root,
data_mode=data_mode,
ann_file='annotations/ap10k-train-split1.json',
data_prefix=dict(img='data/'),
pipeline=train_pipeline,
))
val_dataloader = dict(
batch_size=32,
num_workers=10,
persistent_workers=True,
drop_last=False,
sampler=dict(type='DefaultSampler', shuffle=False, round_up=False),
dataset=dict(
type=dataset_type,
data_root=data_root,
data_mode=data_mode,
ann_file='annotations/ap10k-val-split1.json',
data_prefix=dict(img='data/'),
test_mode=True,
pipeline=val_pipeline,
))
test_dataloader = dict(
batch_size=32,
num_workers=10,
persistent_workers=True,
drop_last=False,
sampler=dict(type='DefaultSampler', shuffle=False, round_up=False),
dataset=dict(
type=dataset_type,
data_root=data_root,
data_mode=data_mode,
ann_file='annotations/ap10k-test-split1.json',
data_prefix=dict(img='data/'),
test_mode=True,
pipeline=val_pipeline,
))
# hooks
default_hooks = dict(
checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1))
custom_hooks = [
dict(
type='EMAHook',
ema_type='ExpMomentumEMA',
momentum=0.0002,
update_buffers=True,
priority=49),
dict(
type='mmdet.PipelineSwitchHook',
switch_epoch=max_epochs - stage2_num_epochs,
switch_pipeline=train_pipeline_stage2)
]
# evaluators
val_evaluator = dict(
type='CocoMetric',
ann_file=data_root + 'annotations/ap10k-val-split1.json')
test_evaluator = dict(
type='CocoMetric',
ann_file=data_root + 'annotations/ap10k-test-split1.json')
<!-- [ALGORITHM] -->
<!-- [DATASET] -->
<details>
<summary align="right"><a href="https://arxiv.org/abs/2108.12617">AP-10K (NeurIPS'2021)</a></summary>
```bibtex
@misc{yu2021ap10k,
title={AP-10K: A Benchmark for Animal Pose Estimation in the Wild},
author={Hang Yu and Yufei Xu and Jing Zhang and Wei Zhao and Ziyu Guan and Dacheng Tao},
year={2021},
eprint={2108.12617},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
```
</details>
Results on AP-10K validation set
| Arch | Input Size | AP | AP<sup>50</sup> | AP<sup>75</sup> | AP<sup>M</sup> | AP<sup>L</sup> | ckpt | log |
| :----------------------------------------- | :--------: | :---: | :-------------: | :-------------: | :------------: | :------------: | :-----------------------------------------: | :----------------------------------------: |
| [rtmpose-m](/configs/animal_2d_keypoint/rtmpose/ap10k/rtmpose-m_8xb64-210e_ap10k-256x256.py) | 256x256 | 0.722 | 0.939 | 0.788 | 0.569 | 0.728 | [ckpt](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-m_simcc-ap10k_pt-aic-coco_210e-256x256-7a041aa1_20230206.pth) | [log](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-m_simcc-ap10k_pt-aic-coco_210e-256x256-7a041aa1_20230206.json) |
Models:
- Config: configs/animal_2d_keypoint/rtmpose/ap10k/rtmpose-m_8xb64-210e_ap10k-256x256.py
In Collection: RTMPose
Alias: animal
Metadata:
Architecture:
- RTMPose
Training Data: AP-10K
Name: rtmpose-m_8xb64-210e_ap10k-256x256
Results:
- Dataset: AP-10K
Metrics:
AP: 0.722
AP@0.5: 0.939
AP@0.75: 0.788
AP (L): 0.728
AP (M): 0.569
Task: Animal 2D Keypoint
Weights: https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-m_simcc-ap10k_pt-aic-coco_210e-256x256-7a041aa1_20230206.pth
# Top-down heatmap-based pose estimation
Top-down methods divide the task into two stages: object detection, followed by single-object pose estimation given object bounding boxes Instead of estimating keypoint coordinates directly, the pose estimator will produce heatmaps which represent the
likelihood of being a keypoint, following the paradigm introduced in [Simple Baselines for Human Pose Estimation and Tracking](http://openaccess.thecvf.com/content_ECCV_2018/html/Bin_Xiao_Simple_Baselines_for_ECCV_2018_paper.html).
<div align=center>
<img src="https://user-images.githubusercontent.com/15977946/146522977-5f355832-e9c1-442f-a34f-9d24fb0aefa8.png" height=400>
</div>
## Results and Models
### Animal-Pose Dataset
Results on AnimalPose validation set (1117 instances)
| Model | Input Size | AP | AR | Details and Download |
| :--------: | :--------: | :---: | :---: | :-------------------------------------------------------: |
| HRNet-w32 | 256x256 | 0.740 | 0.780 | [hrnet_animalpose.md](./animalpose/hrnet_animalpose.md) |
| HRNet-w48 | 256x256 | 0.738 | 0.778 | [hrnet_animalpose.md](./animalpose/hrnet_animalpose.md) |
| ResNet-152 | 256x256 | 0.704 | 0.748 | [resnet_animalpose.md](./animalpose/resnet_animalpose.md) |
| ResNet-101 | 256x256 | 0.696 | 0.736 | [resnet_animalpose.md](./animalpose/resnet_animalpose.md) |
| ResNet-50 | 256x256 | 0.691 | 0.736 | [resnet_animalpose.md](./animalpose/resnet_animalpose.md) |
### AP-10K Dataset
Results on AP-10K validation set
| Model | Input Size | AP | Details and Download |
| :--------: | :--------: | :---: | :--------------------------------------------------: |
| HRNet-w48 | 256x256 | 0.728 | [hrnet_ap10k.md](./ap10k/hrnet_ap10k.md) |
| HRNet-w32 | 256x256 | 0.722 | [hrnet_ap10k.md](./ap10k/hrnet_ap10k.md) |
| ResNet-101 | 256x256 | 0.681 | [resnet_ap10k.md](./ap10k/resnet_ap10k.md) |
| ResNet-50 | 256x256 | 0.680 | [resnet_ap10k.md](./ap10k/resnet_ap10k.md) |
| CSPNeXt-m | 256x256 | 0.703 | [cspnext_udp_ap10k.md](./ap10k/cspnext_udp_ap10k.md) |
### Desert Locust Dataset
Results on Desert Locust test set
| Model | Input Size | AUC | EPE | Details and Download |
| :--------: | :--------: | :---: | :--: | :-------------------------------------------: |
| ResNet-152 | 160x160 | 0.925 | 1.49 | [resnet_locust.md](./locust/resnet_locust.md) |
| ResNet-101 | 160x160 | 0.907 | 2.03 | [resnet_locust.md](./locust/resnet_locust.md) |
| ResNet-50 | 160x160 | 0.900 | 2.27 | [resnet_locust.md](./locust/resnet_locust.md) |
### Grévy’s Zebra Dataset
Results on Grévy’s Zebra test set
| Model | Input Size | AUC | EPE | Details and Download |
| :--------: | :--------: | :---: | :--: | :----------------------------------------: |
| ResNet-152 | 160x160 | 0.921 | 1.67 | [resnet_zebra.md](./zebra/resnet_zebra.md) |
| ResNet-101 | 160x160 | 0.915 | 1.83 | [resnet_zebra.md](./zebra/resnet_zebra.md) |
| ResNet-50 | 160x160 | 0.914 | 1.87 | [resnet_zebra.md](./zebra/resnet_zebra.md) |
### Animal-Kingdom Dataset
Results on AnimalKingdom test set
| Model | Input Size | class | PCK(0.05) | Details and Download |
| :-------: | :--------: | :-----------: | :-------: | :---------------------------------------------------: |
| HRNet-w32 | 256x256 | P1 | 0.6323 | [hrnet_animalkingdom.md](./ak/hrnet_animalkingdom.md) |
| HRNet-w32 | 256x256 | P2 | 0.3741 | [hrnet_animalkingdom.md](./ak/hrnet_animalkingdom.md) |
| HRNet-w32 | 256x256 | P3_mammals | 0.571 | [hrnet_animalkingdom.md](./ak/hrnet_animalkingdom.md) |
| HRNet-w32 | 256x256 | P3_amphibians | 0.5358 | [hrnet_animalkingdom.md](./ak/hrnet_animalkingdom.md) |
| HRNet-w32 | 256x256 | P3_reptiles | 0.51 | [hrnet_animalkingdom.md](./ak/hrnet_animalkingdom.md) |
| HRNet-w32 | 256x256 | P3_birds | 0.7671 | [hrnet_animalkingdom.md](./ak/hrnet_animalkingdom.md) |
| HRNet-w32 | 256x256 | P3_fishes | 0.6406 | [hrnet_animalkingdom.md](./ak/hrnet_animalkingdom.md) |
<!-- [ALGORITHM] -->
<details>
<summary align="right"><a href="http://openaccess.thecvf.com/content_CVPR_2019/html/Sun_Deep_High-Resolution_Representation_Learning_for_Human_Pose_Estimation_CVPR_2019_paper.html">HRNet (CVPR'2019)</a></summary>
```bibtex
@inproceedings{sun2019deep,
title={Deep high-resolution representation learning for human pose estimation},
author={Sun, Ke and Xiao, Bin and Liu, Dong and Wang, Jingdong},
booktitle={Proceedings of the IEEE conference on computer vision and pattern recognition},
pages={5693--5703},
year={2019}
}
```
</details>
<!-- [DATASET] -->
<details>
<summary align="right"><a href="https://sutdcv.github.io/Animal-Kingdom/">AnimalKingdom (CVPR'2022)</a></summary>
```bibtex
@InProceedings{
Ng_2022_CVPR,
author = {Ng, Xun Long and Ong, Kian Eng and Zheng, Qichen and Ni, Yun and Yeo, Si Yong and Liu, Jun},
title = {Animal Kingdom: A Large and Diverse Dataset for Animal Behavior Understanding},
booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
month = {June},
year = {2022},
pages = {19023-19034}
}
```
</details>
Results on AnimalKingdom validation set
| Arch | Input Size | PCK(0.05) | Official Repo | Paper | ckpt | log |
| ------------------------------------------------------ | ---------- | --------- | ------------- | ------ | ------------------------------------------------------ | ------------------------------------------------------ |
| [P1_hrnet_w32](configs/animal_2d_keypoint/topdown_heatmap/ak/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P1-256x256.py) | 256x256 | 0.6323 | 0.6342 | 0.6606 | [ckpt](https://download.openmmlab.com/mmpose/v1/animal_2d_keypoint/topdown_heatmap/animal_kingdom/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P1-256x256-08bf96cb_20230519.pth) | [log](https://download.openmmlab.com/mmpose/v1/animal_2d_keypoint/topdown_heatmap/animal_kingdom/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P1-256x256-08bf96cb_20230519.json) |
| [P2_hrnet_w32](configs/animal_2d_keypoint/topdown_heatmap/ak/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P2-256x256.py) | 256x256 | 0.3741 | 0.3726 | 0.393 | [ckpt](https://download.openmmlab.com/mmpose/v1/animal_2d_keypoint/topdown_heatmap/animal_kingdom/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P2-256x256-2396cc58_20230519.pth) | [log](https://download.openmmlab.com/mmpose/v1/animal_2d_keypoint/topdown_heatmap/animal_kingdom/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P2-256x256-2396cc58_20230519.json) |
| [P3_mammals_hrnet_w32](configs/animal_2d_keypoint/topdown_heatmap/ak/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_mammal-256x256.py) | 256x256 | 0.571 | 0.5719 | 0.6159 | [ckpt](https://download.openmmlab.com/mmpose/v1/animal_2d_keypoint/topdown_heatmap/animal_kingdom/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_mammal-256x256-e8aadf02_20230519.pth) | [log](https://download.openmmlab.com/mmpose/v1/animal_2d_keypoint/topdown_heatmap/animal_kingdom/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_mammal-256x256-e8aadf02_20230519.json) |
| [P3_amphibians_hrnet_w32](configs/animal_2d_keypoint/topdown_heatmap/ak/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_amphibian-256x256.py) | 256x256 | 0.5358 | 0.5432 | 0.5674 | [ckpt](https://download.openmmlab.com/mmpose/v1/animal_2d_keypoint/topdown_heatmap/animal_kingdom/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_amphibian-256x256-845085f9_20230519.pth) | [log](https://download.openmmlab.com/mmpose/v1/animal_2d_keypoint/topdown_heatmap/animal_kingdom/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_amphibian-256x256-845085f9_20230519.json) |
| [P3_reptiles_hrnet_w32](configs/animal_2d_keypoint/topdown_heatmap/ak/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_reptile-256x256.py) | 256x256 | 0.51 | 0.5 | 0.5606 | [ckpt](https://download.openmmlab.com/mmpose/v1/animal_2d_keypoint/topdown_heatmap/animal_kingdom/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_reptile-256x256-e8440c16_20230519.pth) | [log](https://download.openmmlab.com/mmpose/v1/animal_2d_keypoint/topdown_heatmap/animal_kingdom/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_reptile-256x256-e8440c16_20230519.json) |
| [P3_birds_hrnet_w32](configs/animal_2d_keypoint/topdown_heatmap/ak/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_bird-256x256.py) | 256x256 | 0.7671 | 0.7636 | 0.7735 | [ckpt](https://download.openmmlab.com/mmpose/v1/animal_2d_keypoint/topdown_heatmap/animal_kingdom/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_bird-256x256-566feff5_20230519.pth) | [log](https://download.openmmlab.com/mmpose/v1/animal_2d_keypoint/topdown_heatmap/animal_kingdom/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_bird-256x256-566feff5_20230519.json) |
| [P3_fishes_hrnet_w32](configs/animal_2d_keypoint/topdown_heatmap/ak/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_fish-256x256.py) | 256x256 | 0.6406 | 0.636 | 0.6825 | [ckpt](https://download.openmmlab.com/mmpose/v1/animal_2d_keypoint/topdown_heatmap/animal_kingdom/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_fish-256x256-76c3999f_20230519.pth) | [log](https://download.openmmlab.com/mmpose/v1/animal_2d_keypoint/topdown_heatmap/animal_kingdom/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_fish-256x256-76c3999f_20230519.json) |
Models:
- Config: configs/animal_2d_keypoint/topdown_heatmap/ak/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P1-256x256.py
In Collection: HRNet
Metadata:
Architecture: &id001
- HRNet
Training Data: AnimalKingdom_P1
Name: td-hm_hrnet-w32_8xb32-300e_animalkingdom_P1-256x256
Results:
- Dataset: AnimalKingdom
Metrics:
PCK: 0.6323
Task: Animal 2D Keypoint
Weights: https://download.openmmlab.com/mmpose/v1/animal_2d_keypoint/topdown_heatmap/animal_kingdom/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P1-256x256-08bf96cb_20230519.pth
- Config: configs/animal_2d_keypoint/topdown_heatmap/ak/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P2-256x256.py
In Collection: HRNet
Metadata:
Architecture: *id001
Training Data: AnimalKingdom_P2
Name: td-hm_hrnet-w32_8xb32-300e_animalkingdom_P2-256x256
Results:
- Dataset: AnimalKingdom
Metrics:
PCK: 0.3741
Task: Animal 2D Keypoint
Weights: https://download.openmmlab.com/mmpose/v1/animal_2d_keypoint/topdown_heatmap/animal_kingdom/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P2-256x256-2396cc58_20230519.pth
- Config: configs/animal_2d_keypoint/topdown_heatmap/ak/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_amphibian-256x256.py
In Collection: HRNet
Metadata:
Architecture: *id001
Training Data: AnimalKingdom_P3_amphibian
Name: td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_amphibian-256x256
Results:
- Dataset: AnimalKingdom
Metrics:
PCK: 0.5358
Task: Animal 2D Keypoint
Weights: https://download.openmmlab.com/mmpose/v1/animal_2d_keypoint/topdown_heatmap/animal_kingdom/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_amphibian-256x256-845085f9_20230519.pth
- Config: configs/animal_2d_keypoint/topdown_heatmap/ak/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_bird-256x256.py
In Collection: HRNet
Metadata:
Architecture: *id001
Training Data: AnimalKingdom_P3_bird
Name: td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_bird-256x256
Results:
- Dataset: AnimalKingdom
Metrics:
PCK: 0.7671
Task: Animal 2D Keypoint
Weights: https://download.openmmlab.com/mmpose/v1/animal_2d_keypoint/topdown_heatmap/animal_kingdom/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_bird-256x256-566feff5_20230519.pth
- Config: configs/animal_2d_keypoint/topdown_heatmap/ak/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_fish-256x256.py
In Collection: HRNet
Metadata:
Architecture: *id001
Training Data: AnimalKingdom_P3_fish
Name: td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_fish-256x256
Results:
- Dataset: AnimalKingdom
Metrics:
PCK: 0.6406
Task: Animal 2D Keypoint
Weights: https://download.openmmlab.com/mmpose/v1/animal_2d_keypoint/topdown_heatmap/animal_kingdom/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_fish-256x256-76c3999f_20230519.pth
- Config: configs/animal_2d_keypoint/topdown_heatmap/ak/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_mammal-256x256.py
In Collection: HRNet
Metadata:
Architecture: *id001
Training Data: AnimalKingdom_P3_mammal
Name: td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_mammal-256x256
Results:
- Dataset: AnimalKingdom
Metrics:
PCK: 0.571
Task: Animal 2D Keypoint
Weights: https://download.openmmlab.com/mmpose/v1/animal_2d_keypoint/topdown_heatmap/animal_kingdom/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_mammal-256x256-e8aadf02_20230519.pth
- Config: configs/animal_2d_keypoint/topdown_heatmap/ak/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_reptile-256x256.py
In Collection: HRNet
Metadata:
Architecture: *id001
Training Data: AnimalKingdom_P3_reptile
Name: td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_reptile-256x256
Results:
- Dataset: AnimalKingdom
Metrics:
PCK: 0.51
Task: Animal 2D Keypoint
Weights: https://download.openmmlab.com/mmpose/v1/animal_2d_keypoint/topdown_heatmap/animal_kingdom/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_reptile-256x256-e8440c16_20230519.pth
_base_ = ['../../../_base_/default_runtime.py']
# runtime
train_cfg = dict(max_epochs=300, val_interval=10)
# optimizer
optim_wrapper = dict(optimizer=dict(
type='AdamW',
lr=5e-4,
))
# learning policy
param_scheduler = [
dict(
type='LinearLR', begin=0, end=500, start_factor=0.001,
by_epoch=False), # warm-up
dict(
type='MultiStepLR',
begin=0,
end=210,
milestones=[170, 200],
gamma=0.1,
by_epoch=True)
]
# automatically scaling LR based on the actual training batch size
auto_scale_lr = dict(base_batch_size=512)
# hooks
default_hooks = dict(checkpoint=dict(save_best='PCK', rule='greater'))
# codec settings
codec = dict(
type='MSRAHeatmap', input_size=(256, 256), heatmap_size=(64, 64), sigma=2)
# model settings
model = dict(
type='TopdownPoseEstimator',
data_preprocessor=dict(
type='PoseDataPreprocessor',
mean=[123.675, 116.28, 103.53],
std=[58.395, 57.12, 57.375],
bgr_to_rgb=True),
backbone=dict(
type='HRNet',
in_channels=3,
extra=dict(
stage1=dict(
num_modules=1,
num_branches=1,
block='BOTTLENECK',
num_blocks=(4, ),
num_channels=(64, )),
stage2=dict(
num_modules=1,
num_branches=2,
block='BASIC',
num_blocks=(4, 4),
num_channels=(32, 64)),
stage3=dict(
num_modules=4,
num_branches=3,
block='BASIC',
num_blocks=(4, 4, 4),
num_channels=(32, 64, 128)),
stage4=dict(
num_modules=3,
num_branches=4,
block='BASIC',
num_blocks=(4, 4, 4, 4),
num_channels=(32, 64, 128, 256))),
init_cfg=dict(
type='Pretrained',
checkpoint='https://download.openmmlab.com/mmpose/'
'pretrain_models/hrnet_w32-36af842e.pth'),
),
head=dict(
type='HeatmapHead',
in_channels=32,
out_channels=23,
deconv_out_channels=None,
loss=dict(type='KeypointMSELoss', use_target_weight=True),
decoder=codec),
test_cfg=dict(
flip_test=True,
flip_mode='heatmap',
shift_heatmap=True,
))
# base dataset settings
dataset_type = 'AnimalKingdomDataset'
data_mode = 'topdown'
data_root = 'data/ak/'
# pipelines
train_pipeline = [
dict(type='LoadImage'),
dict(type='GetBBoxCenterScale'),
dict(type='RandomFlip', direction='horizontal'),
dict(type='RandomHalfBody'),
dict(type='RandomBBoxTransform'),
dict(type='TopdownAffine', input_size=codec['input_size']),
dict(type='GenerateTarget', encoder=codec),
dict(type='PackPoseInputs')
]
val_pipeline = [
dict(type='LoadImage'),
dict(type='GetBBoxCenterScale'),
dict(type='TopdownAffine', input_size=codec['input_size']),
dict(type='PackPoseInputs')
]
# data loaders
train_dataloader = dict(
batch_size=32,
num_workers=2,
persistent_workers=True,
sampler=dict(type='DefaultSampler', shuffle=True),
dataset=dict(
type=dataset_type,
data_root=data_root,
data_mode=data_mode,
ann_file='annotations/ak_P1/train.json',
data_prefix=dict(img='images/'),
pipeline=train_pipeline,
))
val_dataloader = dict(
batch_size=24,
num_workers=2,
persistent_workers=True,
drop_last=False,
sampler=dict(type='DefaultSampler', shuffle=False, round_up=False),
dataset=dict(
type=dataset_type,
data_root=data_root,
data_mode=data_mode,
ann_file='annotations/ak_P1/test.json',
data_prefix=dict(img='images/'),
test_mode=True,
pipeline=val_pipeline,
))
test_dataloader = val_dataloader
# evaluators
val_evaluator = [dict(type='PCKAccuracy', thr=0.05), dict(type='AUC')]
test_evaluator = val_evaluator
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment