recover scope mechanism for mmyolo (#1495)

pull/1497/head
hanrui1sensetime 2022-12-06 22:33:30 +08:00 committed by GitHub
parent 6ed62ca9f5
commit f8e65bb43c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 4 deletions

View File

@ -47,8 +47,7 @@ class MMCodebase(metaclass=ABCMeta):
type=task.value, type=task.value,
model_cfg=model_cfg, model_cfg=model_cfg,
deploy_cfg=deploy_cfg, deploy_cfg=deploy_cfg,
device=device, device=device))
_scope_='mmdeploy'))
@classmethod @classmethod
def register_deploy_modules(cls): def register_deploy_modules(cls):
@ -84,4 +83,4 @@ def get_codebase_class(codebase: Codebase) -> MMCodebase:
logger.warn(f'Import mmdeploy.codebase.{codebase.value}.deploy failed' logger.warn(f'Import mmdeploy.codebase.{codebase.value}.deploy failed'
'Please check whether the module is the custom module.' 'Please check whether the module is the custom module.'
f'{e}') f'{e}')
return CODEBASE.build({'type': codebase.value, '_scope_': 'mmdeploy'}) return CODEBASE.build({'type': codebase.value})

View File

@ -13,6 +13,7 @@ from torch.utils.data import DataLoader, Dataset
from mmdeploy.utils import (get_backend_config, get_codebase, from mmdeploy.utils import (get_backend_config, get_codebase,
get_codebase_config, get_root_logger) get_codebase_config, get_root_logger)
from mmdeploy.utils.config_utils import get_codebase_external_module
from mmdeploy.utils.dataset import is_can_sort_dataset, sort_dataset from mmdeploy.utils.dataset import is_can_sort_dataset, sort_dataset
@ -23,15 +24,36 @@ class BaseTask(metaclass=ABCMeta):
model_cfg (str | Config): Model config file. model_cfg (str | Config): Model config file.
deploy_cfg (str | Config): Deployment config file. deploy_cfg (str | Config): Deployment config file.
device (str): A string specifying device type. device (str): A string specifying device type.
experiment_name (str, optional): Name of current experiment.
If not specified, timestamp will be used as
``experiment_name``. Defaults to ``None``.
""" """
def __init__(self, model_cfg: Config, deploy_cfg: Config, device: str): def __init__(self,
model_cfg: Config,
deploy_cfg: Config,
device: str,
experiment_name: str = 'BaseTask'):
self.model_cfg = model_cfg self.model_cfg = model_cfg
self.deploy_cfg = deploy_cfg self.deploy_cfg = deploy_cfg
self.device = device self.device = device
self.codebase = get_codebase(deploy_cfg) self.codebase = get_codebase(deploy_cfg)
self.experiment_name = experiment_name
# init scope
from .. import import_codebase
custom_module_list = get_codebase_external_module(deploy_cfg)
import_codebase(self.codebase, custom_module_list)
from mmengine.registry import DefaultScope
if not DefaultScope.check_instance_created(self.experiment_name):
self.scope = DefaultScope.get_instance(
self.experiment_name,
scope_name=self.model_cfg.get('default_scope'))
else:
self.scope = DefaultScope.get_instance(self.experiment_name)
# lazy build visualizer # lazy build visualizer
self.visualizer = self.model_cfg.get('visualizer', None) self.visualizer = self.model_cfg.get('visualizer', None)