builder.py 1.31 KB
Newer Older
1
2
3
4
5
6
7
import copy

from mmdet.utils import build_from_cfg
from .dataset_wrappers import ConcatDataset, RepeatDataset
from .registry import DATASETS


8
def _concat_dataset(cfg, default_args=None):
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    ann_files = cfg['ann_file']
    img_prefixes = cfg.get('img_prefix', None)
    seg_prefixes = cfg.get('seg_prefixes', None)
    proposal_files = cfg.get('proposal_file', None)

    datasets = []
    num_dset = len(ann_files)
    for i in range(num_dset):
        data_cfg = copy.deepcopy(cfg)
        data_cfg['ann_file'] = ann_files[i]
        if isinstance(img_prefixes, (list, tuple)):
            data_cfg['img_prefix'] = img_prefixes[i]
        if isinstance(seg_prefixes, (list, tuple)):
            data_cfg['seg_prefix'] = seg_prefixes[i]
        if isinstance(proposal_files, (list, tuple)):
            data_cfg['proposal_file'] = proposal_files[i]
25
        datasets.append(build_dataset(data_cfg, default_args))
26
27
28
29

    return ConcatDataset(datasets)


30
def build_dataset(cfg, default_args=None):
31
    if cfg['type'] == 'RepeatDataset':
32
33
        dataset = RepeatDataset(
            build_dataset(cfg['dataset'], default_args), cfg['times'])
34
    elif isinstance(cfg['ann_file'], (list, tuple)):
35
        dataset = _concat_dataset(cfg, default_args)
36
    else:
37
        dataset = build_from_cfg(cfg, DATASETS, default_args)
38
39

    return dataset