docstr: Initialize this model class.
  Parameters:
      opt -- training/test options
  A few things can be done here.
  - (required) call the initialization function of BaseModel
  - define loss function, visualization images, model names, and optimizers
code: def __init__(self, option, model_type, dataset, modules):
      """Initialize this model class.
      Parameters:
          opt -- training/test options
      A few things can be done here.
      - (required) call the initialization function of BaseModel
      - define loss function, visualization images, model names, and optimizers
      """
      UnetBasedModel.__init__(
          self, option, model_type, dataset, modules
      )  # call the initialization method of UnetBasedModel
  
      self._weight_classes = dataset.weight_classes
  
      nn = option.mlp_cls.nn
      self.dropout = option.mlp_cls.get("dropout")
      self.lin1 = torch.nn.Linear(nn[0], nn[1])
      self.lin2 = torch.nn.Linear(nn[2], nn[3])
      self.lin3 = torch.nn.Linear(nn[4], dataset.num_classes)
  
      self.loss_names = ["loss_seg"]
  
      self.visual_names = ["data_visual"]
  
file_path: torch-points3d/torch_points3d/models/segmentation/base.py
imports: import logging
  import torch
  import torch.nn.functional
  from typing import Any
  from torch_points3d.models.base_architectures import UnetBasedModel
  from torch_points3d.datasets.segmentation import IGNORE_LABEL
label_desc: Use image node_id 1 to create a new Segmentation_MP object from inherited base classes: UnetBasedModel with example: obj = Segmentation_MP(option, model_type, dataset, modules)