class_docstr: Pascal VOC 2007 or 2012.
code: def _split_generators(self, dl_manager):
      paths = dl_manager.download_and_extract(
          {
              k: os.path.join(_VOC_DATA_URL, v)
              for k, v in self.builder_config.filenames.items()
          }
      )
      return [
          tfds.core.SplitGenerator(
              name=tfds.Split.TEST,
              gen_kwargs=dict(data_path=paths["test"], set_name="test"),
          ),
          tfds.core.SplitGenerator(
              name=tfds.Split.TRAIN,
              gen_kwargs=dict(
                  data_path=paths["trainval"], set_name="train"
              ),
          ),
          tfds.core.SplitGenerator(
              name=tfds.Split.VALIDATION,
              gen_kwargs=dict(
                  data_path=paths["trainval"], set_name="val"
              ),
          ),
      ]
  
file_path: datasets/tensorflow_datasets/object_detection/voc.py
imports: from __future__ import annotations
  import os
  import xml.etree.ElementTree
  import numpy
  from tensorflow_datasets.core.utils.lazy_imports_utils import tensorflow
  import tensorflow_datasets.public_api
label_desc: Use image node_id 2 for calling the Voc obj's underlying member method code with example usage: obj._split_generators(dl_manager) and returns: list