| 
					
				 | 
			
			
				@@ -14,93 +14,93 @@ class BaseModel(ABC, torch.nn.Module): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.trainer = None 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    def train(self, cfg): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def train_by_cfg(self, cfg): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    def get_loss(self, Loss, results, inputs, device): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        """Computes the loss given the network input and outputs. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Loss: A loss object. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            results: This is the output of the model. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            inputs: This is the input to the model. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            device: The torch device to be used. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Returns the loss value. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    def get_optimizer(self, cfg_pipeline): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        """Returns an optimizer object for the model. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            cfg_pipeline: A Config object with the configuration of the pipeline. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Returns a new optimizer object. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    def preprocess(self, cfg_pipeline): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        """Data preprocessing function. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        This function is called before training to preprocess the data from a 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        dataset. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            data: A sample from the dataset. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            attr: The corresponding attributes. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Returns the preprocessed data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    def transform(self, cfg_pipeline): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        """Transform function for the point cloud and features. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            cfg_pipeline: config file for pipeline. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    def inference_begin(self, data): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        """Function called right before running inference. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            data: A data from the dataset. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    def inference_preprocess(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        """This function prepares the inputs for the model. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            The inputs to be consumed by the call() function of the model. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    def inference_end(self, inputs, results): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        """This function is called after the inference. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        This function can be implemented to apply post-processing on the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        network outputs. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            results: The model outputs as returned by the call() function. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Post-processing is applied on this object. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Returns True if the inference is complete and otherwise False. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Returning False can be used to implement inference for large point 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            clouds which require multiple passes. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # @abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # def get_loss(self, Loss, results, inputs, device): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     """Computes the loss given the network input and outputs. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         Loss: A loss object. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         results: This is the output of the model. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         inputs: This is the input to the model. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         device: The torch device to be used. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         Returns the loss value. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # @abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # def get_optimizer(self, cfg_pipeline): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     """Returns an optimizer object for the model. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         cfg_pipeline: A Config object with the configuration of the pipeline. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         Returns a new optimizer object. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # @abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # def preprocess(self, cfg_pipeline): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     """Data preprocessing function. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     This function is called before training to preprocess the data from a 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     dataset. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         data: A sample from the dataset. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         attr: The corresponding attributes. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         Returns the preprocessed data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # # 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # # @abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # # def transform(self, cfg_pipeline): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # #     """Transform function for the point cloud and features. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # # 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # #     Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # #         cfg_pipeline: config file for pipeline. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # #     """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # #     return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # @abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # def inference_begin(self, data): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     """Function called right before running inference. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         data: A data from the dataset. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # @abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # def inference_preprocess(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     """This function prepares the inputs for the model. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         The inputs to be consumed by the call() function of the model. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # @abstractmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # def inference_end(self, inputs, results): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     """This function is called after the inference. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     This function can be implemented to apply post-processing on the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     network outputs. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     Args: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         results: The model outputs as returned by the call() function. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #             Post-processing is applied on this object. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     Returns: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         Returns True if the inference is complete and otherwise False. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         Returning False can be used to implement inference for large point 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         clouds which require multiple passes. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     return 
			 |