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: Parameters
  ----------
  anchor_array
  use_motion
  match_top_k
  track_keep_alive_thresh
  new_track_iou_thresh
  track_nms_thresh
  gpu_id
  anchor_assignment
  joint_linking
docstr_tok: ["Parameters","--","--","--","--","--","anchor_array","use_motion","match_top_k","track_keep_alive_thresh","new_track_iou_thresh","track_nms_thresh","gpu_id","anchor_assignment","joint_linking"]
code: def __init__(
      self,
      motion_model="no",
      anchor_array=None,
      use_motion=True,
      tracking_classes=[],
      match_top_k=10,
      track_keep_alive_thresh=0.1,
      new_track_iou_thresh=0.3,
      track_nms_thresh=0.5,
      gpu_id=0,
      anchor_assignment_method="iou",
      joint_linking=False,
      tracktor=None,
  ):
      """
  
      Parameters
      ----------
      anchor_array
      use_motion
      match_top_k
      track_keep_alive_thresh
      new_track_iou_thresh
      track_nms_thresh
      gpu_id
      anchor_assignment
      joint_linking
      """
      self.use_motion = use_motion
      self.tracks = []
      self.all_track_id = 0
      self.pending_index = []
      self.conf_score_thresh = 0.1
      self.anchor_array = anchor_array
      self.next_frame_pred_index = []
      self.next_frame_pred_weights = []
      self.next_frame_pred_bbox = []
      self.waiting_update_tracks = []
      self.next_frame_ref_bbox = []
      self.last_frame = None
      self.k = match_top_k
      self.keep_alive = track_keep_alive_thresh
      self.new_track_iou_thresh = new_track_iou_thresh
      self.track_nms_thresh = track_nms_thresh
      self.frame_cache = None
      self.mx_ctx = mx.gpu(gpu_id)
      self.anchor_assignment_method = anchor_assignment_method
      self.joint_linking = joint_linking
  
      if len(tracking_classes) == 0:
          raise ValueError(
              "Unknown tracking classes, please let us know what object you want to track"
          )
      self.coco_class_set = set(COCODetection.CLASSES)
      self.coco_class2index_dict = {
          i: name for i, name in enumerate(COCODetection.CLASSES)
      }
      self.class_set = set(tracking_classes)
      for class_name in tracking_classes:
          if class_name not in self.coco_class_set:
              raise ValueError(
                  "Your cunstom class {} is not supported, only COCO classes are currently supported,\
                   the classes are {}".format(
                      class_name, COCODetection.CLASSES
                  )
              )
  
      if motion_model == "farneback":
          self.motion_estimator = FarneBeckFlowMotionEstimator()
      elif motion_model == "no":
          self.motion_estimator = DummyMotionEstimator()
      else:
          raise ValueError(
              "Unknown motion model: {}".format(motion_model)
          )
  
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 1 to create a new SMOTTracker object  with example: obj = SMOTTracker(motion_model, anchor_array, use_motion, tracking_classes, match_top_k, track_keep_alive_thresh, new_track_iou_thresh, track_nms_thresh, gpu_id, anchor_assignment_method, joint_linking, tracktor)