Commit 37c8cebc authored by Sugon_ldc's avatar Sugon_ldc
Browse files

add new model

parents
Pipeline #318 failed with stages
in 0 seconds
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='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, 255, 255], type='', swap='kpt-32'),
1:
dict(
name='kpt-1', id=1, color=[255, 255, 255], type='', swap='kpt-31'),
2:
dict(
name='kpt-2', id=2, color=[255, 255, 255], type='', swap='kpt-30'),
3:
dict(
name='kpt-3', id=3, color=[255, 255, 255], type='', swap='kpt-29'),
4:
dict(
name='kpt-4', id=4, color=[255, 255, 255], type='', swap='kpt-28'),
5:
dict(
name='kpt-5', id=5, color=[255, 255, 255], type='', swap='kpt-27'),
6:
dict(
name='kpt-6', id=6, color=[255, 255, 255], type='', swap='kpt-26'),
7:
dict(
name='kpt-7', id=7, color=[255, 255, 255], type='', swap='kpt-25'),
8:
dict(
name='kpt-8', id=8, color=[255, 255, 255], type='', swap='kpt-24'),
9:
dict(
name='kpt-9', id=9, color=[255, 255, 255], type='', swap='kpt-23'),
10:
dict(
name='kpt-10',
id=10,
color=[255, 255, 255],
type='',
swap='kpt-22'),
11:
dict(
name='kpt-11',
id=11,
color=[255, 255, 255],
type='',
swap='kpt-21'),
12:
dict(
name='kpt-12',
id=12,
color=[255, 255, 255],
type='',
swap='kpt-20'),
13:
dict(
name='kpt-13',
id=13,
color=[255, 255, 255],
type='',
swap='kpt-19'),
14:
dict(
name='kpt-14',
id=14,
color=[255, 255, 255],
type='',
swap='kpt-18'),
15:
dict(
name='kpt-15',
id=15,
color=[255, 255, 255],
type='',
swap='kpt-17'),
16:
dict(name='kpt-16', id=16, color=[255, 255, 255], type='', swap=''),
17:
dict(
name='kpt-17',
id=17,
color=[255, 255, 255],
type='',
swap='kpt-15'),
18:
dict(
name='kpt-18',
id=18,
color=[255, 255, 255],
type='',
swap='kpt-14'),
19:
dict(
name='kpt-19',
id=19,
color=[255, 255, 255],
type='',
swap='kpt-13'),
20:
dict(
name='kpt-20',
id=20,
color=[255, 255, 255],
type='',
swap='kpt-12'),
21:
dict(
name='kpt-21',
id=21,
color=[255, 255, 255],
type='',
swap='kpt-11'),
22:
dict(
name='kpt-22',
id=22,
color=[255, 255, 255],
type='',
swap='kpt-10'),
23:
dict(
name='kpt-23', id=23, color=[255, 255, 255], type='',
swap='kpt-9'),
24:
dict(
name='kpt-24', id=24, color=[255, 255, 255], type='',
swap='kpt-8'),
25:
dict(
name='kpt-25', id=25, color=[255, 255, 255], type='',
swap='kpt-7'),
26:
dict(
name='kpt-26', id=26, color=[255, 255, 255], type='',
swap='kpt-6'),
27:
dict(
name='kpt-27', id=27, color=[255, 255, 255], type='',
swap='kpt-5'),
28:
dict(
name='kpt-28', id=28, color=[255, 255, 255], type='',
swap='kpt-4'),
29:
dict(
name='kpt-29', id=29, color=[255, 255, 255], type='',
swap='kpt-3'),
30:
dict(
name='kpt-30', id=30, color=[255, 255, 255], type='',
swap='kpt-2'),
31:
dict(
name='kpt-31', id=31, color=[255, 255, 255], type='',
swap='kpt-1'),
32:
dict(
name='kpt-32', id=32, color=[255, 255, 255], type='',
swap='kpt-0'),
33:
dict(
name='kpt-33',
id=33,
color=[255, 255, 255],
type='',
swap='kpt-46'),
34:
dict(
name='kpt-34',
id=34,
color=[255, 255, 255],
type='',
swap='kpt-45'),
35:
dict(
name='kpt-35',
id=35,
color=[255, 255, 255],
type='',
swap='kpt-44'),
36:
dict(
name='kpt-36',
id=36,
color=[255, 255, 255],
type='',
swap='kpt-43'),
37:
dict(
name='kpt-37',
id=37,
color=[255, 255, 255],
type='',
swap='kpt-42'),
38:
dict(
name='kpt-38',
id=38,
color=[255, 255, 255],
type='',
swap='kpt-50'),
39:
dict(
name='kpt-39',
id=39,
color=[255, 255, 255],
type='',
swap='kpt-49'),
40:
dict(
name='kpt-40',
id=40,
color=[255, 255, 255],
type='',
swap='kpt-48'),
41:
dict(
name='kpt-41',
id=41,
color=[255, 255, 255],
type='',
swap='kpt-47'),
42:
dict(
name='kpt-42',
id=42,
color=[255, 255, 255],
type='',
swap='kpt-37'),
43:
dict(
name='kpt-43',
id=43,
color=[255, 255, 255],
type='',
swap='kpt-36'),
44:
dict(
name='kpt-44',
id=44,
color=[255, 255, 255],
type='',
swap='kpt-35'),
45:
dict(
name='kpt-45',
id=45,
color=[255, 255, 255],
type='',
swap='kpt-34'),
46:
dict(
name='kpt-46',
id=46,
color=[255, 255, 255],
type='',
swap='kpt-33'),
47:
dict(
name='kpt-47',
id=47,
color=[255, 255, 255],
type='',
swap='kpt-41'),
48:
dict(
name='kpt-48',
id=48,
color=[255, 255, 255],
type='',
swap='kpt-40'),
49:
dict(
name='kpt-49',
id=49,
color=[255, 255, 255],
type='',
swap='kpt-39'),
50:
dict(
name='kpt-50',
id=50,
color=[255, 255, 255],
type='',
swap='kpt-38'),
51:
dict(name='kpt-51', id=51, color=[255, 255, 255], type='', swap=''),
52:
dict(name='kpt-52', id=52, color=[255, 255, 255], type='', swap=''),
53:
dict(name='kpt-53', id=53, color=[255, 255, 255], type='', swap=''),
54:
dict(name='kpt-54', id=54, color=[255, 255, 255], type='', swap=''),
55:
dict(
name='kpt-55',
id=55,
color=[255, 255, 255],
type='',
swap='kpt-59'),
56:
dict(
name='kpt-56',
id=56,
color=[255, 255, 255],
type='',
swap='kpt-58'),
57:
dict(name='kpt-57', id=57, color=[255, 255, 255], type='', swap=''),
58:
dict(
name='kpt-58',
id=58,
color=[255, 255, 255],
type='',
swap='kpt-56'),
59:
dict(
name='kpt-59',
id=59,
color=[255, 255, 255],
type='',
swap='kpt-55'),
60:
dict(
name='kpt-60',
id=60,
color=[255, 255, 255],
type='',
swap='kpt-72'),
61:
dict(
name='kpt-61',
id=61,
color=[255, 255, 255],
type='',
swap='kpt-71'),
62:
dict(
name='kpt-62',
id=62,
color=[255, 255, 255],
type='',
swap='kpt-70'),
63:
dict(
name='kpt-63',
id=63,
color=[255, 255, 255],
type='',
swap='kpt-69'),
64:
dict(
name='kpt-64',
id=64,
color=[255, 255, 255],
type='',
swap='kpt-68'),
65:
dict(
name='kpt-65',
id=65,
color=[255, 255, 255],
type='',
swap='kpt-75'),
66:
dict(
name='kpt-66',
id=66,
color=[255, 255, 255],
type='',
swap='kpt-74'),
67:
dict(
name='kpt-67',
id=67,
color=[255, 255, 255],
type='',
swap='kpt-73'),
68:
dict(
name='kpt-68',
id=68,
color=[255, 255, 255],
type='',
swap='kpt-64'),
69:
dict(
name='kpt-69',
id=69,
color=[255, 255, 255],
type='',
swap='kpt-63'),
70:
dict(
name='kpt-70',
id=70,
color=[255, 255, 255],
type='',
swap='kpt-62'),
71:
dict(
name='kpt-71',
id=71,
color=[255, 255, 255],
type='',
swap='kpt-61'),
72:
dict(
name='kpt-72',
id=72,
color=[255, 255, 255],
type='',
swap='kpt-60'),
73:
dict(
name='kpt-73',
id=73,
color=[255, 255, 255],
type='',
swap='kpt-67'),
74:
dict(
name='kpt-74',
id=74,
color=[255, 255, 255],
type='',
swap='kpt-66'),
75:
dict(
name='kpt-75',
id=75,
color=[255, 255, 255],
type='',
swap='kpt-65'),
76:
dict(
name='kpt-76',
id=76,
color=[255, 255, 255],
type='',
swap='kpt-82'),
77:
dict(
name='kpt-77',
id=77,
color=[255, 255, 255],
type='',
swap='kpt-81'),
78:
dict(
name='kpt-78',
id=78,
color=[255, 255, 255],
type='',
swap='kpt-80'),
79:
dict(name='kpt-79', id=79, color=[255, 255, 255], type='', swap=''),
80:
dict(
name='kpt-80',
id=80,
color=[255, 255, 255],
type='',
swap='kpt-78'),
81:
dict(
name='kpt-81',
id=81,
color=[255, 255, 255],
type='',
swap='kpt-77'),
82:
dict(
name='kpt-82',
id=82,
color=[255, 255, 255],
type='',
swap='kpt-76'),
83:
dict(
name='kpt-83',
id=83,
color=[255, 255, 255],
type='',
swap='kpt-87'),
84:
dict(
name='kpt-84',
id=84,
color=[255, 255, 255],
type='',
swap='kpt-86'),
85:
dict(name='kpt-85', id=85, color=[255, 255, 255], type='', swap=''),
86:
dict(
name='kpt-86',
id=86,
color=[255, 255, 255],
type='',
swap='kpt-84'),
87:
dict(
name='kpt-87',
id=87,
color=[255, 255, 255],
type='',
swap='kpt-83'),
88:
dict(
name='kpt-88',
id=88,
color=[255, 255, 255],
type='',
swap='kpt-92'),
89:
dict(
name='kpt-89',
id=89,
color=[255, 255, 255],
type='',
swap='kpt-91'),
90:
dict(name='kpt-90', id=90, color=[255, 255, 255], type='', swap=''),
91:
dict(
name='kpt-91',
id=91,
color=[255, 255, 255],
type='',
swap='kpt-89'),
92:
dict(
name='kpt-92',
id=92,
color=[255, 255, 255],
type='',
swap='kpt-88'),
93:
dict(
name='kpt-93',
id=93,
color=[255, 255, 255],
type='',
swap='kpt-95'),
94:
dict(name='kpt-94', id=94, color=[255, 255, 255], type='', swap=''),
95:
dict(
name='kpt-95',
id=95,
color=[255, 255, 255],
type='',
swap='kpt-93'),
96:
dict(
name='kpt-96',
id=96,
color=[255, 255, 255],
type='',
swap='kpt-97'),
97:
dict(
name='kpt-97',
id=97,
color=[255, 255, 255],
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=[])
checkpoint_config = dict(interval=10)
log_config = dict(
interval=50,
hooks=[
dict(type='TextLoggerHook'),
# dict(type='TensorboardLoggerHook')
# dict(type='PaviLoggerHook') # for internal services
])
log_level = 'INFO'
load_from = None
resume_from = None
dist_params = dict(backend='nccl')
workflow = [('train', 1)]
# disable opencv multithreading to avoid system being overloaded
opencv_num_threads = 0
# set multi-process start method as `fork` to speed up the training
mp_start_method = 'fork'
filter_cfg = dict(
type='GaussianFilter',
window_size=11,
sigma=4.0,
)
filter_cfg = dict(
type='OneEuroFilter',
min_cutoff=0.004,
beta=0.7,
)
filter_cfg = dict(
type='SavizkyGolayFilter',
window_size=11,
polyorder=2,
)
<!-- [OTHERS] -->
<details>
<summary align="right"><a href="https://arxiv.org/abs/2112.13715">SmoothNet (arXiv'2021)</a></summary>
```bibtex
@article{zeng2021smoothnet,
title={SmoothNet: A Plug-and-Play Network for Refining Human Poses in Videos},
author={Zeng, Ailing and Yang, Lei and Ju, Xuan and Li, Jiefeng and Wang, Jianyi and Xu, Qiang},
journal={arXiv preprint arXiv:2112.13715},
year={2021}
}
```
</details>
<!-- [DATASET] -->
<details>
<summary align="right"><a href="https://ieeexplore.ieee.org/abstract/document/6682899/">Human3.6M (TPAMI'2014)</a></summary>
```bibtex
@article{h36m_pami,
author = {Ionescu, Catalin and Papava, Dragos and Olaru, Vlad and Sminchisescu, Cristian},
title = {Human3.6M: Large Scale Datasets and Predictive Methods for 3D Human Sensing in Natural Environments},
journal = {IEEE Transactions on Pattern Analysis and Machine Intelligence},
publisher = {IEEE Computer Society},
volume = {36},
number = {7},
pages = {1325-1339},
month = {jul},
year = {2014}
}
```
</details>
The following SmoothNet model checkpoints are available for pose smoothing. The table shows the performance of [SimpleBaseline3D](https://arxiv.org/abs/1705.03098) on [Human3.6M](https://ieeexplore.ieee.org/abstract/document/6682899/) dataset without/with the SmoothNet plugin, and compares the SmoothNet models with 4 different window sizes (8, 16, 32 and 64). The metrics are MPJPE(mm), P-MEJPE(mm) and Acceleration Error (mm/frame^2).
| Arch | Window Size | MPJPE<sup>w/o</sup> | MPJPE<sup>w</sup> | P-MPJPE<sup>w/o</sup> | P-MPJPE<sup>w</sup> | AC. Err<sup>w/o</sup> | AC. Err<sup>w</sup> | ckpt |
| :----------------------------------- | :---------: | :-----------------: | :---------------: | :-------------------: | :-----------------: | :-------------------: | :-----------------: | :-----------------------------------: |
| [smoothnet_ws8](/configs/_base_/filters/smoothnet_t8_h36m.py) | 8 | 54.48 | 53.15 | 42.20 | 41.32 | 19.18 | 1.87 | [ckpt](https://download.openmmlab.com/mmpose/plugin/smoothnet/smoothnet_ws8_h36m.pth) |
| [smoothnet_ws16](/configs/_base_/filters/smoothnet_t16_h36m.py) | 16 | 54.48 | 52.74 | 42.20 | 41.20 | 19.18 | 1.22 | [ckpt](https://download.openmmlab.com/mmpose/plugin/smoothnet/smoothnet_ws16_h36m.pth) |
| [smoothnet_ws32](/configs/_base_/filters/smoothnet_t32_h36m.py) | 32 | 54.48 | 52.47 | 42.20 | 40.84 | 19.18 | 0.99 | [ckpt](https://download.openmmlab.com/mmpose/plugin/smoothnet/smoothnet_ws32_h36m.pth) |
| [smoothnet_ws64](/configs/_base_/filters/smoothnet_t64_h36m.py) | 64 | 54.48 | 53.37 | 42.20 | 40.77 | 19.18 | 0.92 | [ckpt](https://download.openmmlab.com/mmpose/plugin/smoothnet/smoothnet_ws64_h36m.pth) |
# Config for SmoothNet filter trained on Human3.6M data with a window size of
# 16. The model is trained using root-centered keypoint coordinates around the
# pelvis (index:0), thus we set root_index=0 for the filter
filter_cfg = dict(
type='SmoothNetFilter',
window_size=16,
output_size=16,
checkpoint='https://download.openmmlab.com/mmpose/plugin/smoothnet/'
'smoothnet_ws16_h36m.pth',
hidden_size=512,
res_hidden_size=256,
num_blocks=3,
root_index=0)
# Config for SmoothNet filter trained on Human3.6M data with a window size of
# 32. The model is trained using root-centered keypoint coordinates around the
# pelvis (index:0), thus we set root_index=0 for the filter
filter_cfg = dict(
type='SmoothNetFilter',
window_size=32,
output_size=32,
checkpoint='https://download.openmmlab.com/mmpose/plugin/smoothnet/'
'smoothnet_ws32_h36m.pth',
hidden_size=512,
res_hidden_size=256,
num_blocks=3,
root_index=0)
# Config for SmoothNet filter trained on Human3.6M data with a window size of
# 64. The model is trained using root-centered keypoint coordinates around the
# pelvis (index:0), thus we set root_index=0 for the filter
filter_cfg = dict(
type='SmoothNetFilter',
window_size=64,
output_size=64,
checkpoint='https://download.openmmlab.com/mmpose/plugin/smoothnet/'
'smoothnet_ws64_h36m.pth',
hidden_size=512,
res_hidden_size=256,
num_blocks=3,
root_index=0)
# Config for SmoothNet filter trained on Human3.6M data with a window size of
# 8. The model is trained using root-centered keypoint coordinates around the
# pelvis (index:0), thus we set root_index=0 for the filter
filter_cfg = dict(
type='SmoothNetFilter',
window_size=8,
output_size=8,
checkpoint='https://download.openmmlab.com/mmpose/plugin/smoothnet/'
'smoothnet_ws8_h36m.pth',
hidden_size=512,
res_hidden_size=256,
num_blocks=3,
root_index=0)
# 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/tasks/2d_animal_keypoint.md) to prepare data.
## Demo
Please follow [DEMO](/demo/docs/2d_animal_demo.md) to generate fancy demos.
<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>
# Top-down heatmap-based pose estimation
Top-down methods divide the task into two stages: object detection and pose estimation.
They perform object detection first, 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.
<!-- [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="http://openaccess.thecvf.com/content_ICCV_2019/html/Cao_Cross-Domain_Adaptation_for_Animal_Pose_Estimation_ICCV_2019_paper.html">Animal-Pose (ICCV'2019)</a></summary>
```bibtex
@InProceedings{Cao_2019_ICCV,
author = {Cao, Jinkun and Tang, Hongyang and Fang, Hao-Shu and Shen, Xiaoyong and Lu, Cewu and Tai, Yu-Wing},
title = {Cross-Domain Adaptation for Animal Pose Estimation},
booktitle = {The IEEE International Conference on Computer Vision (ICCV)},
month = {October},
year = {2019}
}
```
</details>
Results on AnimalPose validation set (1117 instances)
| Arch | Input Size | AP | AP<sup>50</sup> | AP<sup>75</sup> | AR | AR<sup>50</sup> | ckpt | log |
| :-------------------------------------------- | :--------: | :---: | :-------------: | :-------------: | :---: | :-------------: | :-------------------------------------------: | :-------------------------------------------: |
| [pose_hrnet_w32](/configs/animal/2d_kpt_sview_rgb_img/topdown_heatmap/animalpose/hrnet_w32_animalpose_256x256.py) | 256x256 | 0.736 | 0.959 | 0.832 | 0.775 | 0.966 | [ckpt](https://download.openmmlab.com/mmpose/animal/hrnet/hrnet_w32_animalpose_256x256-1aa7f075_20210426.pth) | [log](https://download.openmmlab.com/mmpose/animal/hrnet/hrnet_w32_animalpose_256x256_20210426.log.json) |
| [pose_hrnet_w48](/configs/animal/2d_kpt_sview_rgb_img/topdown_heatmap/animalpose/hrnet_w48_animalpose_256x256.py) | 256x256 | 0.737 | 0.959 | 0.823 | 0.778 | 0.962 | [ckpt](https://download.openmmlab.com/mmpose/animal/hrnet/hrnet_w48_animalpose_256x256-34644726_20210426.pth) | [log](https://download.openmmlab.com/mmpose/animal/hrnet/hrnet_w48_animalpose_256x256_20210426.log.json) |
Collections:
- Name: HRNet
Paper:
Title: Deep high-resolution representation learning for human pose estimation
URL: http://openaccess.thecvf.com/content_CVPR_2019/html/Sun_Deep_High-Resolution_Representation_Learning_for_Human_Pose_Estimation_CVPR_2019_paper.html
README: https://github.com/open-mmlab/mmpose/blob/master/docs/en/papers/backbones/hrnet.md
Models:
- Config: configs/animal/2d_kpt_sview_rgb_img/topdown_heatmap/animalpose/hrnet_w32_animalpose_256x256.py
In Collection: HRNet
Metadata:
Architecture: &id001
- HRNet
Training Data: Animal-Pose
Name: topdown_heatmap_hrnet_w32_animalpose_256x256
Results:
- Dataset: Animal-Pose
Metrics:
AP: 0.736
AP@0.5: 0.959
AP@0.75: 0.832
AR: 0.775
AR@0.5: 0.966
Task: Animal 2D Keypoint
Weights: https://download.openmmlab.com/mmpose/animal/hrnet/hrnet_w32_animalpose_256x256-1aa7f075_20210426.pth
- Config: configs/animal/2d_kpt_sview_rgb_img/topdown_heatmap/animalpose/hrnet_w48_animalpose_256x256.py
In Collection: HRNet
Metadata:
Architecture: *id001
Training Data: Animal-Pose
Name: topdown_heatmap_hrnet_w48_animalpose_256x256
Results:
- Dataset: Animal-Pose
Metrics:
AP: 0.737
AP@0.5: 0.959
AP@0.75: 0.823
AR: 0.778
AR@0.5: 0.962
Task: Animal 2D Keypoint
Weights: https://download.openmmlab.com/mmpose/animal/hrnet/hrnet_w48_animalpose_256x256-34644726_20210426.pth
_base_ = [
'../../../../_base_/default_runtime.py',
'../../../../_base_/datasets/animalpose.py'
]
evaluation = dict(interval=10, metric='mAP', save_best='AP')
optimizer = dict(
type='Adam',
lr=5e-4,
)
optimizer_config = dict(grad_clip=None)
# learning policy
lr_config = dict(
policy='step',
warmup='linear',
warmup_iters=500,
warmup_ratio=0.001,
step=[170, 200])
total_epochs = 210
log_config = dict(
interval=1,
hooks=[
dict(type='TextLoggerHook'),
# dict(type='TensorboardLoggerHook')
])
channel_cfg = dict(
num_output_channels=20,
dataset_joints=20,
dataset_channel=[
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
],
inference_channel=[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19
])
# model settings
model = dict(
type='TopDown',
pretrained='https://download.openmmlab.com/mmpose/'
'pretrain_models/hrnet_w32-36af842e.pth',
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))),
),
keypoint_head=dict(
type='TopdownHeatmapSimpleHead',
in_channels=32,
out_channels=channel_cfg['num_output_channels'],
num_deconv_layers=0,
extra=dict(final_conv_kernel=1, ),
loss_keypoint=dict(type='JointsMSELoss', use_target_weight=True)),
train_cfg=dict(),
test_cfg=dict(
flip_test=True,
post_process='default',
shift_heatmap=True,
modulate_kernel=11))
data_cfg = dict(
image_size=[256, 256],
heatmap_size=[64, 64],
num_output_channels=channel_cfg['num_output_channels'],
num_joints=channel_cfg['dataset_joints'],
dataset_channel=channel_cfg['dataset_channel'],
inference_channel=channel_cfg['inference_channel'],
soft_nms=False,
nms_thr=1.0,
oks_thr=0.9,
vis_thr=0.2,
use_gt_bbox=True,
det_bbox_thr=0.0,
bbox_file='',
)
train_pipeline = [
dict(type='LoadImageFromFile'),
dict(type='TopDownGetBboxCenterScale', padding=1.25),
dict(type='TopDownRandomShiftBboxCenter', shift_factor=0.16, prob=0.3),
dict(type='TopDownRandomFlip', flip_prob=0.5),
dict(
type='TopDownHalfBodyTransform',
num_joints_half_body=8,
prob_half_body=0.3),
dict(
type='TopDownGetRandomScaleRotation', rot_factor=40, scale_factor=0.5),
dict(type='TopDownAffine'),
dict(type='ToTensor'),
dict(
type='NormalizeTensor',
mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225]),
dict(type='TopDownGenerateTarget', sigma=2),
dict(
type='Collect',
keys=['img', 'target', 'target_weight'],
meta_keys=[
'image_file', 'joints_3d', 'joints_3d_visible', 'center', 'scale',
'rotation', 'bbox_score', 'flip_pairs'
]),
]
val_pipeline = [
dict(type='LoadImageFromFile'),
dict(type='TopDownGetBboxCenterScale', padding=1.25),
dict(type='TopDownAffine'),
dict(type='ToTensor'),
dict(
type='NormalizeTensor',
mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225]),
dict(
type='Collect',
keys=['img'],
meta_keys=[
'image_file', 'center', 'scale', 'rotation', 'bbox_score',
'flip_pairs'
]),
]
test_pipeline = val_pipeline
data_root = 'data/animalpose'
data = dict(
samples_per_gpu=64,
workers_per_gpu=2,
val_dataloader=dict(samples_per_gpu=32),
test_dataloader=dict(samples_per_gpu=32),
train=dict(
type='AnimalPoseDataset',
ann_file=f'{data_root}/annotations/animalpose_train.json',
img_prefix=f'{data_root}/',
data_cfg=data_cfg,
pipeline=train_pipeline,
dataset_info={{_base_.dataset_info}}),
val=dict(
type='AnimalPoseDataset',
ann_file=f'{data_root}/annotations/animalpose_val.json',
img_prefix=f'{data_root}/',
data_cfg=data_cfg,
pipeline=val_pipeline,
dataset_info={{_base_.dataset_info}}),
test=dict(
type='AnimalPoseDataset',
ann_file=f'{data_root}/annotations/animalpose_val.json',
img_prefix=f'{data_root}/',
data_cfg=data_cfg,
pipeline=test_pipeline,
dataset_info={{_base_.dataset_info}}),
)
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