class_docstr: Transform for running a PointNet inference on a Data object. It assumes that the
  model has been trained for segmentation.
  
  Parameters
  ----------
  checkpoint_dir: str
      Path to a checkpoint directory
  model_name: str
      Model name, the file ``checkpoint_dir/model_name.pt`` must exist
  weight_name: str
      Type of weights to load (best for iou, best for loss etc...)
  feat_name: str
      Name of the key in Data that will hold the output of the forward
  num_classes: int
      Number of classes that the model was trained on
code: def __init__(
      self,
      checkpoint_dir,
      model_name,
      weight_name,
      feat_name,
      num_classes,
      mock_dataset=True,
  ):
      super(PointNetForward, self).__init__(
          checkpoint_dir,
          model_name,
          weight_name,
          feat_name,
          num_classes=num_classes,
          mock_dataset=mock_dataset,
      )
      self.feat_name = feat_name
  
      from torch_points3d.datasets.base_dataset import BaseDataset
      from torch_geometric.transforms import FixedPoints, GridSampling3D
  
      self.inference_transform = BaseDataset.remove_transform(
          self.inference_transform, [GridSampling3D, FixedPoints]
      )
  
file_path: torch-points3d/torch_points3d/core/data_transform/inference_transforms.py
imports: import os
  import sys
  import logging
label_desc: Use image node_id 1 to create a new PointNetForward object from inherited base classes: ModelInference with example: obj = PointNetForward(checkpoint_dir, model_name, weight_name, feat_name, num_classes, mock_dataset)