import platform from mmcv.utils import Registry, build_from_cfg from mmdet.datasets import DATASETS 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) base_soft_limit = rlimit[0] hard_limit = rlimit[1] soft_limit = min(max(4096, base_soft_limit), hard_limit) resource.setrlimit(resource.RLIMIT_NOFILE, (soft_limit, hard_limit)) OBJECTSAMPLERS = Registry("Object sampler") 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) else: dataset = build_from_cfg(cfg, DATASETS, default_args) return dataset