code: def __init__(
      self, model_config, model_type, dataset, modules, *args, **kwargs
  ):
      super(BaseKPConv, 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._output_nc = default_output_nc
      self._has_mlp_head = False
      if "output_nc" in kwargs:
          self._has_mlp_head = True
          self._output_nc = kwargs["output_nc"]
          self.mlp = MLP(
              [default_output_nc, self.output_nc],
              activation=torch.nn.LeakyReLU(0.2),
              bias=False,
          )
  
imports: import os
  from omegaconf import DictConfig, OmegaConf
  import logging
  from torch_points3d.applications.modelfactory import ModelFactory
  from torch_points3d.core.common_modules import FastBatchNorm1d
  from torch_points3d.modules.KPConv import *
  from torch_points3d.core.base_conv.partial_dense import *
  from torch_points3d.models.base_architectures.unet import UnwrappedUnetBasedModel
  from torch_points3d.datasets.multiscale_data import MultiScaleBatch
  from torch_points3d.core.common_modules.base_modules import MLP
  from .utils import extract_output_nc
label_desc: Use image node_id 1 to create a new BaseKPConv object from inherited base classes: UnwrappedUnetBasedModel with example: obj = BaseKPConv(model_config, model_type, dataset, modules)