builder.py 1.95 KB
Newer Older
dingchang's avatar
dingchang committed
1
# Copyright (c) OpenMMLab. All rights reserved.
yinchimaoliang's avatar
yinchimaoliang committed
2
import platform
3

4
from mmcv.utils import Registry, build_from_cfg
yinchimaoliang's avatar
yinchimaoliang committed
5

6
from mmdet.datasets import DATASETS as MMDET_DATASETS
yinchimaoliang's avatar
yinchimaoliang committed
7
8
9
10
11
12
from mmdet.datasets.builder import _concat_dataset

if platform.system() != 'Windows':
    # https://github.com/pytorch/pytorch/issues/973
    import resource
    rlimit = resource.getrlimit(resource.RLIMIT_NOFILE)
13
    base_soft_limit = rlimit[0]
yinchimaoliang's avatar
yinchimaoliang committed
14
    hard_limit = rlimit[1]
15
    soft_limit = min(max(4096, base_soft_limit), hard_limit)
yinchimaoliang's avatar
yinchimaoliang committed
16
17
    resource.setrlimit(resource.RLIMIT_NOFILE, (soft_limit, hard_limit))

18
OBJECTSAMPLERS = Registry('Object sampler')
19
20
DATASETS = Registry('dataset')
PIPELINES = Registry('pipeline')
21

yinchimaoliang's avatar
yinchimaoliang committed
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

def build_dataset(cfg, default_args=None):
    from mmdet3d.datasets.dataset_wrappers import CBGSDataset
    from mmdet.datasets.dataset_wrappers import (ClassBalancedDataset,
                                                 ConcatDataset, RepeatDataset)
    if isinstance(cfg, (list, tuple)):
        dataset = ConcatDataset([build_dataset(c, default_args) for c in cfg])
    elif cfg['type'] == 'ConcatDataset':
        dataset = ConcatDataset(
            [build_dataset(c, default_args) for c in cfg['datasets']],
            cfg.get('separate_eval', True))
    elif cfg['type'] == 'RepeatDataset':
        dataset = RepeatDataset(
            build_dataset(cfg['dataset'], default_args), cfg['times'])
    elif cfg['type'] == 'ClassBalancedDataset':
        dataset = ClassBalancedDataset(
            build_dataset(cfg['dataset'], default_args), cfg['oversample_thr'])
    elif cfg['type'] == 'CBGSDataset':
        dataset = CBGSDataset(build_dataset(cfg['dataset'], default_args))
    elif isinstance(cfg.get('ann_file'), (list, tuple)):
        dataset = _concat_dataset(cfg, default_args)
43
    elif cfg['type'] in DATASETS._module_dict.keys():
yinchimaoliang's avatar
yinchimaoliang committed
44
        dataset = build_from_cfg(cfg, DATASETS, default_args)
45
46
    else:
        dataset = build_from_cfg(cfg, MMDET_DATASETS, default_args)
yinchimaoliang's avatar
yinchimaoliang committed
47
    return dataset