class_docstr: Implementation of the SMOT tracker
  The steps to use the tracker is:
  0. Set anchors from the SSD
  1. First call tracker.predict(new_frame)
  2. Then get the tracking anchor information
  3. Run the detractor with the tracking anchor information
  4. Run tracker.update(new_detection, track_info).
class_docstr_tok: ["Implementation","of","the","SMOT","tracker","The","steps","to","use","the","tracker","is",":","0",".","Set","anchors","from","the","SSD","1",".","First","call","tracker.predict","(","new_frame",")","2",".","Then","get","the","tracking","anchor","information","3",".","Run","the","detractor","with","the","tracking","anchor","information","4",".","Run","tracker.update","(","new_detection",",","track_info",")","."]
docstr: Perform motion estimation of a set bounding boxes.
  Use either optical flow or SOT algorithms to predict the locations of these bounding boxes in the new frame
  Parameters
  ----------
  new_frame
  tracked_boxes
  tracked_boxes_anchor_indices
  tracked_boxes_anchor_weights
  skip
  
  Returns
  -------
docstr_tok: ["Perform","motion","estimation","of","a","set","bounding","boxes",".","Use","either","optical","flow","or","SOT","algorithms","to","predict","the","locations","of","these","bounding","boxes","in","the","new","frame","Parameters","--","--","--","--","--","new_frame","tracked_boxes","tracked_boxes_anchor_indices","tracked_boxes_anchor_weights","skip","Returns","--","--","--","-"]
code: def _motion_prediction(
      self,
      new_frame,
      tracked_boxes,
      tracked_boxes_anchor_indices,
      tracked_boxes_anchor_weights,
      motion_pred_data,
      skip=False,
  ):
      """
      Perform motion estimation of a set bounding boxes.
      Use either optical flow or SOT algorithms to predict the locations of these bounding boxes in the new frame
      Parameters
      ----------
      new_frame
      tracked_boxes
      tracked_boxes_anchor_indices
      tracked_boxes_anchor_weights
      skip
  
      Returns
      -------
  
      """
      if self.frame_cache is None:
          # this is the first frame
          self.frame_cache = self.motion_estimator.initialize(
              new_frame, motion_pred_data
          )
          predicted_bboxes = tracked_boxes
      else:
          # this is not the first frame
          (
              predicted_bboxes,
              self.frame_cache,
          ) = self.motion_estimator.predict_new_locations(
              self.frame_cache,
              tracked_boxes,
              new_frame,
              motion_pred_data,
              tracked_boxes_anchor_indices=tracked_boxes_anchor_indices,
              tracked_boxes_anchor_weights=tracked_boxes_anchor_weights,
              skip=skip,
          )
  
      return predicted_bboxes
  
imports: from __future__ import absolute_import
  import logging
  import time
  import numpy
  import mxnet
  from gluoncv.utils.bbox import bbox_iou
  from gluoncv.data import COCODetection
  from .utils import timeit, Track
  from .motion_estimation import FarneBeckFlowMotionEstimator
  from .motion_estimation import DummyMotionEstimator
label_desc: Use image node_id 7 for calling the SMOTTracker obj's underlying member method code with example usage: obj._motion_prediction(new_frame, tracked_boxes, tracked_boxes_anchor_indices, tracked_boxes_anchor_weights, motion_pred_data, skip) and returns: predicted_bboxes