Spaces:
Runtime error
Runtime error
File size: 1,232 Bytes
f518bf0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
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
|