File size: 3,335 Bytes
34d1f8b | 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 | # Copyright (c) OpenMMLab. All rights reserved.
from unittest import TestCase
from unittest.mock import Mock
from mmengine.dataset import BaseDataset
from mmdet3d.datasets.transforms import ObjectSample
from mmdet3d.engine.hooks import DisableObjectSampleHook
class TestDisableObjectSampleHook(TestCase):
runner = Mock()
runner.train_dataloader = Mock()
runner.train_dataloader.dataset = Mock(spec=BaseDataset)
runner.train_dataloader.dataset.pipeline = Mock()
runner.train_dataloader._DataLoader__initialized = True
runner.train_dataloader.dataset.pipeline.transforms = [
ObjectSample(
db_sampler=dict(
data_root='tests/data/waymo/kitti_format',
info_path= # noqa
'tests/data/waymo/kitti_format/waymo_dbinfos_train.pkl',
rate=1.0,
prepare=dict(
filter_by_difficulty=[-1],
filter_by_min_points=dict(Car=5)),
classes=['Car'],
sample_groups=dict(Car=15),
))
]
def test_is_model_wrapper_and_persistent_workers_on(self):
self.runner.train_dataloader.dataset.pipeline.transforms[
0].disabled = False
self.runner.train_dataloader.persistent_workers = True
hook = DisableObjectSampleHook(disable_after_epoch=15)
self.runner.epoch = 14
hook.before_train_epoch(self.runner)
self.assertFalse(self.runner.train_dataloader.dataset.pipeline.
transforms[0].disabled) # noqa: E501
self.runner.epoch = 15
hook.before_train_epoch(self.runner)
self.assertTrue(self.runner.train_dataloader.dataset.pipeline.
transforms[0].disabled) # noqa: E501
self.assertTrue(hook._restart_dataloader)
self.assertFalse(self.runner.train_dataloader._DataLoader__initialized)
self.runner.epoch = 16
hook.before_train_epoch(self.runner)
self.assertTrue(self.runner.train_dataloader._DataLoader__initialized)
self.assertTrue(self.runner.train_dataloader.dataset.pipeline.
transforms[0].disabled) # noqa: E501
def test_not_model_wrapper_and_persistent_workers_off(self):
self.runner.train_dataloader.dataset.pipeline.transforms[
0].disabled = False
self.runner.train_dataloader.persistent_workers = False
hook = DisableObjectSampleHook(disable_after_epoch=15)
self.runner.epoch = 14
hook.before_train_epoch(self.runner)
self.assertFalse(self.runner.train_dataloader.dataset.pipeline.
transforms[0].disabled) # noqa: E501
self.runner.epoch = 15
hook.before_train_epoch(self.runner)
self.assertTrue(self.runner.train_dataloader.dataset.pipeline.
transforms[0].disabled) # noqa: E501
self.assertFalse(hook._restart_dataloader)
self.assertTrue(self.runner.train_dataloader._DataLoader__initialized)
self.runner.epoch = 16
hook.before_train_epoch(self.runner)
self.assertTrue(self.runner.train_dataloader._DataLoader__initialized)
self.assertTrue(self.runner.train_dataloader.dataset.pipeline.
transforms[0].disabled) # noqa: E501
|