File size: 3,226 Bytes
d3dbf03 |
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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# Copyright (c) OpenMMLab. All rights reserved.
import platform
import numpy as np
import pytest
import torch
from mmcv.transforms import to_tensor
from mmengine.structures import InstanceData
from mmaction.registry import MODELS
from mmaction.structures import ActionDataSample
from mmaction.testing import get_localizer_cfg
from mmaction.utils import register_all_modules
register_all_modules()
def get_localization_data_sample():
gt_bbox = np.array([[0.1, 0.3], [0.375, 0.625]])
data_sample = ActionDataSample()
instance_data = InstanceData()
instance_data['gt_bbox'] = to_tensor(gt_bbox)
data_sample.gt_instances = instance_data
data_sample.set_metainfo(
dict(
video_name='v_test',
duration_second=100,
duration_frame=960,
feature_frame=960))
return data_sample
@pytest.mark.skipif(platform.system() == 'Windows', reason='Windows mem limit')
def test_bmn_loss():
model_cfg = get_localizer_cfg(
'bmn/bmn_2xb8-400x100-9e_activitynet-feature.py')
if 0 and torch.cuda.is_available():
raw_feature = [torch.rand(400, 100).cuda()]
data_samples = [get_localization_data_sample()]
localizer_bmn = MODELS.build(model_cfg.model).cuda()
losses = localizer_bmn(raw_feature, data_samples, mode='loss')
assert isinstance(losses, dict)
else:
raw_feature = [torch.rand(400, 100)]
data_samples = [get_localization_data_sample()]
localizer_bmn = MODELS.build(model_cfg.model)
losses = localizer_bmn(raw_feature, data_samples, mode='loss')
assert isinstance(losses, dict)
@pytest.mark.skipif(platform.system() == 'Windows', reason='Windows mem limit')
def test_bmn_predict():
model_cfg = get_localizer_cfg(
'bmn/bmn_2xb8-400x100-9e_activitynet-feature.py')
if 0 and torch.cuda.is_available():
localizer_bmn = MODELS.build(model_cfg.model).cuda()
data_samples = [get_localization_data_sample()]
with torch.no_grad():
one_raw_feature = [torch.rand(400, 100).cuda()]
localizer_bmn(one_raw_feature, data_samples, mode='predict')
else:
localizer_bmn = MODELS.build(model_cfg.model)
data_samples = [get_localization_data_sample()]
with torch.no_grad():
one_raw_feature = [torch.rand(400, 100)]
localizer_bmn(one_raw_feature, data_samples, mode='predict')
@pytest.mark.skipif(platform.system() == 'Windows', reason='Windows mem limit')
def test_bmn_tensor():
model_cfg = get_localizer_cfg(
'bmn/bmn_2xb8-400x100-9e_activitynet-feature.py')
if 0 and torch.cuda.is_available():
localizer_bmn = MODELS.build(model_cfg.model).cuda()
with torch.no_grad():
one_raw_feature = [torch.rand(400, 100).cuda()]
localizer_bmn(one_raw_feature, data_samples=None, mode='tensor')
else:
localizer_bmn = MODELS.build(model_cfg.model)
with torch.no_grad():
one_raw_feature = [torch.rand(400, 100)]
localizer_bmn(one_raw_feature, data_samples=None, mode='tensor')
|