class_docstr: ObjectDetection dataset as DataFrame.
  
  Parameters
  ----------
  data : the input for pd.DataFrame
      The input data.
  dataset_type : str, optional
      The dataset type, can be voc/coco or more, used to annotate the optional fields.
  classes : list of str, optional
      The class synsets for this dataset, if `None`, it will infer from the data.
class_docstr_tok: ["ObjectDetection","dataset","as","DataFrame",".","Parameters","--","--","--","--","--","data",":","the","input","for","pd.DataFrame","The","input","data",".","dataset_type",":","str",",","optional","The","dataset","type",",","can","be","voc\/coco","or","more",",","used","to","annotate","the","optional","fields",".","classes",":","list","of","str",",","optional","The","class","synsets","for","this","dataset",",","if","`","None","`",",","it","will","infer","from","the","data","."]
docstr: Randomly split the dataset into train/val/test sets.
  Note that it's perfectly fine to set `test_size` or `val_size` to 0, where the
  returned splits will be empty dataframes.
  
  Parameters
  ----------
  test_size : float
      The ratio for test set, can be in range [0, 1].
  val_size : float
      The ratio for validation set, can be in range [0, 1].
  random_state : int, optional
      If not `None`, will set the random state of numpy.random engine.
  
  Returns
  -------
  train, val, test - (DataFrame, DataFrame, DataFrame)
      The returned dataframes for train/val/test
code: def random_split(self, test_size=0.1, val_size=0, random_state=None):
      r"""Randomly split the dataset into train/val/test sets.
      Note that it's perfectly fine to set `test_size` or `val_size` to 0, where the
      returned splits will be empty dataframes.
  
      Parameters
      ----------
      test_size : float
          The ratio for test set, can be in range [0, 1].
      val_size : float
          The ratio for validation set, can be in range [0, 1].
      random_state : int, optional
          If not `None`, will set the random state of numpy.random engine.
  
      Returns
      -------
      train, val, test - (DataFrame, DataFrame, DataFrame)
          The returned dataframes for train/val/test
  
      """
      assert 0 <= test_size < 1.0
      assert 0 <= val_size < 1.0
      assert (
          val_size + test_size
      ) < 1.0, "val_size + test_size is larger than 1.0!"
      if random_state:
          np.random.seed(random_state)
      test_mask = np.random.rand(len(self)) < test_size
      test = self[test_mask]
      trainval = self[~test_mask]
      val_mask = np.random.rand(len(trainval)) < val_size
      val = trainval[val_mask]
      train = trainval[~val_mask]
      return train, val, test
  
imports: import logging
  import os
  from pathlib import Path
  import warnings
  import numpy
  import pandas
  import matplotlib.pyplot
  from PIL import Image
  import cv2
  from ..data import is_url, url_data
  from ...utils.filesystem import import_try_install
  from ...utils.bbox import bbox_xywh_to_xyxy, bbox_clip_xyxy
label_desc: Use image node_id 11 for calling the ObjectDetectionDataset obj's underlying member method code with example usage: obj.random_split(test_size, val_size, random_state) and returns: train,  val,  test