code: def _download_and_extract_imdb(self, data_folder):
      download_folder = os.path.join(data_folder, "imdb")
      vocab_folder = os.path.join(data_folder, "vocabs")
      vocab_file = os.path.join(
          vocab_folder, VISUAL_GENOME_CONSTS["synset_file"]
      )
      os.makedirs(vocab_folder, exist_ok=True)
  
      self._download_and_extract(
          "vocabs", VISUAL_GENOME_CONSTS["vocabs"], data_folder
      )
      extraction_folder = self._download_and_extract(
          "imdb_url", VISUAL_GENOME_CONSTS["imdb_url"], download_folder
      )
  
      if not os.path.exists(vocab_file):
          shutil.move(
              os.path.join(
                  extraction_folder, VISUAL_GENOME_CONSTS["synset_file"]
              ),
              vocab_file,
          )
  
file_path: mmf/mmf/datasets/builders/visual_genome/builder.py
imports: import logging
  import os
  import shutil
  from mmf.common.constants import VISUAL_GENOME_CONSTS
  from mmf.common.registry import registry
  from mmf.datasets.builders.visual_genome.dataset import VisualGenomeDataset
  from mmf.datasets.builders.vqa2.builder import VQA2Builder
  from mmf.utils.download import decompress, download
  from mmf.utils.general import get_mmf_root
label_desc: Use image node_id 4 for calling the VisualGenomeBuilder obj's underlying member method code with example usage: obj._download_and_extract_imdb(data_folder) without return types