Initial snapshot: hand motion pipeline (Dyn-HaMR + dex-retargeting + SPIDER)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-15 14:13:49 +08:00
commit 7e4ef6f98b
7002 changed files with 1452249 additions and 0 deletions
@@ -0,0 +1,500 @@
# Copyright (c) OpenMMLab. All rights reserved.
import copy
import pytest
from mmcv import Config
from numpy.testing import assert_almost_equal
from mmpose.datasets import DATASETS
from tests.utils.data_utils import convert_db_to_output
def test_animal_horse10_dataset():
dataset = 'AnimalHorse10Dataset'
dataset_class = DATASETS.get(dataset)
dataset_info = Config.fromfile(
'configs/_base_/datasets/horse10.py').dataset_info
channel_cfg = dict(
num_output_channels=22,
dataset_joints=22,
dataset_channel=[
[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 21
],
],
inference_channel=[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 21
])
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'])
# Test
data_cfg_copy = copy.deepcopy(data_cfg)
_ = dataset_class(
ann_file='tests/data/horse10/test_horse10.json',
img_prefix='tests/data/horse10/',
data_cfg=data_cfg_copy,
dataset_info=dataset_info,
pipeline=[],
test_mode=True)
custom_dataset = dataset_class(
ann_file='tests/data/horse10/test_horse10.json',
img_prefix='tests/data/horse10/',
data_cfg=data_cfg_copy,
dataset_info=dataset_info,
pipeline=[],
test_mode=False)
assert custom_dataset.dataset_name == 'horse10'
assert custom_dataset.test_mode is False
assert custom_dataset.num_images == 3
_ = custom_dataset[0]
results = convert_db_to_output(custom_dataset.db)
infos = custom_dataset.evaluate(results, metric=['PCK'])
assert_almost_equal(infos['PCK'], 1.0)
with pytest.raises(KeyError):
infos = custom_dataset.evaluate(results, metric='mAP')
def test_animal_fly_dataset():
dataset = 'AnimalFlyDataset'
dataset_class = DATASETS.get(dataset)
dataset_info = Config.fromfile(
'configs/_base_/datasets/fly.py').dataset_info
channel_cfg = dict(
num_output_channels=32,
dataset_joints=32,
dataset_channel=[
[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
],
],
inference_channel=[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
])
data_cfg = dict(
image_size=[192, 192],
heatmap_size=[48, 48],
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'])
# Test
data_cfg_copy = copy.deepcopy(data_cfg)
_ = dataset_class(
ann_file='tests/data/fly/test_fly.json',
img_prefix='tests/data/fly/',
data_cfg=data_cfg_copy,
dataset_info=dataset_info,
pipeline=[],
test_mode=True)
custom_dataset = dataset_class(
ann_file='tests/data/fly/test_fly.json',
img_prefix='tests/data/fly/',
data_cfg=data_cfg_copy,
dataset_info=dataset_info,
pipeline=[],
test_mode=False)
assert custom_dataset.dataset_name == 'fly'
assert custom_dataset.test_mode is False
assert custom_dataset.num_images == 2
_ = custom_dataset[0]
results = convert_db_to_output(custom_dataset.db)
infos = custom_dataset.evaluate(results, metric=['PCK'])
assert_almost_equal(infos['PCK'], 1.0)
with pytest.raises(KeyError):
infos = custom_dataset.evaluate(results, metric='mAP')
def test_animal_locust_dataset():
dataset = 'AnimalLocustDataset'
dataset_class = DATASETS.get(dataset)
dataset_info = Config.fromfile(
'configs/_base_/datasets/locust.py').dataset_info
channel_cfg = dict(
num_output_channels=35,
dataset_joints=35,
dataset_channel=[
[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
34
],
],
inference_channel=[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34
])
data_cfg = dict(
image_size=[160, 160],
heatmap_size=[40, 40],
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'])
# Test
data_cfg_copy = copy.deepcopy(data_cfg)
_ = dataset_class(
ann_file='tests/data/locust/test_locust.json',
img_prefix='tests/data/locust/',
data_cfg=data_cfg_copy,
dataset_info=dataset_info,
pipeline=[],
test_mode=True)
custom_dataset = dataset_class(
ann_file='tests/data/locust/test_locust.json',
img_prefix='tests/data/locust/',
data_cfg=data_cfg_copy,
dataset_info=dataset_info,
pipeline=[],
test_mode=False)
assert custom_dataset.dataset_name == 'locust'
assert custom_dataset.test_mode is False
assert custom_dataset.num_images == 2
_ = custom_dataset[0]
results = convert_db_to_output(custom_dataset.db)
infos = custom_dataset.evaluate(results, metric=['PCK'])
assert_almost_equal(infos['PCK'], 1.0)
with pytest.raises(KeyError):
infos = custom_dataset.evaluate(results, metric='mAP')
def test_animal_zebra_dataset():
dataset = 'AnimalZebraDataset'
dataset_class = DATASETS.get(dataset)
dataset_info = Config.fromfile(
'configs/_base_/datasets/zebra.py').dataset_info
channel_cfg = dict(
num_output_channels=9,
dataset_joints=9,
dataset_channel=[
[0, 1, 2, 3, 4, 5, 6, 7, 8],
],
inference_channel=[0, 1, 2, 3, 4, 5, 6, 7, 8])
data_cfg = dict(
image_size=[160, 160],
heatmap_size=[40, 40],
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'])
# Test
data_cfg_copy = copy.deepcopy(data_cfg)
_ = dataset_class(
ann_file='tests/data/zebra/test_zebra.json',
img_prefix='tests/data/zebra/',
data_cfg=data_cfg_copy,
dataset_info=dataset_info,
pipeline=[],
test_mode=True)
custom_dataset = dataset_class(
ann_file='tests/data/zebra/test_zebra.json',
img_prefix='tests/data/zebra/',
data_cfg=data_cfg_copy,
dataset_info=dataset_info,
pipeline=[],
test_mode=False)
assert custom_dataset.dataset_name == 'zebra'
assert custom_dataset.test_mode is False
assert custom_dataset.num_images == 2
_ = custom_dataset[0]
results = convert_db_to_output(custom_dataset.db)
infos = custom_dataset.evaluate(results, metric=['PCK'])
assert_almost_equal(infos['PCK'], 1.0)
with pytest.raises(KeyError):
infos = custom_dataset.evaluate(results, metric='mAP')
def test_animal_ATRW_dataset():
dataset = 'AnimalATRWDataset'
dataset_class = DATASETS.get(dataset)
dataset_info = Config.fromfile(
'configs/_base_/datasets/atrw.py').dataset_info
channel_cfg = dict(
num_output_channels=15,
dataset_joints=15,
dataset_channel=[
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14],
],
inference_channel=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
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='',
)
# Test
data_cfg_copy = copy.deepcopy(data_cfg)
_ = dataset_class(
ann_file='tests/data/atrw/test_atrw.json',
img_prefix='tests/data/atrw/',
data_cfg=data_cfg_copy,
dataset_info=dataset_info,
pipeline=[],
test_mode=True)
custom_dataset = dataset_class(
ann_file='tests/data/atrw/test_atrw.json',
img_prefix='tests/data/atrw/',
data_cfg=data_cfg_copy,
dataset_info=dataset_info,
pipeline=[],
test_mode=False)
assert custom_dataset.dataset_name == 'atrw'
assert custom_dataset.test_mode is False
assert custom_dataset.num_images == 2
_ = custom_dataset[0]
results = convert_db_to_output(custom_dataset.db)
infos = custom_dataset.evaluate(results, metric='mAP')
assert_almost_equal(infos['AP'], 1.0)
with pytest.raises(KeyError):
infos = custom_dataset.evaluate(results, metric=['PCK'])
def test_animal_Macaque_dataset():
dataset = 'AnimalMacaqueDataset'
dataset_class = DATASETS.get(dataset)
dataset_info = Config.fromfile(
'configs/_base_/datasets/macaque.py').dataset_info
channel_cfg = dict(
num_output_channels=17,
dataset_joints=17,
dataset_channel=[
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16],
],
inference_channel=[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
])
data_cfg = dict(
image_size=[192, 256],
heatmap_size=[48, 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='',
)
# Test
data_cfg_copy = copy.deepcopy(data_cfg)
_ = dataset_class(
ann_file='tests/data/macaque/test_macaque.json',
img_prefix='tests/data/macaque/',
data_cfg=data_cfg_copy,
dataset_info=dataset_info,
pipeline=[],
test_mode=True)
custom_dataset = dataset_class(
ann_file='tests/data/macaque/test_macaque.json',
img_prefix='tests/data/macaque/',
data_cfg=data_cfg_copy,
dataset_info=dataset_info,
pipeline=[],
test_mode=False)
assert custom_dataset.dataset_name == 'macaque'
assert custom_dataset.test_mode is False
assert custom_dataset.num_images == 2
_ = custom_dataset[0]
results = convert_db_to_output(custom_dataset.db)
infos = custom_dataset.evaluate(results, metric='mAP')
assert_almost_equal(infos['AP'], 1.0)
with pytest.raises(KeyError):
infos = custom_dataset.evaluate(results, metric=['PCK'])
def test_animalpose_dataset():
dataset = 'AnimalPoseDataset'
dataset_class = DATASETS.get(dataset)
dataset_info = Config.fromfile(
'configs/_base_/datasets/animalpose.py').dataset_info
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
])
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='',
)
# Test
data_cfg_copy = copy.deepcopy(data_cfg)
_ = dataset_class(
ann_file='tests/data/animalpose/test_animalpose.json',
img_prefix='tests/data/animalpose/',
data_cfg=data_cfg_copy,
dataset_info=dataset_info,
pipeline=[],
test_mode=True)
custom_dataset = dataset_class(
ann_file='tests/data/animalpose/test_animalpose.json',
img_prefix='tests/data/animalpose/',
data_cfg=data_cfg_copy,
dataset_info=dataset_info,
pipeline=[],
test_mode=False)
assert custom_dataset.dataset_name == 'animalpose'
assert custom_dataset.test_mode is False
assert custom_dataset.num_images == 2
_ = custom_dataset[0]
results = convert_db_to_output(custom_dataset.db)
infos = custom_dataset.evaluate(results, metric='mAP')
assert_almost_equal(infos['AP'], 1.0)
with pytest.raises(KeyError):
infos = custom_dataset.evaluate(results, metric=['PCK'])
def test_ap10k_dataset():
dataset = 'AnimalAP10KDataset'
dataset_class = DATASETS.get(dataset)
dataset_info = Config.fromfile(
'configs/_base_/datasets/ap10k.py').dataset_info
channel_cfg = dict(
num_output_channels=17,
dataset_joints=17,
dataset_channel=[
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16],
],
inference_channel=[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
])
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='',
)
# Test
data_cfg_copy = copy.deepcopy(data_cfg)
_ = dataset_class(
ann_file='tests/data/ap10k/test_ap10k.json',
img_prefix='tests/data/ap10k/',
data_cfg=data_cfg_copy,
dataset_info=dataset_info,
pipeline=[],
test_mode=True)
custom_dataset = dataset_class(
ann_file='tests/data/ap10k/test_ap10k.json',
img_prefix='tests/data/ap10k/',
data_cfg=data_cfg_copy,
dataset_info=dataset_info,
pipeline=[],
test_mode=False)
assert custom_dataset.dataset_name == 'ap10k'
assert custom_dataset.test_mode is False
assert custom_dataset.num_images == 2
_ = custom_dataset[0]
results = convert_db_to_output(custom_dataset.db)
for output in results:
# as there is only one box in each image for test
output['bbox_ids'] = [0 for _ in range(len(output['bbox_ids']))]
infos = custom_dataset.evaluate(results, metric='mAP')
assert_almost_equal(infos['AP'], 1.0)
with pytest.raises(KeyError):
infos = custom_dataset.evaluate(results, metric=['PCK'])
@@ -0,0 +1,347 @@
# Copyright (c) OpenMMLab. All rights reserved.
import tempfile
import numpy as np
from mmcv import Config
from mmpose.datasets import DATASETS
from mmpose.datasets.builder import build_dataset
def test_body3d_h36m_dataset():
# Test Human3.6M dataset
dataset = 'Body3DH36MDataset'
dataset_class = DATASETS.get(dataset)
dataset_info = Config.fromfile(
'configs/_base_/datasets/h36m.py').dataset_info
# test single-frame input
data_cfg = dict(
num_joints=17,
seq_len=1,
seq_frame_interval=1,
joint_2d_src='pipeline',
joint_2d_det_file=None,
causal=False,
need_camera_param=True,
camera_param_file='tests/data/h36m/cameras.pkl')
_ = dataset_class(
ann_file='tests/data/h36m/test_h36m_body3d.npz',
img_prefix='tests/data/h36m',
data_cfg=data_cfg,
dataset_info=dataset_info,
pipeline=[],
test_mode=False)
custom_dataset = dataset_class(
ann_file='tests/data/h36m/test_h36m_body3d.npz',
img_prefix='tests/data/h36m',
data_cfg=data_cfg,
dataset_info=dataset_info,
pipeline=[],
test_mode=True)
assert custom_dataset.dataset_name == 'h36m'
assert custom_dataset.test_mode is True
_ = custom_dataset[0]
results = []
for result in custom_dataset:
results.append({
'preds': result['target'][None, ...],
'target_image_paths': [result['target_image_path']],
})
metrics = ['mpjpe', 'p-mpjpe', 'n-mpjpe']
infos = custom_dataset.evaluate(results, metric=metrics)
np.testing.assert_almost_equal(infos['MPJPE'], 0.0)
np.testing.assert_almost_equal(infos['P-MPJPE'], 0.0)
np.testing.assert_almost_equal(infos['N-MPJPE'], 0.0)
# test multi-frame input with joint_2d_src = 'detection'
data_cfg = dict(
num_joints=17,
seq_len=27,
seq_frame_interval=1,
causal=True,
temporal_padding=True,
joint_2d_src='detection',
joint_2d_det_file='tests/data/h36m/test_h36m_2d_detection.npy',
need_camera_param=True,
camera_param_file='tests/data/h36m/cameras.pkl')
_ = dataset_class(
ann_file='tests/data/h36m/test_h36m_body3d.npz',
img_prefix='tests/data/h36m',
data_cfg=data_cfg,
dataset_info=dataset_info,
pipeline=[],
test_mode=False)
custom_dataset = dataset_class(
ann_file='tests/data/h36m/test_h36m_body3d.npz',
img_prefix='tests/data/h36m',
data_cfg=data_cfg,
dataset_info=dataset_info,
pipeline=[],
test_mode=True)
assert custom_dataset.test_mode is True
_ = custom_dataset[0]
results = []
for result in custom_dataset:
results.append({
'preds': result['target'][None, ...],
'target_image_paths': [result['target_image_path']],
})
metrics = ['mpjpe', 'p-mpjpe', 'n-mpjpe']
infos = custom_dataset.evaluate(results, metric=metrics)
np.testing.assert_almost_equal(infos['MPJPE'], 0.0)
np.testing.assert_almost_equal(infos['P-MPJPE'], 0.0)
np.testing.assert_almost_equal(infos['N-MPJPE'], 0.0)
def test_body3d_semi_supervision_dataset():
# Test Body3d Semi-supervision Dataset
dataset_info = Config.fromfile(
'configs/_base_/datasets/h36m.py').dataset_info
# load labeled dataset
labeled_data_cfg = dict(
num_joints=17,
seq_len=27,
seq_frame_interval=1,
causall=False,
temporal_padding=True,
joint_2d_src='gt',
subset=1,
subjects=['S1'],
need_camera_param=True,
camera_param_file='tests/data/h36m/cameras.pkl')
labeled_dataset_cfg = dict(
type='Body3DH36MDataset',
ann_file='tests/data/h36m/test_h36m_body3d.npz',
img_prefix='tests/data/h36m',
data_cfg=labeled_data_cfg,
dataset_info=dataset_info,
pipeline=[])
# load unlabled data
unlabeled_data_cfg = dict(
num_joints=17,
seq_len=27,
seq_frame_interval=1,
causal=False,
temporal_padding=True,
joint_2d_src='gt',
subjects=['S5', 'S7', 'S8'],
need_camera_param=True,
camera_param_file='tests/data/h36m/cameras.pkl',
need_2d_label=True)
unlabeled_dataset_cfg = dict(
type='Body3DH36MDataset',
ann_file='tests/data/h36m/test_h36m_body3d.npz',
img_prefix='tests/data/h36m',
data_cfg=unlabeled_data_cfg,
dataset_info=dataset_info,
pipeline=[
dict(
type='Collect',
keys=[('input_2d', 'unlabeled_input')],
meta_name='metas',
meta_keys=[])
])
# combine labeled and unlabeled dataset to form a new dataset
dataset = 'Body3DSemiSupervisionDataset'
dataset_class = DATASETS.get(dataset)
custom_dataset = dataset_class(labeled_dataset_cfg, unlabeled_dataset_cfg)
item = custom_dataset[0]
assert custom_dataset.labeled_dataset.dataset_name == 'h36m'
assert 'unlabeled_input' in item.keys()
unlabeled_dataset = build_dataset(unlabeled_dataset_cfg)
assert len(unlabeled_dataset) == len(custom_dataset)
def test_body3d_mpi_inf_3dhp_dataset():
# Test MPI-INF-3DHP dataset
dataset = 'Body3DMpiInf3dhpDataset'
dataset_class = DATASETS.get(dataset)
dataset_info = Config.fromfile(
'configs/_base_/datasets/mpi_inf_3dhp.py').dataset_info
# Test single-frame input on trainset
single_frame_train_data_cfg = dict(
num_joints=17,
seq_len=1,
seq_frame_interval=1,
joint_2d_src='pipeline',
joint_2d_det_file=None,
causal=False,
need_camera_param=True,
camera_param_file='tests/data/mpi_inf_3dhp/cameras_train.pkl')
# Test single-frame input on testset
single_frame_test_data_cfg = dict(
num_joints=17,
seq_len=1,
seq_frame_interval=1,
joint_2d_src='gt',
joint_2d_det_file=None,
causal=False,
need_camera_param=True,
camera_param_file='tests/data/mpi_inf_3dhp/cameras_test.pkl')
# Test multi-frame input on trainset
multi_frame_train_data_cfg = dict(
num_joints=17,
seq_len=27,
seq_frame_interval=1,
joint_2d_src='gt',
joint_2d_det_file=None,
causal=True,
temporal_padding=True,
need_camera_param=True,
camera_param_file='tests/data/mpi_inf_3dhp/cameras_train.pkl')
# Test multi-frame input on testset
multi_frame_test_data_cfg = dict(
num_joints=17,
seq_len=27,
seq_frame_interval=1,
joint_2d_src='pipeline',
joint_2d_det_file=None,
causal=False,
temporal_padding=True,
need_camera_param=True,
camera_param_file='tests/data/mpi_inf_3dhp/cameras_test.pkl')
ann_files = [
'tests/data/mpi_inf_3dhp/test_3dhp_train.npz',
'tests/data/mpi_inf_3dhp/test_3dhp_test.npz'
] * 2
data_cfgs = [
single_frame_train_data_cfg, single_frame_test_data_cfg,
multi_frame_train_data_cfg, multi_frame_test_data_cfg
]
for ann_file, data_cfg in zip(ann_files, data_cfgs):
_ = dataset_class(
ann_file=ann_file,
img_prefix='tests/data/mpi_inf_3dhp',
data_cfg=data_cfg,
pipeline=[],
dataset_info=dataset_info,
test_mode=False)
custom_dataset = dataset_class(
ann_file=ann_file,
img_prefix='tests/data/mpi_inf_3dhp',
data_cfg=data_cfg,
pipeline=[],
dataset_info=dataset_info,
test_mode=True)
assert custom_dataset.test_mode is True
_ = custom_dataset[0]
results = []
for result in custom_dataset:
results.append({
'preds': result['target'][None, ...],
'target_image_paths': [result['target_image_path']],
})
metrics = ['mpjpe', 'p-mpjpe', '3dpck', 'p-3dpck', '3dauc', 'p-3dauc']
infos = custom_dataset.evaluate(results, metric=metrics)
np.testing.assert_almost_equal(infos['MPJPE'], 0.0)
np.testing.assert_almost_equal(infos['P-MPJPE'], 0.0)
np.testing.assert_almost_equal(infos['3DPCK'], 100.)
np.testing.assert_almost_equal(infos['P-3DPCK'], 100.)
np.testing.assert_almost_equal(infos['3DAUC'], 30 / 31 * 100)
np.testing.assert_almost_equal(infos['P-3DAUC'], 30 / 31 * 100)
def test_body3dmview_direct_panoptic_dataset():
# Test Mview-Panoptic dataset
dataset = 'Body3DMviewDirectPanopticDataset'
dataset_class = DATASETS.get(dataset)
dataset_info = Config.fromfile(
'configs/_base_/datasets/panoptic_body3d.py').dataset_info
space_size = [8000, 8000, 2000]
space_center = [0, -500, 800]
cube_size = [80, 80, 20]
train_data_cfg = dict(
image_size=[960, 512],
heatmap_size=[[240, 128]],
space_size=space_size,
space_center=space_center,
cube_size=cube_size,
num_joints=15,
seq_list=['160906_band1', '160906_band2'],
cam_list=[(0, 12), (0, 6)],
num_cameras=2,
seq_frame_interval=1,
subset='train',
need_2d_label=True,
need_camera_param=True,
root_id=2)
test_data_cfg = dict(
image_size=[960, 512],
heatmap_size=[[240, 128]],
num_joints=15,
space_size=space_size,
space_center=space_center,
cube_size=cube_size,
seq_list=['160906_band1', '160906_band2'],
cam_list=[(0, 12), (0, 6)],
num_cameras=2,
seq_frame_interval=1,
subset='validation',
need_2d_label=True,
need_camera_param=True,
root_id=2)
with tempfile.TemporaryDirectory() as tmpdir:
_ = dataset_class(
ann_file=tmpdir + '/tmp_train.pkl',
img_prefix='tests/data/panoptic_body3d/',
data_cfg=train_data_cfg,
pipeline=[],
dataset_info=dataset_info,
test_mode=False)
with tempfile.TemporaryDirectory() as tmpdir:
test_dataset = dataset_class(
ann_file=tmpdir + '/tmp_validation.pkl',
img_prefix='tests/data/panoptic_body3d',
data_cfg=test_data_cfg,
pipeline=[],
dataset_info=dataset_info,
test_mode=False)
import copy
gt_num = test_dataset.db_size // test_dataset.num_cameras
results = []
for i in range(gt_num):
index = test_dataset.num_cameras * i
db_rec = copy.deepcopy(test_dataset.db[index])
joints_3d = db_rec['joints_3d']
joints_3d_vis = db_rec['joints_3d_visible']
num_gts = len(joints_3d)
gt_pose = -np.ones((1, 10, test_dataset.num_joints, 5))
if num_gts > 0:
gt_pose[0, :num_gts, :, :3] = np.array(joints_3d)
gt_pose[0, :num_gts, :, 3] = np.array(joints_3d_vis)[:, :, 0] - 1.0
gt_pose[0, :num_gts, :, 4] = 1.0
results.append(dict(pose_3d=gt_pose, sample_id=[i]))
_ = test_dataset.evaluate(results, metric=['mAP', 'mpjpe'])
@@ -0,0 +1,334 @@
# Copyright (c) OpenMMLab. All rights reserved.
import numpy as np
import pytest
from mmcv import Config
from numpy.testing import assert_almost_equal
from mmpose.datasets import DATASETS
def convert_coco_to_output(coco, is_wholebody=False):
results = []
for img_id in coco.getImgIds():
preds = []
scores = []
image = coco.imgs[img_id]
ann_ids = coco.getAnnIds(img_id)
for ann_id in ann_ids:
obj = coco.anns[ann_id]
if is_wholebody:
keypoints = np.array(obj['keypoints'] + obj['foot_kpts'] +
obj['face_kpts'] + obj['lefthand_kpts'] +
obj['righthand_kpts']).reshape(-1, 3)
else:
keypoints = np.array(obj['keypoints']).reshape((-1, 3))
K = keypoints.shape[0]
if sum(keypoints[:, 2]) == 0:
continue
preds.append(
np.concatenate((keypoints[:, :2], np.ones(
[K, 1]), np.ones([K, 1]) * ann_id),
axis=1))
scores.append(1)
image_paths = []
image_paths.append(image['file_name'])
output = {}
output['preds'] = np.stack(preds)
output['scores'] = scores
output['image_paths'] = image_paths
output['output_heatmap'] = None
results.append(output)
return results
def test_bottom_up_COCO_dataset():
dataset = 'BottomUpCocoDataset'
dataset_info = Config.fromfile(
'configs/_base_/datasets/coco.py').dataset_info
# test COCO datasets
dataset_class = DATASETS.get(dataset)
channel_cfg = dict(
dataset_joints=17,
dataset_channel=[
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17],
],
inference_channel=[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17
])
data_cfg = dict(
image_size=512,
base_size=256,
base_sigma=2,
heatmap_size=[128, 256],
num_joints=channel_cfg['dataset_joints'],
dataset_channel=channel_cfg['dataset_channel'],
inference_channel=channel_cfg['inference_channel'],
num_scales=2,
scale_aware_sigma=False,
use_nms=True)
_ = dataset_class(
ann_file='tests/data/coco/test_coco.json',
img_prefix='tests/data/coco/',
data_cfg=data_cfg,
pipeline=[],
dataset_info=dataset_info,
test_mode=False)
custom_dataset = dataset_class(
ann_file='tests/data/coco/test_coco.json',
img_prefix='tests/data/coco/',
data_cfg=data_cfg,
pipeline=[],
dataset_info=dataset_info,
test_mode=True)
assert custom_dataset.dataset_name == 'coco'
assert custom_dataset.num_images == 4
_ = custom_dataset[0]
results = convert_coco_to_output(custom_dataset.coco)
infos = custom_dataset.evaluate(results, metric='mAP')
assert_almost_equal(infos['AP'], 1.0)
with pytest.raises(KeyError):
_ = custom_dataset.evaluate(results, metric='PCK')
def test_bottom_up_CrowdPose_dataset():
dataset = 'BottomUpCrowdPoseDataset'
dataset_info = Config.fromfile(
'configs/_base_/datasets/crowdpose.py').dataset_info
# test CrowdPose datasets
dataset_class = DATASETS.get(dataset)
channel_cfg = dict(
num_output_channels=14,
dataset_joints=14,
dataset_channel=[
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],
],
inference_channel=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13])
data_cfg = dict(
image_size=512,
base_size=256,
base_sigma=2,
heatmap_size=[128, 256],
num_joints=channel_cfg['dataset_joints'],
dataset_channel=channel_cfg['dataset_channel'],
inference_channel=channel_cfg['inference_channel'],
num_scales=2,
scale_aware_sigma=False)
_ = dataset_class(
ann_file='tests/data/crowdpose/test_crowdpose.json',
img_prefix='tests/data/crowdpose/',
data_cfg=data_cfg,
pipeline=[],
dataset_info=dataset_info,
test_mode=False)
custom_dataset = dataset_class(
ann_file='tests/data/crowdpose/test_crowdpose.json',
img_prefix='tests/data/crowdpose/',
data_cfg=data_cfg,
pipeline=[],
dataset_info=dataset_info,
test_mode=True)
assert custom_dataset.dataset_name == 'crowdpose'
image_id = 103319
assert image_id in custom_dataset.img_ids
assert len(custom_dataset.img_ids) == 2
_ = custom_dataset[0]
results = convert_coco_to_output(custom_dataset.coco)
infos = custom_dataset.evaluate(results, metric='mAP')
assert_almost_equal(infos['AP'], 1.0)
with pytest.raises(KeyError):
_ = custom_dataset.evaluate(results, metric='PCK')
def test_bottom_up_MHP_dataset():
dataset = 'BottomUpMhpDataset'
dataset_info = Config.fromfile(
'configs/_base_/datasets/mhp.py').dataset_info
# test MHP datasets
dataset_class = DATASETS.get(dataset)
channel_cfg = dict(
dataset_joints=16,
dataset_channel=[
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
],
inference_channel=[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
])
data_cfg = dict(
image_size=512,
base_size=256,
base_sigma=2,
heatmap_size=[128],
num_joints=channel_cfg['dataset_joints'],
dataset_channel=channel_cfg['dataset_channel'],
inference_channel=channel_cfg['inference_channel'],
num_scales=1,
scale_aware_sigma=False,
)
_ = dataset_class(
ann_file='tests/data/mhp/test_mhp.json',
img_prefix='tests/data/mhp/',
data_cfg=data_cfg,
pipeline=[],
dataset_info=dataset_info,
test_mode=False)
custom_dataset = dataset_class(
ann_file='tests/data/mhp/test_mhp.json',
img_prefix='tests/data/mhp/',
data_cfg=data_cfg,
pipeline=[],
dataset_info=dataset_info,
test_mode=True)
assert custom_dataset.dataset_name == 'mhp'
image_id = 2889
assert image_id in custom_dataset.img_ids
assert len(custom_dataset.img_ids) == 2
_ = custom_dataset[0]
results = convert_coco_to_output(custom_dataset.coco)
infos = custom_dataset.evaluate(results, metric='mAP')
assert_almost_equal(infos['AP'], 1.0)
with pytest.raises(KeyError):
_ = custom_dataset.evaluate(results, metric='PCK')
def test_bottom_up_AIC_dataset():
dataset = 'BottomUpAicDataset'
dataset_info = Config.fromfile(
'configs/_base_/datasets/aic.py').dataset_info
# test MHP datasets
dataset_class = DATASETS.get(dataset)
channel_cfg = dict(
num_output_channels=14,
dataset_joints=14,
dataset_channel=[
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],
],
inference_channel=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13])
data_cfg = dict(
image_size=512,
base_size=256,
base_sigma=2,
heatmap_size=[128],
num_joints=channel_cfg['dataset_joints'],
dataset_channel=channel_cfg['dataset_channel'],
inference_channel=channel_cfg['inference_channel'],
num_scales=1,
scale_aware_sigma=False,
)
_ = dataset_class(
ann_file='tests/data/aic/test_aic.json',
img_prefix='tests/data/aic/',
data_cfg=data_cfg,
pipeline=[],
dataset_info=dataset_info,
test_mode=False)
custom_dataset = dataset_class(
ann_file='tests/data/aic/test_aic.json',
img_prefix='tests/data/aic/',
data_cfg=data_cfg,
pipeline=[],
dataset_info=dataset_info,
test_mode=True)
assert custom_dataset.dataset_name == 'aic'
image_id = 1
assert image_id in custom_dataset.img_ids
assert len(custom_dataset.img_ids) == 3
_ = custom_dataset[0]
results = convert_coco_to_output(custom_dataset.coco)
infos = custom_dataset.evaluate(results, metric='mAP')
assert_almost_equal(infos['AP'], 1.0)
with pytest.raises(KeyError):
_ = custom_dataset.evaluate(results, metric='PCK')
def test_bottom_up_COCO_wholebody_dataset():
dataset = 'BottomUpCocoWholeBodyDataset'
dataset_info = Config.fromfile(
'configs/_base_/datasets/coco_wholebody.py').dataset_info
# test COCO-wholebody datasets
dataset_class = DATASETS.get(dataset)
channel_cfg = dict(
num_output_channels=133,
dataset_joints=133,
dataset_channel=[
list(range(133)),
],
inference_channel=list(range(133)))
data_cfg = dict(
image_size=512,
base_size=256,
base_sigma=2,
heatmap_size=[128, 256],
num_joints=channel_cfg['dataset_joints'],
dataset_channel=channel_cfg['dataset_channel'],
inference_channel=channel_cfg['inference_channel'],
num_scales=2,
scale_aware_sigma=False,
)
_ = dataset_class(
ann_file='tests/data/coco/test_coco_wholebody.json',
img_prefix='tests/data/coco/',
data_cfg=data_cfg,
pipeline=[],
dataset_info=dataset_info,
test_mode=False)
custom_dataset = dataset_class(
ann_file='tests/data/coco/test_coco_wholebody.json',
img_prefix='tests/data/coco/',
data_cfg=data_cfg,
pipeline=[],
dataset_info=dataset_info,
test_mode=True)
assert custom_dataset.test_mode is True
assert custom_dataset.dataset_name == 'coco_wholebody'
image_id = 785
assert image_id in custom_dataset.img_ids
assert len(custom_dataset.img_ids) == 4
_ = custom_dataset[0]
results = convert_coco_to_output(custom_dataset.coco, is_wholebody=True)
infos = custom_dataset.evaluate(results, metric='mAP')
assert_almost_equal(infos['AP'], 1.0)
with pytest.raises(KeyError):
_ = custom_dataset.evaluate(results, metric='PCK')
@@ -0,0 +1,77 @@
# Copyright (c) OpenMMLab. All rights reserved.
from mmpose.datasets import DatasetInfo
def test_dataset_info():
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=[])
dataset_info = DatasetInfo(dataset_info)
assert dataset_info.keypoint_num == len(dataset_info.flip_index)
@@ -0,0 +1,67 @@
# Copyright (c) OpenMMLab. All rights reserved.
from mmcv import Config
from mmpose.datasets.builder import build_dataset
def test_concat_dataset():
# build COCO-like dataset config
dataset_info = Config.fromfile(
'configs/_base_/datasets/coco.py').dataset_info
channel_cfg = dict(
num_output_channels=17,
dataset_joints=17,
dataset_channel=[
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16],
],
inference_channel=[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
])
data_cfg = dict(
image_size=[192, 256],
heatmap_size=[48, 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='tests/data/coco/test_coco_det_AP_H_56.json',
)
dataset_cfg = dict(
type='TopDownCocoDataset',
ann_file='tests/data/coco/test_coco.json',
img_prefix='tests/data/coco/',
data_cfg=data_cfg,
pipeline=[],
dataset_info=dataset_info)
dataset = build_dataset(dataset_cfg)
# Case 1: build ConcatDataset explicitly
concat_dataset_cfg = dict(
type='ConcatDataset', datasets=[dataset_cfg, dataset_cfg])
concat_dataset = build_dataset(concat_dataset_cfg)
assert len(concat_dataset) == 2 * len(dataset)
# Case 2: build ConcatDataset from cfg sequence
concat_dataset = build_dataset([dataset_cfg, dataset_cfg])
assert len(concat_dataset) == 2 * len(dataset)
# Case 3: build ConcatDataset from ann_file sequence
concat_dataset_cfg = dataset_cfg.copy()
for key in ['ann_file', 'type', 'img_prefix', 'dataset_info']:
val = concat_dataset_cfg[key]
concat_dataset_cfg[key] = [val] * 2
for key in ['num_joints', 'dataset_channel']:
val = concat_dataset_cfg['data_cfg'][key]
concat_dataset_cfg['data_cfg'][key] = [val] * 2
concat_dataset = build_dataset(concat_dataset_cfg)
assert len(concat_dataset) == 2 * len(dataset)
@@ -0,0 +1,284 @@
# Copyright (c) OpenMMLab. All rights reserved.
import copy
from unittest.mock import MagicMock
import pytest
from mmcv import Config
from numpy.testing import assert_almost_equal
from mmpose.datasets import DATASETS
from tests.utils.data_utils import convert_db_to_output
def test_face_300W_dataset():
dataset = 'Face300WDataset'
dataset_info = Config.fromfile(
'configs/_base_/datasets/300w.py').dataset_info
# test Face 300W datasets
dataset_class = DATASETS.get(dataset)
dataset_class.load_annotations = MagicMock()
dataset_class.coco = MagicMock()
channel_cfg = dict(
num_output_channels=68,
dataset_joints=68,
dataset_channel=[
list(range(68)),
],
inference_channel=list(range(68)))
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'])
# Test
data_cfg_copy = copy.deepcopy(data_cfg)
_ = dataset_class(
ann_file='tests/data/300w/test_300w.json',
img_prefix='tests/data/300w/',
data_cfg=data_cfg_copy,
pipeline=[],
dataset_info=dataset_info,
test_mode=True)
custom_dataset = dataset_class(
ann_file='tests/data/300w/test_300w.json',
img_prefix='tests/data/300w/',
data_cfg=data_cfg_copy,
pipeline=[],
dataset_info=dataset_info,
test_mode=False)
assert custom_dataset.dataset_name == '300w'
assert custom_dataset.test_mode is False
assert custom_dataset.num_images == 2
_ = custom_dataset[0]
results = convert_db_to_output(custom_dataset.db)
infos = custom_dataset.evaluate(results, metric=['NME'])
assert_almost_equal(infos['NME'], 0.0)
with pytest.raises(KeyError):
_ = custom_dataset.evaluate(results, metric='mAP')
def test_face_coco_wholebody_dataset():
dataset = 'FaceCocoWholeBodyDataset'
dataset_info = Config.fromfile(
'configs/_base_/datasets/coco_wholebody_face.py').dataset_info
# test Face wholebody datasets
dataset_class = DATASETS.get(dataset)
dataset_class.load_annotations = MagicMock()
dataset_class.coco = MagicMock()
channel_cfg = dict(
num_output_channels=68,
dataset_joints=68,
dataset_channel=[
list(range(68)),
],
inference_channel=list(range(68)))
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'])
# Test
data_cfg_copy = copy.deepcopy(data_cfg)
_ = dataset_class(
ann_file='tests/data/coco/test_coco_wholebody.json',
img_prefix='tests/data/coco/',
data_cfg=data_cfg_copy,
pipeline=[],
dataset_info=dataset_info,
test_mode=True)
custom_dataset = dataset_class(
ann_file='tests/data/coco/test_coco_wholebody.json',
img_prefix='tests/data/coco/',
data_cfg=data_cfg_copy,
pipeline=[],
dataset_info=dataset_info,
test_mode=False)
assert custom_dataset.test_mode is False
assert custom_dataset.num_images == 4
_ = custom_dataset[0]
results = convert_db_to_output(custom_dataset.db)
infos = custom_dataset.evaluate(results, metric=['NME'])
assert_almost_equal(infos['NME'], 0.0)
with pytest.raises(KeyError):
_ = custom_dataset.evaluate(results, metric='mAP')
def test_face_AFLW_dataset():
dataset = 'FaceAFLWDataset'
dataset_info = Config.fromfile(
'configs/_base_/datasets/aflw.py').dataset_info
# test Face AFLW datasets
dataset_class = DATASETS.get(dataset)
dataset_class.load_annotations = MagicMock()
dataset_class.coco = MagicMock()
channel_cfg = dict(
num_output_channels=19,
dataset_joints=19,
dataset_channel=[
list(range(19)),
],
inference_channel=list(range(19)))
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'])
# Test
data_cfg_copy = copy.deepcopy(data_cfg)
_ = dataset_class(
ann_file='tests/data/aflw/test_aflw.json',
img_prefix='tests/data/aflw/',
data_cfg=data_cfg_copy,
pipeline=[],
dataset_info=dataset_info,
test_mode=True)
custom_dataset = dataset_class(
ann_file='tests/data/aflw/test_aflw.json',
img_prefix='tests/data/aflw/',
data_cfg=data_cfg_copy,
pipeline=[],
dataset_info=dataset_info,
test_mode=False)
assert custom_dataset.dataset_name == 'aflw'
assert custom_dataset.test_mode is False
assert custom_dataset.num_images == 2
_ = custom_dataset[0]
results = convert_db_to_output(custom_dataset.db)
infos = custom_dataset.evaluate(results, metric=['NME'])
assert_almost_equal(infos['NME'], 0.0)
with pytest.raises(KeyError):
_ = custom_dataset.evaluate(results, metric='mAP')
def test_face_WFLW_dataset():
dataset = 'FaceWFLWDataset'
dataset_info = Config.fromfile(
'configs/_base_/datasets/wflw.py').dataset_info
# test Face WFLW datasets
dataset_class = DATASETS.get(dataset)
dataset_class.load_annotations = MagicMock()
dataset_class.coco = MagicMock()
channel_cfg = dict(
num_output_channels=98,
dataset_joints=98,
dataset_channel=[
list(range(98)),
],
inference_channel=list(range(98)))
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'])
# Test
data_cfg_copy = copy.deepcopy(data_cfg)
_ = dataset_class(
ann_file='tests/data/wflw/test_wflw.json',
img_prefix='tests/data/wflw/',
data_cfg=data_cfg_copy,
pipeline=[],
dataset_info=dataset_info,
test_mode=True)
custom_dataset = dataset_class(
ann_file='tests/data/wflw/test_wflw.json',
img_prefix='tests/data/wflw/',
data_cfg=data_cfg_copy,
pipeline=[],
dataset_info=dataset_info,
test_mode=False)
assert custom_dataset.dataset_name == 'wflw'
assert custom_dataset.test_mode is False
assert custom_dataset.num_images == 2
_ = custom_dataset[0]
results = convert_db_to_output(custom_dataset.db)
infos = custom_dataset.evaluate(results, metric=['NME'])
assert_almost_equal(infos['NME'], 0.0)
with pytest.raises(KeyError):
_ = custom_dataset.evaluate(results, metric='mAP')
def test_face_COFW_dataset():
dataset = 'FaceCOFWDataset'
dataset_info = Config.fromfile(
'configs/_base_/datasets/cofw.py').dataset_info
# test Face COFW datasets
dataset_class = DATASETS.get(dataset)
dataset_class.load_annotations = MagicMock()
dataset_class.coco = MagicMock()
channel_cfg = dict(
num_output_channels=29,
dataset_joints=29,
dataset_channel=[
list(range(29)),
],
inference_channel=list(range(29)))
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'])
# Test
data_cfg_copy = copy.deepcopy(data_cfg)
_ = dataset_class(
ann_file='tests/data/cofw/test_cofw.json',
img_prefix='tests/data/cofw/',
data_cfg=data_cfg_copy,
pipeline=[],
dataset_info=dataset_info,
test_mode=True)
custom_dataset = dataset_class(
ann_file='tests/data/cofw/test_cofw.json',
img_prefix='tests/data/cofw/',
data_cfg=data_cfg_copy,
pipeline=[],
dataset_info=dataset_info,
test_mode=False)
assert custom_dataset.dataset_name == 'cofw'
assert custom_dataset.test_mode is False
assert custom_dataset.num_images == 2
_ = custom_dataset[0]
results = convert_db_to_output(custom_dataset.db)
infos = custom_dataset.evaluate(results, metric=['NME'])
assert_almost_equal(infos['NME'], 0.0)
with pytest.raises(KeyError):
_ = custom_dataset.evaluate(results, metric='mAP')
@@ -0,0 +1,70 @@
# Copyright (c) OpenMMLab. All rights reserved.
from unittest.mock import MagicMock
import pytest
from mmcv import Config
from numpy.testing import assert_almost_equal
from mmpose.datasets import DATASETS
from tests.utils.data_utils import convert_db_to_output
def test_deepfashion_dataset():
dataset = 'DeepFashionDataset'
dataset_info = Config.fromfile(
'configs/_base_/datasets/deepfashion_full.py').dataset_info
# test JHMDB datasets
dataset_class = DATASETS.get(dataset)
dataset_class.load_annotations = MagicMock()
dataset_class.coco = MagicMock()
channel_cfg = dict(
num_output_channels=8,
dataset_joints=8,
dataset_channel=[
[0, 1, 2, 3, 4, 5, 6, 7],
],
inference_channel=[0, 1, 2, 3, 4, 5, 6, 7])
data_cfg = dict(
image_size=[192, 256],
heatmap_size=[48, 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,
image_thr=0.0,
bbox_file='')
# Test gt bbox
custom_dataset = dataset_class(
ann_file='tests/data/fld/test_fld.json',
img_prefix='tests/data/fld/',
subset='full',
data_cfg=data_cfg,
pipeline=[],
dataset_info=dataset_info,
test_mode=True)
assert custom_dataset.test_mode is True
assert custom_dataset.dataset_name == 'deepfashion_full'
image_id = 128
assert image_id in custom_dataset.img_ids
assert len(custom_dataset.img_ids) == 2
_ = custom_dataset[0]
results = convert_db_to_output(custom_dataset.db)
infos = custom_dataset.evaluate(results, metric=['PCK', 'EPE', 'AUC'])
assert_almost_equal(infos['PCK'], 1.0)
assert_almost_equal(infos['AUC'], 0.95)
assert_almost_equal(infos['EPE'], 0.0)
with pytest.raises(KeyError):
infos = custom_dataset.evaluate(results, metric='mAP')
@@ -0,0 +1,456 @@
# Copyright (c) OpenMMLab. All rights reserved.
import copy
import pytest
from mmcv import Config
from numpy.testing import assert_almost_equal
from mmpose.datasets import DATASETS
from tests.utils.data_utils import convert_db_to_output
def test_OneHand10K_dataset():
dataset = 'OneHand10KDataset'
dataset_info = Config.fromfile(
'configs/_base_/datasets/onehand10k.py').dataset_info
dataset_class = DATASETS.get(dataset)
channel_cfg = dict(
num_output_channels=21,
dataset_joints=21,
dataset_channel=[
[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20
],
],
inference_channel=[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20
])
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'])
# Test
data_cfg_copy = copy.deepcopy(data_cfg)
_ = dataset_class(
ann_file='tests/data/onehand10k/test_onehand10k.json',
img_prefix='tests/data/onehand10k/',
data_cfg=data_cfg_copy,
pipeline=[],
dataset_info=dataset_info,
test_mode=True)
custom_dataset = dataset_class(
ann_file='tests/data/onehand10k/test_onehand10k.json',
img_prefix='tests/data/onehand10k/',
data_cfg=data_cfg_copy,
pipeline=[],
dataset_info=dataset_info,
test_mode=False)
assert custom_dataset.dataset_name == 'onehand10k'
assert custom_dataset.test_mode is False
assert custom_dataset.num_images == 4
_ = custom_dataset[0]
results = convert_db_to_output(custom_dataset.db)
infos = custom_dataset.evaluate(results, metric=['PCK', 'EPE', 'AUC'])
assert_almost_equal(infos['PCK'], 1.0)
assert_almost_equal(infos['AUC'], 0.95)
assert_almost_equal(infos['EPE'], 0.0)
with pytest.raises(KeyError):
infos = custom_dataset.evaluate(results, metric='mAP')
def test_hand_coco_wholebody_dataset():
dataset = 'HandCocoWholeBodyDataset'
dataset_info = Config.fromfile(
'configs/_base_/datasets/coco_wholebody_hand.py').dataset_info
dataset_class = DATASETS.get(dataset)
channel_cfg = dict(
num_output_channels=21,
dataset_joints=21,
dataset_channel=[
[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20
],
],
inference_channel=[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20
])
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'])
# Test
data_cfg_copy = copy.deepcopy(data_cfg)
_ = dataset_class(
ann_file='tests/data/coco/test_coco_wholebody.json',
img_prefix='tests/data/coco/',
data_cfg=data_cfg_copy,
pipeline=[],
dataset_info=dataset_info,
test_mode=True)
custom_dataset = dataset_class(
ann_file='tests/data/coco/test_coco_wholebody.json',
img_prefix='tests/data/coco/',
data_cfg=data_cfg_copy,
pipeline=[],
dataset_info=dataset_info,
test_mode=False)
assert custom_dataset.test_mode is False
assert custom_dataset.num_images == 4
_ = custom_dataset[0]
results = convert_db_to_output(custom_dataset.db)
infos = custom_dataset.evaluate(results, metric=['PCK', 'EPE', 'AUC'])
assert_almost_equal(infos['PCK'], 1.0)
assert_almost_equal(infos['AUC'], 0.95)
assert_almost_equal(infos['EPE'], 0.0)
with pytest.raises(KeyError):
infos = custom_dataset.evaluate(results, metric='mAP')
def test_FreiHand2D_dataset():
dataset = 'FreiHandDataset'
dataset_info = Config.fromfile(
'configs/_base_/datasets/freihand2d.py').dataset_info
dataset_class = DATASETS.get(dataset)
channel_cfg = dict(
num_output_channels=21,
dataset_joints=21,
dataset_channel=[
[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20
],
],
inference_channel=[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20
])
data_cfg = dict(
image_size=[224, 224],
heatmap_size=[56, 56],
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'])
# Test
data_cfg_copy = copy.deepcopy(data_cfg)
_ = dataset_class(
ann_file='tests/data/freihand/test_freihand.json',
img_prefix='tests/data/freihand/',
data_cfg=data_cfg_copy,
pipeline=[],
dataset_info=dataset_info,
test_mode=True)
custom_dataset = dataset_class(
ann_file='tests/data/freihand/test_freihand.json',
img_prefix='tests/data/freihand/',
data_cfg=data_cfg_copy,
pipeline=[],
dataset_info=dataset_info,
test_mode=False)
assert custom_dataset.dataset_name == 'freihand'
assert custom_dataset.test_mode is False
assert custom_dataset.num_images == 8
_ = custom_dataset[0]
results = convert_db_to_output(custom_dataset.db)
infos = custom_dataset.evaluate(results, metric=['PCK', 'EPE', 'AUC'])
assert_almost_equal(infos['PCK'], 1.0)
assert_almost_equal(infos['AUC'], 0.95)
assert_almost_equal(infos['EPE'], 0.0)
with pytest.raises(KeyError):
infos = custom_dataset.evaluate(results, metric='mAP')
def test_RHD2D_dataset():
dataset = 'Rhd2DDataset'
dataset_info = Config.fromfile(
'configs/_base_/datasets/rhd2d.py').dataset_info
dataset_class = DATASETS.get(dataset)
channel_cfg = dict(
num_output_channels=21,
dataset_joints=21,
dataset_channel=[
[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20
],
],
inference_channel=[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20
])
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'])
# Test
data_cfg_copy = copy.deepcopy(data_cfg)
_ = dataset_class(
ann_file='tests/data/rhd/test_rhd.json',
img_prefix='tests/data/rhd/',
data_cfg=data_cfg_copy,
pipeline=[],
dataset_info=dataset_info,
test_mode=True)
custom_dataset = dataset_class(
ann_file='tests/data/rhd/test_rhd.json',
img_prefix='tests/data/rhd/',
data_cfg=data_cfg_copy,
pipeline=[],
dataset_info=dataset_info,
test_mode=False)
assert custom_dataset.dataset_name == 'rhd2d'
assert custom_dataset.test_mode is False
assert custom_dataset.num_images == 3
_ = custom_dataset[0]
results = convert_db_to_output(custom_dataset.db)
infos = custom_dataset.evaluate(results, metric=['PCK', 'EPE', 'AUC'])
assert_almost_equal(infos['PCK'], 1.0)
assert_almost_equal(infos['AUC'], 0.95)
assert_almost_equal(infos['EPE'], 0.0)
with pytest.raises(KeyError):
infos = custom_dataset.evaluate(results, metric='mAP')
def test_Panoptic2D_dataset():
dataset = 'PanopticDataset'
dataset_info = Config.fromfile(
'configs/_base_/datasets/panoptic_hand2d.py').dataset_info
dataset_class = DATASETS.get(dataset)
channel_cfg = dict(
num_output_channels=21,
dataset_joints=21,
dataset_channel=[
[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20
],
],
inference_channel=[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20
])
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'])
# Test
data_cfg_copy = copy.deepcopy(data_cfg)
_ = dataset_class(
ann_file='tests/data/panoptic/test_panoptic.json',
img_prefix='tests/data/panoptic/',
data_cfg=data_cfg_copy,
pipeline=[],
dataset_info=dataset_info,
test_mode=True)
custom_dataset = dataset_class(
ann_file='tests/data/panoptic/test_panoptic.json',
img_prefix='tests/data/panoptic/',
data_cfg=data_cfg_copy,
pipeline=[],
dataset_info=dataset_info,
test_mode=False)
assert custom_dataset.dataset_name == 'panoptic_hand2d'
assert custom_dataset.test_mode is False
assert custom_dataset.num_images == 4
_ = custom_dataset[0]
results = convert_db_to_output(custom_dataset.db)
infos = custom_dataset.evaluate(results, metric=['PCKh', 'EPE', 'AUC'])
assert_almost_equal(infos['PCKh'], 1.0)
assert_almost_equal(infos['AUC'], 0.95)
assert_almost_equal(infos['EPE'], 0.0)
with pytest.raises(KeyError):
infos = custom_dataset.evaluate(results, metric='mAP')
def test_InterHand2D_dataset():
dataset = 'InterHand2DDataset'
dataset_info = Config.fromfile(
'configs/_base_/datasets/interhand2d.py').dataset_info
dataset_class = DATASETS.get(dataset)
channel_cfg = dict(
num_output_channels=21,
dataset_joints=21,
dataset_channel=[
[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20
],
],
inference_channel=[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20
])
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'])
# Test
data_cfg_copy = copy.deepcopy(data_cfg)
_ = dataset_class(
ann_file='tests/data/interhand2.6m/test_interhand2.6m_data.json',
camera_file='tests/data/interhand2.6m/test_interhand2.6m_camera.json',
joint_file='tests/data/interhand2.6m/test_interhand2.6m_joint_3d.json',
img_prefix='tests/data/interhand2.6m/',
data_cfg=data_cfg_copy,
pipeline=[],
dataset_info=dataset_info,
test_mode=True)
custom_dataset = dataset_class(
ann_file='tests/data/interhand2.6m/test_interhand2.6m_data.json',
camera_file='tests/data/interhand2.6m/test_interhand2.6m_camera.json',
joint_file='tests/data/interhand2.6m/test_interhand2.6m_joint_3d.json',
img_prefix='tests/data/interhand2.6m/',
data_cfg=data_cfg_copy,
pipeline=[],
dataset_info=dataset_info,
test_mode=False)
assert custom_dataset.dataset_name == 'interhand2d'
assert custom_dataset.test_mode is False
assert custom_dataset.num_images == 4
assert len(custom_dataset.db) == 6
_ = custom_dataset[0]
results = convert_db_to_output(custom_dataset.db)
infos = custom_dataset.evaluate(results, metric=['PCK', 'EPE', 'AUC'])
print(infos, flush=True)
assert_almost_equal(infos['PCK'], 1.0)
assert_almost_equal(infos['AUC'], 0.95)
assert_almost_equal(infos['EPE'], 0.0)
with pytest.raises(KeyError):
infos = custom_dataset.evaluate(results, metric='mAP')
def test_InterHand3D_dataset():
dataset = 'InterHand3DDataset'
dataset_info = Config.fromfile(
'configs/_base_/datasets/interhand3d.py').dataset_info
dataset_class = DATASETS.get(dataset)
channel_cfg = dict(
num_output_channels=42,
dataset_joints=42,
dataset_channel=[
[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
34, 35, 36, 37, 38, 39, 40, 41
],
],
inference_channel=[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
36, 37, 38, 39, 40, 41
])
data_cfg = dict(
image_size=[256, 256],
heatmap_size=[64, 64, 64],
heatmap3d_depth_bound=400.0,
heatmap_size_root=64,
root_depth_bound=400.0,
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'])
# Test
data_cfg_copy = copy.deepcopy(data_cfg)
_ = dataset_class(
ann_file='tests/data/interhand2.6m/test_interhand2.6m_data.json',
camera_file='tests/data/interhand2.6m/test_interhand2.6m_camera.json',
joint_file='tests/data/interhand2.6m/test_interhand2.6m_joint_3d.json',
img_prefix='tests/data/interhand2.6m/',
data_cfg=data_cfg_copy,
pipeline=[],
dataset_info=dataset_info,
test_mode=True)
custom_dataset = dataset_class(
ann_file='tests/data/interhand2.6m/test_interhand2.6m_data.json',
camera_file='tests/data/interhand2.6m/test_interhand2.6m_camera.json',
joint_file='tests/data/interhand2.6m/test_interhand2.6m_joint_3d.json',
img_prefix='tests/data/interhand2.6m/',
data_cfg=data_cfg_copy,
pipeline=[],
dataset_info=dataset_info,
test_mode=False)
assert custom_dataset.dataset_name == 'interhand3d'
assert custom_dataset.test_mode is False
assert custom_dataset.num_images == 4
assert len(custom_dataset.db) == 4
_ = custom_dataset[0]
results = convert_db_to_output(
custom_dataset.db, keys=['rel_root_depth', 'hand_type'], is_3d=True)
infos = custom_dataset.evaluate(
results, metric=['MRRPE', 'MPJPE', 'Handedness_acc'])
assert_almost_equal(infos['MRRPE'], 0.0, decimal=5)
assert_almost_equal(infos['MPJPE_all'], 0.0, decimal=5)
assert_almost_equal(infos['MPJPE_single'], 0.0, decimal=5)
assert_almost_equal(infos['MPJPE_interacting'], 0.0, decimal=5)
assert_almost_equal(infos['Handedness_acc'], 1.0)
with pytest.raises(KeyError):
infos = custom_dataset.evaluate(results, metric='mAP')
@@ -0,0 +1,127 @@
# Copyright (c) OpenMMLab. All rights reserved.
import tempfile
from mmpose.datasets import DATASETS
def test_mesh_Mosh_dataset():
# test Mosh dataset
dataset = 'MoshDataset'
dataset_class = DATASETS.get(dataset)
custom_dataset = dataset_class(
ann_file='tests/data/mosh/test_mosh.npz', pipeline=[])
_ = custom_dataset[0]
def test_mesh_H36M_dataset():
# test H36M dataset
dataset = 'MeshH36MDataset'
dataset_class = DATASETS.get(dataset)
data_cfg = dict(
image_size=[256, 256],
iuv_size=[64, 64],
num_joints=24,
use_IUV=True,
uv_type='BF')
_ = dataset_class(
ann_file='tests/data/h36m/test_h36m.npz',
img_prefix='tests/data/h36m',
data_cfg=data_cfg,
pipeline=[],
test_mode=False)
custom_dataset = dataset_class(
ann_file='tests/data/h36m/test_h36m.npz',
img_prefix='tests/data/h36m',
data_cfg=data_cfg,
pipeline=[],
test_mode=True)
assert custom_dataset.test_mode is True
_ = custom_dataset[0]
# test evaluation
outputs = []
for item in custom_dataset:
pred = dict(
keypoints_3d=item['joints_3d'][None, ...],
image_path=item['image_file'])
outputs.append(pred)
with tempfile.TemporaryDirectory() as tmpdir:
eval_result = custom_dataset.evaluate(outputs, tmpdir)
assert 'MPJPE' in eval_result
assert 'MPJPE-PA' in eval_result
def test_mesh_Mix_dataset():
# test mesh Mix dataset
dataset = 'MeshMixDataset'
dataset_class = DATASETS.get(dataset)
data_cfg = dict(
image_size=[256, 256],
iuv_size=[64, 64],
num_joints=24,
use_IUV=True,
uv_type='BF')
custom_dataset = dataset_class(
configs=[
dict(
ann_file='tests/data/h36m/test_h36m.npz',
img_prefix='tests/data/h36m',
data_cfg=data_cfg,
pipeline=[]),
dict(
ann_file='tests/data/h36m/test_h36m.npz',
img_prefix='tests/data/h36m',
data_cfg=data_cfg,
pipeline=[]),
],
partition=[0.6, 0.4])
_ = custom_dataset[0]
def test_mesh_Adversarial_dataset():
# test mesh Adversarial dataset
# load train dataset
data_cfg = dict(
image_size=[256, 256],
iuv_size=[64, 64],
num_joints=24,
use_IUV=True,
uv_type='BF')
train_dataset = dict(
type='MeshMixDataset',
configs=[
dict(
ann_file='tests/data/h36m/test_h36m.npz',
img_prefix='tests/data/h36m',
data_cfg=data_cfg,
pipeline=[]),
dict(
ann_file='tests/data/h36m/test_h36m.npz',
img_prefix='tests/data/h36m',
data_cfg=data_cfg,
pipeline=[]),
],
partition=[0.6, 0.4])
# load adversarial dataset
adversarial_dataset = dict(
type='MoshDataset',
ann_file='tests/data/mosh/test_mosh.npz',
pipeline=[])
# combine train and adversarial dataset to form a new dataset
dataset = 'MeshAdversarialDataset'
dataset_class = DATASETS.get(dataset)
custom_dataset = dataset_class(train_dataset, adversarial_dataset)
item = custom_dataset[0]
assert 'mosh_theta' in item.keys()
File diff suppressed because it is too large Load Diff