mirror of
https://github.com/open-mmlab/mmsegmentation.git
synced 2025-06-03 22:03:48 +08:00
Thanks for your contribution and we appreciate it a lot. The following instructions would make your pull request more healthy and more easily get feedback. If you do not understand some items, don't worry, just make the pull request and seek help from maintainers. ## Motivation Support depth estimation algorithm [VPD](https://github.com/wl-zhao/VPD) ## Modification 1. add VPD backbone 2. add VPD decoder head for depth estimation 3. add a new segmentor `DepthEstimator` based on `EncoderDecoder` for depth estimation 4. add an integrated metric that calculate common metrics in depth estimation 5. add SiLog loss for depth estimation 6. add config for VPD ## BC-breaking (Optional) Does the modification introduce changes that break the backward-compatibility of the downstream repos? If so, please describe how it breaks the compatibility and how the downstream projects should modify their code to keep compatibility with this PR. ## Use cases (Optional) If this PR introduces a new feature, it is better to list some use cases here, and update the documentation. ## Checklist 1. Pre-commit or other linting tools are used to fix the potential lint issues. 7. The modification is covered by complete unit tests. If not, please add more unit test to ensure the correctness. 8. If the modification has potential influence on downstream projects, this PR should be tested with downstream projects, like MMDet or MMDet3D. 9. The documentation has been modified accordingly, like docstring or example tutorials.
119 lines
4.7 KiB
Python
119 lines
4.7 KiB
Python
# Copyright (c) OpenMMLab. All rights reserved.
|
|
"""MMSegmentation provides 21 registry nodes to support using modules across
|
|
projects. Each node is a child of the root registry in MMEngine.
|
|
|
|
More details can be found at
|
|
https://mmengine.readthedocs.io/en/latest/advanced_tutorials/registry.html.
|
|
"""
|
|
|
|
from mmengine.registry import DATA_SAMPLERS as MMENGINE_DATA_SAMPLERS
|
|
from mmengine.registry import DATASETS as MMENGINE_DATASETS
|
|
from mmengine.registry import EVALUATOR as MMENGINE_EVALUATOR
|
|
from mmengine.registry import HOOKS as MMENGINE_HOOKS
|
|
from mmengine.registry import INFERENCERS as MMENGINE_INFERENCERS
|
|
from mmengine.registry import LOG_PROCESSORS as MMENGINE_LOG_PROCESSORS
|
|
from mmengine.registry import LOOPS as MMENGINE_LOOPS
|
|
from mmengine.registry import METRICS as MMENGINE_METRICS
|
|
from mmengine.registry import MODEL_WRAPPERS as MMENGINE_MODEL_WRAPPERS
|
|
from mmengine.registry import MODELS as MMENGINE_MODELS
|
|
from mmengine.registry import \
|
|
OPTIM_WRAPPER_CONSTRUCTORS as MMENGINE_OPTIM_WRAPPER_CONSTRUCTORS
|
|
from mmengine.registry import OPTIM_WRAPPERS as MMENGINE_OPTIM_WRAPPERS
|
|
from mmengine.registry import OPTIMIZERS as MMENGINE_OPTIMIZERS
|
|
from mmengine.registry import PARAM_SCHEDULERS as MMENGINE_PARAM_SCHEDULERS
|
|
from mmengine.registry import \
|
|
RUNNER_CONSTRUCTORS as MMENGINE_RUNNER_CONSTRUCTORS
|
|
from mmengine.registry import RUNNERS as MMENGINE_RUNNERS
|
|
from mmengine.registry import TASK_UTILS as MMENGINE_TASK_UTILS
|
|
from mmengine.registry import TRANSFORMS as MMENGINE_TRANSFORMS
|
|
from mmengine.registry import VISBACKENDS as MMENGINE_VISBACKENDS
|
|
from mmengine.registry import VISUALIZERS as MMENGINE_VISUALIZERS
|
|
from mmengine.registry import \
|
|
WEIGHT_INITIALIZERS as MMENGINE_WEIGHT_INITIALIZERS
|
|
from mmengine.registry import Registry
|
|
|
|
# manage all kinds of runners like `EpochBasedRunner` and `IterBasedRunner`
|
|
RUNNERS = Registry('runner', parent=MMENGINE_RUNNERS)
|
|
# manage runner constructors that define how to initialize runners
|
|
RUNNER_CONSTRUCTORS = Registry(
|
|
'runner constructor', parent=MMENGINE_RUNNER_CONSTRUCTORS)
|
|
# manage all kinds of loops like `EpochBasedTrainLoop`
|
|
LOOPS = Registry('loop', parent=MMENGINE_LOOPS)
|
|
# manage all kinds of hooks like `CheckpointHook`
|
|
HOOKS = Registry(
|
|
'hook', parent=MMENGINE_HOOKS, locations=['mmseg.engine.hooks'])
|
|
|
|
# manage data-related modules
|
|
DATASETS = Registry(
|
|
'dataset', parent=MMENGINE_DATASETS, locations=['mmseg.datasets'])
|
|
DATA_SAMPLERS = Registry('data sampler', parent=MMENGINE_DATA_SAMPLERS)
|
|
TRANSFORMS = Registry(
|
|
'transform',
|
|
parent=MMENGINE_TRANSFORMS,
|
|
locations=['mmseg.datasets.transforms'])
|
|
|
|
# mangage all kinds of modules inheriting `nn.Module`
|
|
MODELS = Registry('model', parent=MMENGINE_MODELS, locations=['mmseg.models'])
|
|
# mangage all kinds of model wrappers like 'MMDistributedDataParallel'
|
|
MODEL_WRAPPERS = Registry(
|
|
'model_wrapper',
|
|
parent=MMENGINE_MODEL_WRAPPERS,
|
|
locations=['mmseg.models'])
|
|
# mangage all kinds of weight initialization modules like `Uniform`
|
|
WEIGHT_INITIALIZERS = Registry(
|
|
'weight initializer',
|
|
parent=MMENGINE_WEIGHT_INITIALIZERS,
|
|
locations=['mmseg.models'])
|
|
|
|
# mangage all kinds of optimizers like `SGD` and `Adam`
|
|
OPTIMIZERS = Registry(
|
|
'optimizer',
|
|
parent=MMENGINE_OPTIMIZERS,
|
|
locations=['mmseg.engine.optimizers'])
|
|
# manage optimizer wrapper
|
|
OPTIM_WRAPPERS = Registry(
|
|
'optim_wrapper',
|
|
parent=MMENGINE_OPTIM_WRAPPERS,
|
|
locations=['mmseg.engine.optimizers'])
|
|
# manage constructors that customize the optimization hyperparameters.
|
|
OPTIM_WRAPPER_CONSTRUCTORS = Registry(
|
|
'optimizer wrapper constructor',
|
|
parent=MMENGINE_OPTIM_WRAPPER_CONSTRUCTORS,
|
|
locations=['mmseg.engine.optimizers'])
|
|
# mangage all kinds of parameter schedulers like `MultiStepLR`
|
|
PARAM_SCHEDULERS = Registry(
|
|
'parameter scheduler',
|
|
parent=MMENGINE_PARAM_SCHEDULERS,
|
|
locations=['mmseg.engine.schedulers'])
|
|
|
|
# manage all kinds of metrics
|
|
METRICS = Registry(
|
|
'metric', parent=MMENGINE_METRICS, locations=['mmseg.evaluation'])
|
|
# manage evaluator
|
|
EVALUATOR = Registry(
|
|
'evaluator', parent=MMENGINE_EVALUATOR, locations=['mmseg.evaluation'])
|
|
|
|
# manage task-specific modules like ohem pixel sampler
|
|
TASK_UTILS = Registry(
|
|
'task util', parent=MMENGINE_TASK_UTILS, locations=['mmseg.models'])
|
|
|
|
# manage visualizer
|
|
VISUALIZERS = Registry(
|
|
'visualizer',
|
|
parent=MMENGINE_VISUALIZERS,
|
|
locations=['mmseg.visualization'])
|
|
# manage visualizer backend
|
|
VISBACKENDS = Registry(
|
|
'vis_backend',
|
|
parent=MMENGINE_VISBACKENDS,
|
|
locations=['mmseg.visualization'])
|
|
|
|
# manage logprocessor
|
|
LOG_PROCESSORS = Registry(
|
|
'log_processor',
|
|
parent=MMENGINE_LOG_PROCESSORS,
|
|
locations=['mmseg.visualization'])
|
|
|
|
# manage inferencer
|
|
INFERENCERS = Registry('inferencer', parent=MMENGINE_INFERENCERS)
|