code: def __init__(
      self,
      split=3,
      shot=1,
      data_root=None,
      data_list=None,
      transform=None,
      mode="train",
      use_coco=False,
      use_split_coco=False,
  ):
      assert mode in ["train", "val", "test"]
  
      self.mode = mode
      self.split = split
      self.shot = shot
      self.data_root = data_root
  
      if not use_coco:
          self.class_list = list(
              range(1, 21)
          )  # [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
          if self.split == 3:
              self.sub_list = list(
                  range(1, 16)
              )  # [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
              self.sub_val_list = list(
                  range(16, 21)
              )  # [16,17,18,19,20]
          elif self.split == 2:
              self.sub_list = list(range(1, 11)) + list(
                  range(16, 21)
              )  # [1,2,3,4,5,6,7,8,9,10,16,17,18,19,20]
              self.sub_val_list = list(
                  range(11, 16)
              )  # [11,12,13,14,15]
          elif self.split == 1:
              self.sub_list = list(range(1, 6)) + list(
                  range(11, 21)
              )  # [1,2,3,4,5,11,12,13,14,15,16,17,18,19,20]
              self.sub_val_list = list(range(6, 11))  # [6,7,8,9,10]
          elif self.split == 0:
              self.sub_list = list(
                  range(6, 21)
              )  # [6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
              self.sub_val_list = list(range(1, 6))  # [1,2,3,4,5]
  
      else:
          if use_split_coco:
              print("INFO: using SPLIT COCO")
              self.class_list = list(range(1, 81))
              if self.split == 3:
                  self.sub_val_list = list(range(4, 81, 4))
                  self.sub_list = list(
                      set(self.class_list) - set(self.sub_val_list)
                  )
              elif self.split == 2:
                  self.sub_val_list = list(range(3, 80, 4))
                  self.sub_list = list(
                      set(self.class_list) - set(self.sub_val_list)
                  )
              elif self.split == 1:
                  self.sub_val_list = list(range(2, 79, 4))
                  self.sub_list = list(
                      set(self.class_list) - set(self.sub_val_list)
                  )
              elif self.split == 0:
                  self.sub_val_list = list(range(1, 78, 4))
                  self.sub_list = list(
                      set(self.class_list) - set(self.sub_val_list)
                  )
          else:
              print("INFO: using COCO")
              self.class_list = list(range(1, 81))
              if self.split == 3:
                  self.sub_list = list(range(1, 61))
                  self.sub_val_list = list(range(61, 81))
              elif self.split == 2:
                  self.sub_list = list(range(1, 41)) + list(
                      range(61, 81)
                  )
                  self.sub_val_list = list(range(41, 61))
              elif self.split == 1:
                  self.sub_list = list(range(1, 21)) + list(
                      range(41, 81)
                  )
                  self.sub_val_list = list(range(21, 41))
              elif self.split == 0:
                  self.sub_list = list(range(21, 81))
                  self.sub_val_list = list(range(1, 21))
  
      print("sub_list: ", self.sub_list)
      print("sub_val_list: ", self.sub_val_list)
  
      if self.mode == "train":
          self.data_list, self.sub_class_file_list = make_dataset(
              split, data_root, data_list, self.sub_list
          )
          assert len(self.sub_class_file_list.keys()) == len(
              self.sub_list
          )
      elif self.mode == "val":
          self.data_list, self.sub_class_file_list = make_dataset(
              split, data_root, data_list, self.sub_val_list
          )
          assert len(self.sub_class_file_list.keys()) == len(
              self.sub_val_list
          )
      self.transform = transform
  
file_path: pfe-net/util/dataset.py
imports: import os
  import os.path
  import cv2
  import numpy
  from torch.utils.data import Dataset
  import torch.nn.functional
  import torch
  import random
  import time
  from tqdm import tqdm
label_desc: Use image node_id 1 to create a new SemData object from inherited base classes: Dataset with example: obj = SemData(split, shot, data_root, data_list, transform, mode, use_coco, use_split_coco)