docstr: Compute clusters from positions and votes 
docstr_tok: ["Compute","clusters","from","positions","and","votes"]
code: def _cluster(self, semantic_logits, offset_logits):
      """Compute clusters from positions and votes"""
      predicted_labels = torch.max(semantic_logits, 1)[1]
      clusters_pos = region_grow(
          self.raw_pos,
          predicted_labels,
          self.input.batch.to(self.device),
          ignore_labels=self._stuff_classes.to(self.device),
          radius=self.opt.cluster_radius_search,
      )
      clusters_votes = region_grow(
          self.raw_pos + offset_logits,
          predicted_labels,
          self.input.batch.to(self.device),
          ignore_labels=self._stuff_classes.to(self.device),
          radius=self.opt.cluster_radius_search,
          nsample=200,
      )
  
      all_clusters = clusters_pos + clusters_votes
      all_clusters = [c.to(self.device) for c in all_clusters]
      cluster_type = torch.zeros(
          len(all_clusters), dtype=torch.uint8
      ).to(self.device)
      cluster_type[len(clusters_pos) :] = 1
      return all_clusters, cluster_type
  
imports: import torch
  import os
  from torch_points_kernels import region_grow
  from torch_geometric.data import Data
  from torch_scatter import scatter
  import random
  from torch_points3d.datasets.segmentation import IGNORE_LABEL
  from torch_points3d.models.base_model import BaseModel
  from torch_points3d.applications.minkowski import Minkowski
  from torch_points3d.core.common_modules import Seq, MLP, FastBatchNorm1d
  from torch_points3d.core.losses import offset_loss, instance_iou_loss
  from torch_points3d.core.data_transform import GridSampling3D
  from .structures import PanopticLabels, PanopticResults
  from torch_points3d.utils import is_list
label_desc: Use image node_id 4 for calling the PointGroup obj's underlying member method code with example usage: obj._cluster(semantic_logits, offset_logits) and returns: all_clusters,  cluster_type