class_docstr: SemanticKITTI: A Dataset for Semantic Scene Understanding of LiDAR Sequences"
  from the <https://arxiv.org/pdf/1904.01416.pdf> paper, 
  containing about 21 lidar scan sequences with dense point-wise annotations.
  
  root dir should be structured as
  rootdir
      └── sequences/
          ├── 00/
          │   ├── labels/
          │   │     ├ 000000.label
          │   │     └ 000001.label
          │   └── velodyne/
          │         ├ 000000.bin
          │         └ 000001.bin
          ├── 01/
          ├── 02/
          .
          .
          .
          └── 21/
  Args:
      root (string): Root directory of the dataset.
      split (string, optional): If :obj:`"train"`, loads the training
          dataset.
          If :obj:`"val"`, loads the validation dataset.
          If :obj:`"trainval"`, loads the training and validation dataset.
          If :obj:`"test"`, loads the test dataset.
          (default: :obj:`"trainval"`)
      transform (callable, optional): A function/transform that takes in an
          :obj:`torch_geometric.data.Data` object and returns a transformed
          version. The data object will be transformed before every access.
          (default: :obj:`None`)
code: def process(self):
      for i, split in enumerate(self.AVAILABLE_SPLITS[:-1]):
          if os.path.exists(self.processed_paths[i]):
              continue
          os.makedirs(self.processed_paths[i])
  
          seqs = self.SPLIT[split]
          scan_paths, label_paths = self._load_paths(seqs)
          scan_names = []
          for scan in scan_paths:
              scan = os.path.splitext(scan)[0]
              seq, _, scan_id = scan.split(os.path.sep)[-3:]
              scan_names.append("{}_{}".format(seq, scan_id))
  
          out_files = [
              os.path.join(
                  self.processed_paths[i], "{}.pt".format(scan_name)
              )
              for scan_name in scan_names
          ]
          args = zip(
              scan_paths,
              label_paths,
              [self.pre_transform for i in range(len(scan_paths))],
              out_files,
          )
          if self.use_multiprocessing:
              with multiprocessing.Pool(
                  processes=self.process_workers
              ) as pool:
                  pool.starmap(self.process_one, args)
          else:
              for arg in args:
                  self.process_one(*arg)
  
imports: import os
  from glob import glob
  import numpy
  import multiprocessing
  import logging
  import torch
  from torch_geometric.data import Dataset, Data
  from torch_points3d.datasets.base_dataset import BaseDataset
  from torch_points3d.datasets.segmentation.kitti_config import *
  from torch_points3d.datasets.segmentation import IGNORE_LABEL
  from torch_points3d.metrics.segmentation_tracker import SegmentationTracker
label_desc: Use image node_id 8 for calling the SemanticKitti obj's underlying member method code with example usage: obj.process() without return types