Deepstream Tracker FAQ

Tracker FAQ

This topic is a conclusion for Tracker related problems, following problems is a summary from DS 4.0 to latest DS version(5.0.1).

Standalone tracker sample:

We don’t have an official standalone sample, refer forum topic KLT NvMOT usage

NvDCF tracker:

We suggest to use latest DS version since we had fixed many tracker related issues to make the tracker more stable and robustness on latest DS version.

  1. Show 64-bit long Unique ID

    1. Set useUniqueID: 1 in tracker config
  2. Make tracker ID continues and reset ID

    1. Currently we don’t support the feature and user can do it by installing a probe and implementing it
    2. Related topic Track id not continuous
  3. Assign tracker ID per stream

    1. Disable batch processing mode
    2. Related topic Dcf tracker use same tracker to increase objectID in mutil stream
  4. Shadow tracking

    1. a per-object tracker is in inactive mode is called the shadow tracking, refer tracker plugin manual for more details Gst-nvtracker — DeepStream 6.1.1 Release documentation
    2. Related topics Tracking info
  5. Track per class ID

    1. Use the per-class configuration in PGIE config and set threshold to be an infeasible high number like 100
    2. Related topics Track on the specified class-id - #5
  6. Frequent ID switch w/o nearby objects

    1. Refer NvDCF tuning Doc for more details Troubleshooting — DeepStream 6.1.1 Release documentation
    2. Related topics NVDCF Tracking Parameters Detailed Info
  7. Ghost bbox

    1. Refer NvDCF tuning Doc for more details Troubleshooting — DeepStream 6.1.1 Release documentation
    2. How to smooth the bbox detections with the DCF tracking in DS5.0 GA? - #20 by jasonpgf2a
  8. Tracker update frequency(related to motion dynamic)

    1. Try to tune the Moving-Average Estimator or Kalman Filter (based on the value of stateEstimatorType in your config)
    2. Related topics NvDCF tracker update frequency
2 Likes

Custom low level tracker lib sample:
There is a simple demo created by DS customer, refer Custom Tracker Segmentation Fault

2 Likes

3. [DS6.2_ALL_nvtracker] Setup Re-ID model issue

User will meet below issue when follow steps in sources/tracker_NvDeepSORT/README to setup the Re-ID model.

  =========================================================
  The "tensorflow-gpu" package has been removed!
  
  Please install "tensorflow" instead.
  
  Other than the name, the two packages have been identical
  since TensorFlow 2.1, or roughly since Sep 2019. For more
  information, see: pypi.org/project/tensorflow-gpu
  =========================================================

The root cause is tensorflow-gpu has been removed, so the command need to chang into

pip3 install tensorflow==2.11.0 PyYAML

Related topic: Setup Re-ID model issue

4. [DS7.0_ALL_nvtracker] The definition of NVDS_TRACKER_OBJ_REID_META changed between DS 6.x and DS 7.0

On DS 6.x:
NVDS_TRACKER_OBJ_REID_META includes one index. Application can get the ReID vector in NVDS_TRACKER_BATCH_REID_META with the index.

gint reidInd = *((int32_t *) (user_meta->user_meta_data));

On DS 7.0:
NVDS_TRACKER_OBJ_REID_META includes NvDsObjReid structure. Application can get the ReID vector in NvDsObjReid directly.

NvDsObjReid *pReidObj = (NvDsObjReid *) (user_meta->user_meta_data);

/**
  * @brief Holds Reid Vector information for an object
  */
typedef struct _NvDsObjReid
{
    /** ReID vector length. */
    uint32_t featureSize;
    /** ReID vector pointer on CPU. */
    float* ptr_host;
    /** ReID vector pointer on GPU. */
    float* ptr_dev;
} NvDsObjReid;

Please check details with the source code in: /opt/nvidia/deepstream/deepstream-<DS_VERSION>/sources/apps/sample_apps/deepstream-app/deepstream_app.c

Related topic: Undocumented breaking change... Did NVDS_TRACKER_OBJ_REID_META change in DS 7?