class_docstr: Class that provides tracking of semantic segmentation as well as
  instance segmentation 
class_docstr_tok: ["Class","that","provides","tracking","of","semantic","segmentation","as","well","as","instance","segmentation"]
docstr: Track metrics for panoptic segmentation
          
docstr_tok: ["Track","metrics","for","panoptic","segmentation"]
code: def track(
      self,
      model: TrackerInterface,
      data=None,
      iou_threshold=0.25,
      track_instances=True,
      min_cluster_points=10,
      **kwargs,
  ):
      """Track metrics for panoptic segmentation"""
      self._iou_threshold = iou_threshold
      BaseTracker.track(self, model)
      outputs: PanopticResults = model.get_output()
      labels: PanopticLabels = model.get_labels()
  
      # Track semantic
      super()._compute_metrics(outputs.semantic_logits, labels.y)
  
      if not data:
          return
      assert data.pos.dim() == 2, "Only supports packed batches"
  
      # Object accuracy
      clusters = PanopticTracker._extract_clusters(
          outputs, min_cluster_points
      )
      if not clusters:
          return
  
      predicted_labels = outputs.semantic_logits.max(1)[1]
      tp, fp, acc = self._compute_acc(
          clusters,
          predicted_labels,
          labels,
          data.batch,
          labels.num_instances,
          iou_threshold,
      )
      self._pos.add(tp)
      self._neg.add(fp)
      self._acc_meter.add(acc)
  
      # Track instances for AP
      if track_instances:
          pred_clusters = self._pred_instances_per_scan(
              clusters,
              predicted_labels,
              outputs.cluster_scores,
              data.batch,
              self._scan_id_offset,
          )
          gt_clusters = self._gt_instances_per_scan(
              labels.instance_labels,
              labels.y,
              data.batch,
              self._scan_id_offset,
          )
          self._ap_meter.add(pred_clusters, gt_clusters)
          self._scan_id_offset += data.batch[-1].item() + 1
  
imports: import torchnet
  from typing import NamedTuple, Dict, Any, List, Tuple
  import torch
  import numpy
  from torch_scatter import scatter_add
  from collections import OrderedDict, defaultdict
  from torch_points3d.models.model_interface import TrackerInterface
  from torch_points3d.metrics.segmentation_tracker import SegmentationTracker
  from torch_points3d.metrics.base_tracker import BaseTracker, meter_value
  from torch_points3d.models.panoptic.structures import PanopticResults, PanopticLabels
  from torch_points_kernels import instance_iou
  from .box_detection.ap import voc_ap
label_desc: Use image node_id 3 for calling the PanopticTracker obj's underlying member method code with example usage: obj.track(model, data, iou_threshold, track_instances, min_cluster_points) without return types