Initial snapshot: hand motion pipeline (Dyn-HaMR + dex-retargeting + SPIDER)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+500
@@ -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'])
|
||||
+347
@@ -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'])
|
||||
+334
@@ -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')
|
||||
+77
@@ -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)
|
||||
+67
@@ -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)
|
||||
+284
@@ -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')
|
||||
+70
@@ -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')
|
||||
+456
@@ -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')
|
||||
+127
@@ -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()
|
||||
+1022
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user