%YAML:1.0
################################################################################
# Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
################################################################################

BaseConfig:
  minDetectorConfidence: 0.7 # If the confidence of a detector bbox is lower than this, then it won't be considered for tracking

TargetManagement:
  maxTargetsPerStream: 150  # Max number of targets to track per stream. Recommended to set >10. Note: this value should account for the targets being tracked in shadow mode as well. Max value depends on the GPU memory capacity

  # [Creation & Termination Policy]
  minIouDiff4NewTarget: 0.5   # If the IOU between the newly detected object and any of the existing targets is higher than this threshold, this newly detected object will be discarded.
  minTrackerConfidence: 0.0   # If the confidence of an object tracker is lower than this on the fly, then it will be tracked in shadow mode. Valid Range: [0.0, 1.0]
  probationAge: 5 # If the target's age exceeds this, the target will be considered to be valid.
  maxShadowTrackingAge: 500   # Max length of shadow tracking. If the shadowTrackingAge exceeds this limit, the tracker will be terminated.
  earlyTerminationAge: 100   # If the shadowTrackingAge reaches this threshold while in TENTATIVE period, the the target will be terminated prematurely.
  

TrajectoryManagement:
  useUniqueID: 0   # Use 64-bit long Unique ID when assignining tracker ID.


DataAssociator:
  dataAssociatorType: 0 # the type of data associator among { DEFAULT= 0 } 
  # Data Associator has no meaning/explanation provided
  associationMatcherType: 1 # the type of matching algorithm among { GREEDY=0, GLOBAL=1 }
  # 1 - Hungarian Alogrithm
  checkClassMatch: 1  # If checked, only the same-class objects are associated with each other. Default: true

  # Thresholds in matching scores to be considered as a valid candidate for matching
  minMatchingScore4Overall: 0.8  # Min total score
  minMatchingScore4SizeSimilarity: 0.6  # Min bbox size similarity score
  minMatchingScore4Iou: 0.5       # Min IOU score
  thresholdMahalanobis: 9.4877    # Max Mahalanobis distance based on Chi-square probabilities

  

StateEstimator:
  stateEstimatorType: 2  # the type of state estimator among { DUMMY=0, SIMPLE=1, REGULAR=2 }

  # [Dynamics Modeling]
  noiseWeightVar4Loc: 0.05  # weight of process and measurement noise for bbox center; if set, location noise will be proportional to box height
  noiseWeightVar4Vel: 0.00625  # weight of process and measurement noise for velocity; if set, velocity noise will be proportional to box height
  useAspectRatio: 1 # use aspect ratio in Kalman filter's observation

ReID:
  reidType: 1 # the type of reid among { DUMMY=0, DEEP=1 }
  batchSize: 8 # batch size of reid network
  workspaceSize: 2048 # workspace size to be used by reid engine, in MB
  reidFeatureSize: 512 # size of reid feature
  reidHistorySize: 100 # max number of reid features kept for one object
  inferDims: [3,256,128] # reid network input dimension CHW or HWC based on inputOrder
  inputOrder: 0 # reid network input order among { NCHW=0, NHWC=1 }
  colorFormat: 0 # reid network input color format among {RGB=0, BGR=1 }
  networkMode: 0 # reid network inference precision mode among {fp32=0, fp16=1, int8=2 }
  offsets: [123.675, 116.28, 103.53] #[103.53, 116.28,123.675] #  # array of values to be subtracted from each input channel, with length equal to number of channels
  netScaleFactor: 0.01735207357279195 # # scaling factor for reid network input after substracting offsets
  inputBlobName: "input" # reid network input layer name
  outputBlobName: "output" # reid network output layer name
  modelEngineFile: "/opt/nvidia/deepstream/deepstream-6.1/sources/deepstream_python_apps/apps/single_camera_tracking_osnet/Osnet/msmt17.engine" # engine file path
  keepAspc: 0 # whether to keep aspc ratio when resizing input objects for reid
