code: def __init__(
      self, model_config, model_type, dataset, modules, *args, **kwargs
  ):
      super(BasePointnet2, self).__init__(
          model_config, model_type, dataset, modules
      )
  
      try:
          default_output_nc = extract_output_nc(model_config)
      except:
          default_output_nc = -1
          log.warning("Could not resolve number of output channels")
  
      self._has_mlp_head = False
      self._output_nc = default_output_nc
      if "output_nc" in kwargs:
          self._has_mlp_head = True
          self._output_nc = kwargs["output_nc"]
          self.mlp = Seq()
          self.mlp.append(
              Conv1D(
                  default_output_nc,
                  self._output_nc,
                  bn=True,
                  bias=False,
              )
          )
  
imports: import os
  import sys
  from omegaconf import DictConfig, OmegaConf
  import logging
  from torch_points3d.applications.modelfactory import ModelFactory
  from torch_points3d.modules.pointnet2 import *
  from torch_points3d.core.base_conv.dense import DenseFPModule
  from torch_points3d.models.base_architectures.unet import UnwrappedUnetBasedModel
  from torch_points3d.datasets.multiscale_data import MultiScaleBatch
  from torch_points3d.core.common_modules.dense_modules import Conv1D
  from torch_points3d.core.common_modules.base_modules import Seq
  from .utils import extract_output_nc
label_desc: Use image node_id 1 to create a new BasePointnet2 object from inherited base classes: UnwrappedUnetBasedModel with example: obj = BasePointnet2(model_config, model_type, dataset, modules)