Spaces:
Runtime error
Runtime error
| import importlib | |
| from os import path as osp | |
| from basicsr.utils import scandir | |
| # automatically scan and import arch modules | |
| # scan all the files under the 'archs' folder and collect files ending with | |
| # '_arch.py' | |
| arch_folder = osp.dirname(osp.abspath(__file__)) | |
| arch_filenames = [ | |
| osp.splitext(osp.basename(v))[0] for v in scandir(arch_folder) | |
| if v.endswith('_arch.py') | |
| ] | |
| # import all the arch modules | |
| _arch_modules = [ | |
| importlib.import_module(f'basicsr.models.archs.{file_name}') | |
| for file_name in arch_filenames | |
| ] | |
| def dynamic_instantiation(modules, cls_type, opt): | |
| """Dynamically instantiate class. | |
| Args: | |
| modules (list[importlib modules]): List of modules from importlib | |
| files. | |
| cls_type (str): Class type. | |
| opt (dict): Class initialization kwargs. | |
| Returns: | |
| class: Instantiated class. | |
| """ | |
| for module in modules: | |
| cls_ = getattr(module, cls_type, None) | |
| if cls_ is not None: | |
| break | |
| if cls_ is None: | |
| raise ValueError(f'{cls_type} is not found.') | |
| return cls_(**opt) | |
| def define_network(opt): | |
| network_type = opt.pop('type') | |
| net = dynamic_instantiation(_arch_modules, network_type, opt) | |
| return net | |