[6d389a]: / tests / test_models / test_recognizers / test_skeletongcn.py

Download this file

52 lines (38 with data), 1.7 kB

 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
42
43
44
45
46
47
48
49
50
51
# Copyright (c) OpenMMLab. All rights reserved.
import pytest
import torch
from mmaction.models import build_recognizer
from ..base import generate_recognizer_demo_inputs, get_skeletongcn_cfg
def test_skeletongcn():
config = get_skeletongcn_cfg('stgcn/stgcn_80e_ntu60_xsub_keypoint.py')
with pytest.raises(TypeError):
# "pretrained" must be a str or None
config.model['backbone']['pretrained'] = ['None']
recognizer = build_recognizer(config.model)
config.model['backbone']['pretrained'] = None
recognizer = build_recognizer(config.model)
input_shape = (1, 3, 300, 17, 2)
demo_inputs = generate_recognizer_demo_inputs(input_shape, 'skeleton')
skeletons = demo_inputs['imgs']
gt_labels = demo_inputs['gt_labels']
losses = recognizer(skeletons, gt_labels)
assert isinstance(losses, dict)
# Test forward test
with torch.no_grad():
skeleton_list = [skeleton[None, :] for skeleton in skeletons]
for one_skeleton in skeleton_list:
recognizer(one_skeleton, None, return_loss=False)
# test stgcn without edge importance weighting
config.model['backbone']['edge_importance_weighting'] = False
recognizer = build_recognizer(config.model)
input_shape = (1, 3, 300, 17, 2)
demo_inputs = generate_recognizer_demo_inputs(input_shape, 'skeleton')
skeletons = demo_inputs['imgs']
gt_labels = demo_inputs['gt_labels']
losses = recognizer(skeletons, gt_labels)
assert isinstance(losses, dict)
# Test forward test
with torch.no_grad():
skeleton_list = [skeleton[None, :] for skeleton in skeletons]
for one_skeleton in skeleton_list:
recognizer(one_skeleton, None, return_loss=False)