code: def from_folders(
      cls,
      train_folder: Optional[str] = None,
      val_folder: Optional[str] = None,
      test_folder: Optional[str] = None,
      predict_folder: Optional[str] = None,
      input_cls: Type[Input] = PointCloudSegmentationFoldersInput,
      transform: INPUT_TRANSFORM_TYPE = InputTransform,
      transform_kwargs: Optional[Dict] = None,
      **data_module_kwargs: Any,
  ) -> "PointCloudSegmentationData":
      ds_kw = {}
  
      return cls(
          input_cls(RunningStage.TRAINING, train_folder, **ds_kw),
          input_cls(RunningStage.VALIDATING, val_folder, **ds_kw),
          input_cls(RunningStage.TESTING, test_folder, **ds_kw),
          input_cls(RunningStage.PREDICTING, predict_folder, **ds_kw),
          transform=transform,
          transform_kwargs=transform_kwargs,
          **data_module_kwargs,
      )
  
file_path: lightning-flash/src/flash/pointcloud/segmentation/data.py
imports: from typing import Any, Dict, List, Optional, Type
  from torch.utils.data import Dataset
  from flash.core.data.data_module import DataModule
  from flash.core.data.io.input import Input
  from flash.core.data.io.input_transform import InputTransform
  from flash.core.utilities.stability import beta
  from flash.core.utilities.stages import RunningStage
  from flash.core.utilities.types import INPUT_TRANSFORM_TYPE
  from flash.pointcloud.segmentation.input import PointCloudSegmentationDatasetInput, PointCloudSegmentationFoldersInput
label_desc: Use image node_id 1 for calling the PointCloudSegmentationData obj's underlying member method code with example usage: obj.from_folders(cls, train_folder, val_folder, test_folder, predict_folder, input_cls, transform, transform_kwargs) and returns: cls