code: def forward(self, frame_id, frame, labels, bboxes, scores):
      from norfair import Detection
  
      norfair_detections = [
          Detection(
              points=get_centroid(bbox),
              scores=np.array([score]),
              label=hash(label) % 10**8,
              data=(label, bbox, score),
          )
          for (bbox, score, label) in zip(bboxes, scores, labels)
      ]
  
      # calculate jump between consecutive update calls
      period = (
          frame_id - self.prev_frame_id if self.prev_frame_id else 1
      )
      self.prev_frame_id = frame_id
  
      # call tracker
      tracked_objects = self.tracker.update(
          detections=norfair_detections, period=period
      )
      bboxes_xyxy = []
      labels = []
      scores = []
      ids = []
      for obj in tracked_objects:
          det = obj.last_detection.data
          labels.append(det[0])
          bboxes_xyxy.append(det[1])
          scores.append(det[2])
          ids.append(obj.id)
  
      return (
          np.array(ids),
          np.array(labels),
          np.array(bboxes_xyxy),
          np.array(scores),
      )
  
file_path: evadb/evadb/functions/trackers/nor_fair.py
imports: import numpy
  from evadb.functions.abstract.tracker_abstract_function import EvaDBTrackerAbstractFunction
  from evadb.utils.generic_utils import try_to_import_norfair
  from evadb.utils.math_utils import get_centroid
label_desc: Use image node_id 3 for calling the NorFairTracker obj's underlying member method code with example usage: obj.forward(frame_id, frame, labels, bboxes, scores) and returns: np,  np,  np,  np