class_docstr: CenterTrack network, see http://arxiv.org/abs/2004.01177
  
  Args:
      detector (object): 'CenterNet' instance
      plugin_head (object): 'CenterTrackHead' instance
      tracker (object): 'CenterTracker' instance
class_docstr_tok: ["CenterTrack","network",",","see","http",":","\/\/arxiv.org\/abs\/2004.01177","Args",":","detector","(","object",")",":","'CenterNet","'","instance","plugin_head","(","object",")",":","'CenterTrackHead","'","instance","tracker","(","object",")",":","'CenterTracker","'","instance"]
code: def _forward(self):
      if self.training:
          det_outs = self.detector(self.inputs)
          neck_feat = det_outs["neck_feat"]
  
          losses = {}
          for k, v in det_outs.items():
              if "loss" not in k:
                  continue
              losses.update({k: v})
  
          plugin_outs = self.plugin_head(neck_feat, self.inputs)
          for k, v in plugin_outs.items():
              if "loss" not in k:
                  continue
              losses.update({k: v})
  
          losses["loss"] = (
              det_outs["det_loss"] + plugin_outs["plugin_loss"]
          )
          return losses
  
      else:
          if not self.mot_metric:
              # detection, support bs>=1
              det_outs = self.detector(self.inputs)
              return {
                  "bbox": det_outs["bbox"],
                  "bbox_num": det_outs["bbox_num"],
              }
  
          else:
              # MOT, only support bs=1
              if not self.deploy:
                  if self.pre_image is None:
                      self.pre_image = self.inputs["image"]
                      # initializing tracker for the first frame
                      self.tracker.init_track([])
                  self.inputs["pre_image"] = self.pre_image
                  self.pre_image = self.inputs[
                      "image"
                  ]  # Note: update for next image
  
                  # render input heatmap from tracker status
                  pre_hm = self.get_additional_inputs(
                      self.tracker.tracks, self.inputs, with_hm=True
                  )
                  self.inputs["pre_hm"] = paddle.to_tensor(pre_hm)
  
              # model inference
              det_outs = self.detector(self.inputs)
              neck_feat = det_outs["neck_feat"]
              result = self.plugin_head(
                  neck_feat,
                  self.inputs,
                  det_outs["bbox"],
                  det_outs["bbox_inds"],
                  det_outs["topk_clses"],
                  det_outs["topk_ys"],
                  det_outs["topk_xs"],
              )
  
              if not self.deploy:
                  # convert the cropped and 4x downsampled output coordinate system
                  # back to the input image coordinate system
                  result = self.plugin_head.centertrack_post_process(
                      result, self.inputs, self.tracker.out_thresh
                  )
              return result
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import copy
  import math
  import numpy
  import paddle
  from ppdet.core.workspace import register, create
  from .meta_arch import BaseArch
  from ..keypoint_utils import affine_transform
  from ppdet.data.transform.op_helper import gaussian_radius, gaussian2D, draw_umich_gaussian
label_desc: Use image node_id 3 for calling the CenterTrack obj's underlying member method code with example usage: obj._forward() and returns: losses, dict, result