bev-project/mmdet3d/datasets/builder.py

45 lines
1.7 KiB
Python
Raw Normal View History

2022-06-03 12:21:18 +08:00
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