docstr: Returns index of clusters that pass nms test, min size test and score test
          
code: def get_instances(
      self, nms_threshold=0.3, min_cluster_points=100, min_score=0.2
  ) -> List:
      """Returns index of clusters that pass nms test, min size test and score test"""
      if not self.clusters:
          return []
  
      n_prop = len(self.clusters)
      proposal_masks = torch.zeros(
          n_prop, self.semantic_logits.shape[0]
      )
      for i, cluster in enumerate(self.clusters):
          proposal_masks[i, cluster] = 1
  
      intersection = torch.mm(
          proposal_masks, proposal_masks.t()
      )  # (nProposal, nProposal), float, cuda
      proposals_pointnum = proposal_masks.sum(
          1
      )  # (nProposal), float, cuda
      proposals_pn_h = proposals_pointnum.unsqueeze(-1).repeat(
          1, proposals_pointnum.shape[0]
      )
      proposals_pn_v = proposals_pointnum.unsqueeze(0).repeat(
          proposals_pointnum.shape[0], 1
      )
      cross_ious = intersection / (
          proposals_pn_h + proposals_pn_v - intersection
      )
      pick_idxs = non_max_suppression(
          cross_ious.cpu().numpy(),
          self.cluster_scores.cpu().numpy(),
          nms_threshold,
      )
  
      valid_pick_ids = []
      for i in pick_idxs:
          cl = self.clusters
          if (
              len(cl) > min_cluster_points
              and self.cluster_scores[i] > min_score
          ):
              valid_pick_ids.append(i)
      return valid_pick_ids
  
file_path: torch-points3d/torch_points3d/models/panoptic/structures.py
imports: import torch
  import numpy
  from typing import NamedTuple, List
label_desc: Use image node_id 1 for calling the PanopticResults obj's underlying member method code with example usage: obj.get_instances(nms_threshold, min_cluster_points, min_score) and returns: valid_pick_ids, list