class_docstr: create a backbone-based generator:
  This is simply an encoder
  (can be used in classification, regression, metric learning and so one)
docstr: Construct a backbone generator (It is a simple down module)
  Parameters:
      opt - options for the network generation
      model_type - type of the model to be generated
      modules_lib - all modules that can be used in the backbone
  
  
  opt is expected to contains the following keys:
  * down_conv
docstr_tok: ["Construct","a","backbone","generator","(","It","is","a","simple","down","module",")","Parameters",":","opt","-","options","for","the","network","generation","model_type","-","type","of","the","model","to","be","generated","modules_lib","-","all","modules","that","can","be","used","in","the","backbone","opt","is","expected","to","contains","the","following","keys",":","*","down_conv"]
code: def __init__(
      self, opt, model_type, dataset: BaseDataset, modules_lib
  ):
      """Construct a backbone generator (It is a simple down module)
      Parameters:
          opt - options for the network generation
          model_type - type of the model to be generated
          modules_lib - all modules that can be used in the backbone
  
  
      opt is expected to contains the following keys:
      * down_conv
      """
  
      super(BackboneBasedModel, self).__init__(opt)
      self._spatial_ops_dict = {"neighbour_finder": [], "sampler": []}
  
      # detect which options format has been used to define the model
      if is_list(opt.down_conv) or "down_conv_nn" not in opt.down_conv:
          raise NotImplementedError
      else:
          self._init_from_compact_format(
              opt, model_type, dataset, modules_lib
          )
  
imports: from torch import nn
  from torch_geometric.nn import global_max_pool, global_mean_pool, fps, radius, knn_interpolate
  from torch.nn import Linear, ReLU, LeakyReLU, BatchNorm1d, Dropout
  from omegaconf.listconfig import ListConfig
  from omegaconf.dictconfig import DictConfig
  import logging
  from torch_points3d.datasets.base_dataset import BaseDataset
  from torch_points3d.models.base_model import BaseModel
  from torch_points3d.models.base_architectures import BaseFactory
  from torch_points3d.core.common_modules.base_modules import Identity
  from torch_points3d.core.losses import instantiate_loss_or_miner
  from torch_points3d.utils.config import is_list
label_desc: Use image node_id 2 to create a new BackboneBasedModel object from inherited base classes: BaseModel with example: obj = BackboneBasedModel(opt, model_type, dataset, modules_lib)