text: # dataset settings
  dataset_type = 'KittiDataset'
  data_root = 'data/kitti/'
  class_names = ['Pedestrian', 'Cyclist', 'Car']
  point_cloud_range = [0, -40, -3, 70.4, 40, 1]
  input_modality = dict(use_lidar=True, use_camera=False)
  db_sampler = dict(
      data_root=data_root,
      info_path=data_root + 'kitti_dbinfos_train.pkl',
      rate=1.0,
      prepare=dict(
          filter_by_difficulty=[-1],
          filter_by_min_points=dict(Car=5, Pedestrian=10, Cyclist=10)),
      classes=class_names,
      sample_groups=dict(Car=12, Pedestrian=6, Cyclist=6))
  
  file_client_args = dict(backend='disk')
  # Uncomment the following if use ceph or other file clients.
  # See https://mmcv.readthedocs.io/en/latest/api.html#mmcv.fileio.FileClient
  # for more details.
  # file_client_args = dict(
  #     backend='petrel', path_mapping=dict(data='s3://kitti_data/'))
  
  train_pipeline = [
      dict(
          type='LoadPointsFromFile',
          coord_type='LIDAR',
          load_dim=4,
          use_dim=4,
          file_client_args=file_client_args),
      dict(
          type='LoadAnnotations3D',
          with_bbox_3d=True,
          with_label_3d=True,
          file_client_args=file_client_args),
      dict(type='ObjectSample', db_sampler=db_sampler),
      dict(
          type='ObjectNoise',
          num_try=100,
          translation_std=[1.0, 1.0, 0.5],
          global_rot_range=[0.0, 0.0],
          rot_range=[-0.78539816, 0.78539816]),
      dict(type='RandomFlip3D', flip_ratio_bev_horizontal=0.5),
      dict(
          type='GlobalRotScaleTrans',
          rot_range=[-0.78539816, 0.78539816],
          scale_ratio_range=[0.95, 1.05]),
      dict(type='PointsRangeFilter', point_cloud_range=point_cloud_range),
      dict(type='ObjectRangeFilter', point_cloud_range=point_cloud_range),
      dict(type='PointShuffle'),
      dict(type='DefaultFormatBundle3D', class_names=class_names),
      dict(type='Collect3D', keys=['points', 'gt_bboxes_3d', 'gt_labels_3d'])
  ]
  test_pipeline = [
      dict(
          type='LoadPointsFromFile',
          coord_type='LIDAR',
          load_dim=4,
          use_dim=4,
          file_client_args=file_client_args),
      dict(
          type='MultiScaleFlipAug3D',
          img_scale=(1333, 800),
          pts_scale_ratio=1,
          flip=False,
          transforms=[
              dict(
                  type='GlobalRotScaleTrans',
                  rot_range=[0, 0],
                  scale_ratio_range=[1., 1.],
                  translation_std=[0, 0, 0]),
              dict(type='RandomFlip3D'),
              dict(
                  type='PointsRangeFilter', point_cloud_range=point_cloud_range),
              dict(
                  type='DefaultFormatBundle3D',
                  class_names=class_names,
                  with_label=False),
              dict(type='Collect3D', keys=['points'])
          ])
  ]
  
  data = dict(
      samples_per_gpu=6,
      workers_per_gpu=4,
      train=dict(
          type='RepeatDataset',
          times=2,
          dataset=dict(
              type=dataset_type,
              data_root=data_root,
              ann_file=data_root + 'kitti_infos_train.pkl',
              split='training',
              pts_prefix='velodyne_reduced',
              pipeline=train_pipeline,
              modality=input_modality,
              classes=class_names,
              test_mode=False,
              # we use box_type_3d='LiDAR' in kitti and nuscenes dataset
              # and box_type_3d='Depth' in sunrgbd and scannet dataset.
              box_type_3d='LiDAR')),
      val=dict(
          type=dataset_type,
          data_root=data_root,
          ann_file=data_root + 'kitti_infos_val.pkl',
          split='training',
          pts_prefix='velodyne_reduced',
          pipeline=test_pipeline,
          modality=input_modality,
      classes=class_names,
          test_mode=True,
          box_type_3d='LiDAR'),
      test=dict(
          type=dataset_type,
          data_root=data_root,
          ann_file=data_root + 'kitti_infos_val.pkl',
          split='training',
          pts_prefix='velodyne_reduced',
          pipeline=test_pipeline,
          modality=input_modality,
          classes=class_names,
          test_mode=True,
          box_type_3d='LiDAR'))
  
  evaluation = dict(interval=1)
  