[DS4.0.1][Jetson Nano] Facing issues with nvDCF tracker

Hi All,
Below is the config file and primary detector config of my custom deepstream app.

# Copyright (c) 2019 NVIDIA Corporation.  All rights reserved.
#
# NVIDIA Corporation and its licensors retain all intellectual property
# and proprietary rights in and to this software, related documentation
# and any modifications thereto.  Any use, reproduction, disclosure or
# distribution of this software and related documentation without an express
# license agreement from NVIDIA Corporation is strictly prohibited.

[application]
enable-perf-measurement=1
perf-measurement-interval-sec=5
#gie-kitti-output-dir=streamscl

[tiled-display]
enable=0
rows=1
columns=1
width=1920
height=1080
gpu-id=0
nvbuf-memory-type=0

[source0]
enable=1
#Type - 1=CameraV4L2 2=URI 3=MultiURI 4=RTSP
type=4
uri=rtsp://<>
num-sources=1
gpu-id=0
cudadec-memtype=0

[sink0]
enable=0
#Type - 1=FakeSink 2=EglSink 3=File
type=5
sync=0
source-id=0
gpu-id=0
qos=0
nvbuf-memory-type=0
overlay-id=1

[sink1]
enable=0
type=3
#1=mp4 2=mkv
container=1
#1=h264 2=h265
codec=1
sync=0
#iframeinterval=10
bitrate=2000000
output-file=out.mp4
source-id=0

[sink2]
enable=1
#Type - 1=FakeSink 2=EglSink 3=File 4=RTSPStreaming
type=4
#1=h264 2=h265
codec=1
sync=0
bitrate=4000000
# set below properties in case of RTSPStreaming
rtsp-port=8554
udp-port=5400

[osd]
enable=1
gpu-id=0
border-width=1
text-size=15
text-color=1;1;1;1;
text-bg-color=0.3;0.3;0.3;1
font=Serif
show-clock=0
clock-x-offset=800
clock-y-offset=820
clock-text-size=12
clock-color=1;0;0;0
nvbuf-memory-type=0

[streammux]
gpu-id=0
##Boolean property to inform muxer that sources are live
live-source=0
batch-size=4
##time out in usec, to wait after the first buffer is available
##to push the batch even if the complete batch is not formed
batched-push-timeout=40000
## Set muxer output width and height
width=1920
height=1080
##Enable to maintain aspect ratio wrt source, and allow black borders, works
##along with width, height properties
enable-padding=0
nvbuf-memory-type=0

# config-file property is mandatory for any gie section.
# Other properties are optional and if set will override the properties set in
# the infer config file.
[primary-gie]
enable=1
gpu-id=0
model-engine-file=<1>.engine
config-file=config_infer_primary_<1>.txt
batch-size=4
#Required by the app for OSD, not a plugin property
bbox-border-color0=1;0;0;1
bbox-border-color1=0;1;1;1
bbox-border-color2=0;0;1;1
bbox-border-color3=0;1;0;1
interval=0
gie-unique-id=1
nvbuf-memory-type=0

[tracker]
enable=1
#it should be in scale of input resolution 
tracker-width=480
tracker-height=270
enable-batch-proces = 1
#ll-lib-file=/opt/nvidia/deepstream/deepstream-4.0/lib/libnvds_mot_iou.so
#ll-lib-file=/opt/nvidia/deepstream/deepstream-4.0/lib/libnvds_mot_klt.so
ll-lib-file=/opt/nvidia/deepstream/deepstream-4.0/lib/libnvds_nvdcf.so
#ll-config-file required for IOU only
#ll-config-file=iou_config.txt
ll-config-file=tracker_config.yml
gpu-id=0

[tests]
file-loop=0
[property]
gpu-id=0
model-file=<>.caffemodel
proto-file=<>.prototxt
model-engine-file=<>.engine
batch-size=1
labelfile-path=labels.txt
## 0=FP32, 1=INT8, 2=FP16 mode
network-mode=2
num-detected-classes=1
interval=0
gie-unique-id=1
output-blob-names=<...>
output-tensor-meta=1
network-type=100

[class-attrs-all]
threshold=0.5
roi-top-offset=0
roi-bottom-offset=0
detected-min-w=0
detected-min-h=0
detected-max-w=0
detected-max-h=0

This is with primary detector, which works well with the KLT tracker. But I wish to use nvDCF tracker in place of KLT, but nothing comes up on the GUI when i use nvDCF, From logs, I am able to confirm that detection is there but they are not drawn when I use nvDCF tracker in place of KLT Tracker.

Note:- Default deeepstream-app is working with nvDCF. One difference is my application is working on raw tensor output.

Regards
Pallab Sarkar

Dear Pallab,

From page 23 of ‘DeepStream 4.0 Plugin Manual’:

“As part of this API, the plugin queries the low-level library for capabilities and requirements concerning input format and memory type. It then converts input buffers into the format requested by the low-level library. For example, the KLT tracker uses Luma-only format; NvDCF uses NV12 or RGBA; and IOU requires no buffer at all.”

You may want to check the following in your configs:
nvbuf-memory-type

Also given that NvDCF tracker works on the GPU, you may want to check (depending on whether you are using dGPU or Jetson):
gpu-id

Regards,
Srikrishna Nudurumati

Hi,

It’s on Jetson nano, so the only option for nvbuf-memory-type is 0 and for gpu-id is also 0.
Also to enable raw tensor output processing, I am adding a queue element between nvinfer and tracker element {nvinfer->queue->tracker}, This queue element is used to add probe{gst_pad_add_probe}. which is different from default deepstream-app !!!

Regards
Pallab Sarkar

The solution of this issue is posted at below link
https://devtalk.nvidia.com/default/topic/1067129/deepstream-sdk/-ds4-0-1-dcf-tracker-not-working-with-pgie-output-tensor-data-processed-result-/post/5411368/#5411368