code: def build_processors(self):
      vis_proc_cfg = self.config.get("vis_processor")
      txt_proc_cfg = self.config.get("text_processor")
  
      if vis_proc_cfg is not None:
          vis_train_cfg = vis_proc_cfg.get("train")
          vis_eval_cfg = vis_proc_cfg.get("eval")
  
          self.vis_processors["train"] = self._build_proc_from_cfg(
              vis_train_cfg
          )
          self.vis_processors["eval"] = self._build_proc_from_cfg(
              vis_eval_cfg
          )
  
      if txt_proc_cfg is not None:
          txt_train_cfg = txt_proc_cfg.get("train")
          txt_eval_cfg = txt_proc_cfg.get("eval")
  
          self.text_processors["train"] = self._build_proc_from_cfg(
              txt_train_cfg
          )
          self.text_processors["eval"] = self._build_proc_from_cfg(
              txt_eval_cfg
          )
  
      kw_proc_cfg = self.config.get("kw_processor")
      if kw_proc_cfg is not None:
          for name, cfg in kw_proc_cfg.items():
              self.kw_processors[name] = self._build_proc_from_cfg(cfg)
  
imports: import logging
  import os
  import shutil
  import warnings
  import lavis.common.utils
  import torch.distributed
  from lavis.common.dist_utils import is_dist_avail_and_initialized, is_main_process
  from lavis.common.registry import registry
  from lavis.datasets.data_utils import extract_archive
  from lavis.processors.base_processor import BaseProcessor
  from omegaconf import OmegaConf
  from torchvision.datasets.utils import download_url
label_desc: Use image node_id 3 for calling the BaseDatasetBuilder obj's underlying member method code with example usage: obj.build_processors() without return types