code: def download_kitti_detection_dataset(
      dataset_dir,
      splits=None,
      scratch_dir=None,
      overwrite=False,
      cleanup=False,
  ):
      """Downloads the KITTI object detection dataset from the web.
  
      The dataset will be organized on disk in as follows::
  
          dataset_dir/
              train/
                  data/
                      000000.png
                      000001.png
                      ...
                  labels/
                      000000.txt
                      000001.txt
                      ...
              test/
                  data/
                      000000.png
                      000001.png
                      ...
  
      Args:
          dataset_dir: the directory in which to construct the dataset
          splits (None): the split or list of splits to download. Supported
              values are ``("train", "test")``
          scratch_dir (None): a scratch directory to use to downoad any necessary
              temporary files
          overwrite (False): whether to redownload the zips if they already exist
          cleanup (False): whether to delete the downloaded zips and scratch
              directory
      """
      if splits is None:
          splits = ("test", "train")
  
      if not etau.is_container(splits):
          splits = [splits]
  
      if scratch_dir is None:
          scratch_dir = os.path.join(dataset_dir, "tmp-download")
  
      if "train" in splits:
          _download_and_unpack_kitti_zip(
              _LABELS,
              dataset_dir,
              scratch_dir,
              "train",
              "labels",
              cleanup=cleanup,
              overwrite=overwrite,
          )
  
      # Always download and unpack both splits because they come in a single zip
      _download_and_unpack_kitti_zip(
          _LEFT_IMAGES,
          dataset_dir,
          scratch_dir,
          ("train", "test"),
          "data",
          cleanup=cleanup,
          overwrite=overwrite,
      )
  
      if cleanup:
          etau.delete_dir(scratch_dir)
  
imports: import csv
  import logging
  import struct
  import os
  import numpy
  import eta.core.utils
  import eta.core.web
  import fiftyone
  import fiftyone.core.labels
  import fiftyone.core.metadata
  import fiftyone.core.storage
  import fiftyone.core.utils
  import fiftyone.utils.data
label_desc: Use image node_id 3 for calling a global function with example usage: download_kitti_detection_dataset(dataset_dir, splits, scratch_dir, overwrite, cleanup) without return types