class_docstr: ModuleV1 is an old version of the PaddleHub Module format, which is no longer in use. In order to maintain
  compatibility, users can still load the corresponding Module for prediction. User should call `hub.Module`
  to initialize the corresponding object, rather than `ModuleV1`.
code: def __init__(
      self, name: str = None, directory: str = None, version: str = None
  ):
      if not directory:
          return
  
      desc_file = os.path.join(directory, "module_desc.pb")
      self.desc = module_v1_utils.convert_module_desc(desc_file)
      self.helper = self
      self.signatures = self.desc.signatures
      self.default_signature = self.desc.default_signature
  
      self.directory = directory
      self._load_model()
      self._load_parameters()
      self._load_processor()
      self._load_assets()
      self._load_extra_info()
      self._generate_func()
  
imports: import functools
  import os
  from typing import List
  from typing import Tuple
  import paddle.io
  import paddle2onnx
  from easydict import EasyDict
  from paddlehub.compat import paddle_utils
  from paddlehub.compat.module import module_v1_utils
  from paddlehub.utils import log
  from paddlehub.utils import utils
label_desc: Use image node_id 1 to create a new ModuleV1 object from inherited base classes: object with example: obj = ModuleV1(name, directory, version)