Unable to draw bounding boxes in deepstream using a multi-task classifier model

Please provide complete information as applicable to your setup.

**• Hardware Platform (Jetson / GPU) Jetson Orin
**• DeepStream Version 6.1.1
**• JetPack Version (valid for Jetson only) 5.0.2
**• TensorRT Version 8.4.1
**• Issue Type( questions, new requirements, bugs) Question

I am trying to get a multi-task classifier set up in deepstream 6.1.1 and i am following the instructions located at the following link:

the last step in the process states:

Create label mapping and set in nvdsinfer_customclassifier_multi_task_tao.cpp

I cannot find where this file would be located. It does not appear to be located in either deepstream nor deepstream_tao_apps, but I may be missing something obvious.

As it stands, running a test configuration will crash as soon as the first instance where the multi-task classification is used.

test configuration:

main config:

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

[tiled-display]
enable=0
rows=1
columns=1
width=1280
height=720
gpu-id=0
#(0): nvbuf-mem-default - Default memory allocated, specific to particular platform
#(1): nvbuf-mem-cuda-pinned - Allocate Pinned/Host cuda memory applicable for Tesla
#(2): nvbuf-mem-cuda-device - Allocate Device cuda memory applicable for Tesla
#(3): nvbuf-mem-cuda-unified - Allocate Unified cuda memory applicable for Tesla
#(4): nvbuf-mem-surface-array - Allocate Surface Array memory, applicable for Jetson
nvbuf-memory-type=0

[source0]
enable=1
#Type - 1=CameraV4L2 2=URI 3=MultiURI 4=RTSP
type=3
uri=file:/home/nvidia/Videos/example.mp4
num-sources=1
#drop-frame-interval=2
gpu-id=0
# (0): memtype_device   - Memory type Device
# (1): memtype_pinned   - Memory type Host Pinned
# (2): memtype_unified  - Memory type Unified
cudadec-memtype=0

[sink0]
enable=1
#Type - 1=FakeSink 2=EglSink 3=File 7=nv3dsink (Jetson only)
type=2
sync=1
source-id=0
gpu-id=0
nvbuf-memory-type=0

[sink1]
enable=0
type=3
#1=mp4 2=mkv
container=1
#1=h264 2=h265
codec=1
#encoder type 0=Hardware 1=Software
enc-type=0
sync=0
#iframeinterval=10
bitrate=2000000
#H264 Profile - 0=Baseline 2=Main 4=High
#H265 Profile - 0=Main 1=Main10
profile=0
output-file=out.mp4
source-id=0

[sink2]
enable=0
#Type - 1=FakeSink 2=EglSink 3=File 4=RTSPStreaming
type=4
#1=h264 2=h265
codec=1
#encoder type 0=Hardware 1=Software
enc-type=0
sync=0
bitrate=4000000
#H264 Profile - 0=Baseline 2=Main 4=High
#H265 Profile - 0=Main 1=Main10
profile=0
# 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
buffer-pool-size=1
batch-size=1
##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=1280
height=720
##Enable to maintain aspect ratio wrt source, and allow black borders, works
##along with width, height properties
enable-padding=0
nvbuf-memory-type=0
## If set to TRUE, system timestamp will be attached as ntp timestamp
## If set to FALSE, ntp timestamp from rtspsrc, if available, will be attached
# attach-sys-ts-as-ntp=1

# 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=/home/nvidia/engines/PrimaryObjectDetect/yolov4_resnet18_epoch_004.etlt_b1_gpu0_fp32.engine
batch-size=1
#Required by the app for OSD, not a plugin property
bbox-border-color0=1;0;0;1
interval=0
gie-unique-id=1
nvbuf-memory-type=0
config-file=config_infer_primary.txt

[secondary-gie0]
enable=1
model-engine-file=/home/nvidia/engines/PeopleMultitask/mcls_export.etlt_b1_gpu0_fp32.engine
gpu-id=0
batch-size=1
gie-unique-id=2
operate-on-gie-id=1
operate-on-class-ids=3;
config-file=config_infer_secondary_MT_people.txt

[tests]
file-loop=0

Primary object detection config:

[property]
gpu-id=0
net-scale-factor=1
offsets=103.939;116.779;123.68
model-color-format=1
output-tensor-meta=0

labelfile-path=/home/nvidia/engines/PrimaryObjectDetect/labels.txt
model-engine-file=/home/nvidia/engines/PrimaryObjectDetect/yolov4_resnet18_epoch_004.etlt_b1_gpu0_fp32.engine
tlt-encoded-model=/home/nvidia/engines/PrimaryObjectDetect/yolov4_resnet18_epoch_004.etlt
tlt-model-key=nvidia_tlt
infer-dims=3;736;1280


maintain-aspect-ratio=0
uff-input-order=0
uff-input-blob-name=Input
#is-classifier=0


batch-size=1
process-mode=1
#model-color-format=0
## 0=FP32, 1=INT8, 2=FP16 mode
network-mode=0
num-detected-classes=7
interval=0
gie-unique-id=1

network-type=0


cluster-mode=3
output-blob-names=BatchedNMS
force-implicit-batch-dim=1
parse-bbox-func-name=NvDsInferParseCustomBatchedNMSTLT
custom-lib-path=/home/nvidia/deepstream-tao-apps/post_processor/libnvds_infercustomparser_tao.so
## 1=DBSCAN, 2=NMS, 3= DBSCAN+NMS Hybrid, 4 = None(No clustering)

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

Multi-task Classifier secondary config:

[property]
gpu-id=0
net-scale-factor=1.0
offsets=103.939;116.779;123.68
model-color-format=1
labelfile-path=/home/nvidia/engines/PeopleMultitask/labels.txt
tlt-encoded-model=/home/nvidia/engines/PeopleMultitask/mcls_export.etlt
tlt-model-key=nvidia_tlt
model-engine-file=/home/nvidia/engines/PeopleMultitask/mcls_export.etlt_b1_gpu0_fp32.engine
infer-dims=3;80;60
uff-input-blob-name=input_1
batch-size=1
## 0=FP32, 1=INT8, 2=FP16 mode
network-mode=0
interval=0
gie-unique-id=1
network-type=0
scaling-filter=1
scaling-compute-hw=1
output-blob-names=action/Softmax;object/Softmax;pose/Softmax
uff-input-blob-name=input_1
classifier-threshold=0.5
maintain-aspect-ratio=0
output-tensor-meta=0

log of the run:

$ deepstream-app -c testconfig.txt

Using winsys: x11 
0:00:00.106779776  8135 0xaaaaca778490 WARN                 nvinfer gstnvinfer.cpp:643:gst_nvinfer_logger:<secondary_gie_0> NvDsInferContext[UID 2]: Warning from NvDsInferContextImpl::initialize() <nvdsinfer_context_impl.cpp:1170> [UID = 2]: Warning, OpenCV has been deprecated. Using NMS for clustering instead of cv::groupRectangles with topK = 20 and NMS Threshold = 0.5
0:00:03.629342560  8135 0xaaaaca778490 INFO                 nvinfer gstnvinfer.cpp:646:gst_nvinfer_logger:<secondary_gie_0> NvDsInferContext[UID 2]: Info from NvDsInferContextImpl::deserializeEngineAndBackend() <nvdsinfer_context_impl.cpp:1909> [UID = 2]: deserialized trt engine from :/home/nvidia/engines/PeopleMultitask/mcls_export.etlt_b1_gpu0_fp32.engine
INFO: [Implicit Engine Info]: layers num: 4
0   INPUT  kFLOAT input_1         3x80x60         
1   OUTPUT kFLOAT pose/Softmax    5x1x1           
2   OUTPUT kFLOAT object/Softmax  2x1x1           
3   OUTPUT kFLOAT action/Softmax  6x1x1           

0:00:03.790128416  8135 0xaaaaca778490 INFO                 nvinfer gstnvinfer.cpp:646:gst_nvinfer_logger:<secondary_gie_0> NvDsInferContext[UID 2]: Info from NvDsInferContextImpl::generateBackendContext() <nvdsinfer_context_impl.cpp:2012> [UID = 2]: Use deserialized engine model: /home/nvidia/engines/PeopleMultitask/mcls_export.etlt_b1_gpu0_fp32.engine
0:00:03.797837152  8135 0xaaaaca778490 INFO                 nvinfer gstnvinfer_impl.cpp:328:notifyLoadModelStatus:<secondary_gie_0> [UID 2]: Load new model:/home/nvidia/deepstream-app/multitask/config_infer_secondary_MT_people.txt sucessfully
0:00:05.777702272  8135 0xaaaaca778490 INFO                 nvinfer gstnvinfer.cpp:646:gst_nvinfer_logger:<primary_gie> NvDsInferContext[UID 1]: Info from NvDsInferContextImpl::deserializeEngineAndBackend() <nvdsinfer_context_impl.cpp:1909> [UID = 1]: deserialized trt engine from :/home/nvidia/engines/PrimaryObjectDetect/yolov4_resnet18_epoch_004.etlt_b1_gpu0_fp32.engine
INFO: [Implicit Engine Info]: layers num: 5
0   INPUT  kFLOAT Input           3x736x1280      
1   OUTPUT kINT32 BatchedNMS      1               
2   OUTPUT kFLOAT BatchedNMS_1    200x4           
3   OUTPUT kFLOAT BatchedNMS_2    200             
4   OUTPUT kFLOAT BatchedNMS_3    200             

0:00:05.943919040  8135 0xaaaaca778490 INFO                 nvinfer gstnvinfer.cpp:646:gst_nvinfer_logger:<primary_gie> NvDsInferContext[UID 1]: Info from NvDsInferContextImpl::generateBackendContext() <nvdsinfer_context_impl.cpp:2012> [UID = 1]: Use deserialized engine model: /home/nvidia/engines/PrimaryObjectDetect/yolov4_resnet18_epoch_004.etlt_b1_gpu0_fp32.engine
0:00:05.959729984  8135 0xaaaaca778490 INFO                 nvinfer gstnvinfer_impl.cpp:328:notifyLoadModelStatus:<primary_gie> [UID 1]: Load new model:/home/nvidia/deepstream-app/multitask/config_infer_primary.txt sucessfully

Runtime commands:
	h: Print this help
	q: Quit

	p: Pause
	r: Resume


**PERF:  FPS 0 (Avg)	
**PERF:  0.00 (0.00)	
** INFO: <bus_callback:194>: Pipeline ready

Opening in BLOCKING MODE 
NvMMLiteOpen : Block : BlockType = 261 
NVMEDIA: Reading vendor.tegra.display-size : status: 6 
NvMMLiteBlockCreate : Block : BlockType = 261 
** INFO: <bus_callback:180>: Pipeline running

**PERF:  33.12 (33.02)	
**PERF:  30.02 (31.46)	
**PERF:  29.97 (30.97)	
**PERF:  30.01 (30.72)	
**PERF:  30.01 (30.57)	
0:00:31.233447712  8135 0xaaaaca297800 ERROR                nvinfer gstnvinfer.cpp:640:gst_nvinfer_logger:<secondary_gie_0> NvDsInferContext[UID 2]: Error in NvDsInferContextImpl::parseBoundingBox() <nvdsinfer_context_impl_output_parsing.cpp:59> [UID = 2]: Could not find output coverage layer for parsing objects
0:00:31.233489440  8135 0xaaaaca297800 ERROR                nvinfer gstnvinfer.cpp:640:gst_nvinfer_logger:<secondary_gie_0> NvDsInferContext[UID 2]: Error in NvDsInferContextImpl::fillDetectionOutput() <nvdsinfer_context_impl_output_parsing.cpp:735> [UID = 2]: Failed to parse bboxes
Segmentation fault (core dumped)

Thanks for the help!

Justas

This is the previous method, we are all configured with multi_task_labels.txt now. We’ll delete it from the README in the future.

Could you help to use gdb to debug where the crash is? Thanks

This is the previous method, we are all configured with multi_task_labels.txt now. We’ll delete it from the README in the future.

My label files for multitask classification comply with the format linked.

Could you help to use gdb to debug where the crash is? Thanks

I recompiled the deepstream-app sample app with -g flags everywhere in the make file and ran it through gdb. The results are as follows:

$ gdb /opt/nvidia/deepstream/deepstream/sources/apps/sample_apps/deepstream-app/deepstream-app
GNU gdb (Ubuntu 9.2-0ubuntu1~20.04.1) 9.2
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "aarch64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /opt/nvidia/deepstream/deepstream/sources/apps/sample_apps/deepstream-app/deepstream-app...
(gdb) run -c testconfig.txt
Starting program: /opt/nvidia/deepstream/deepstream-6.1/sources/apps/sample_apps/deepstream-app/deepstream-app -c testconfig.txt
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".
[New Thread 0xffffb41fa900 (LWP 6793)]

Using winsys: x11 
[New Thread 0xffffb24e3900 (LWP 6794)]
[New Thread 0xffffb1bcc900 (LWP 6795)]
[New Thread 0xffffb13cb900 (LWP 6796)]
[New Thread 0xffffb0bca900 (LWP 6797)]
[New Thread 0xffff7a6d4900 (LWP 6798)]
[New Thread 0xffff79ed3900 (LWP 6799)]
0:00:00.213177248  6790 0xffff5c002390 WARN                 nvinfer gstnvinfer.cpp:643:gst_nvinfer_logger:<secondary_gie_0> NvDsInferContext[UID 2]: Warning from NvDsInferContextImpl::initialize() <nvdsinfer_context_impl.cpp:1170> [UID = 2]: Warning, OpenCV has been deprecated. Using NMS for clustering instead of cv::groupRectangles with topK = 20 and NMS Threshold = 0.5
0:00:03.622730560  6790 0xffff5c002390 INFO                 nvinfer gstnvinfer.cpp:646:gst_nvinfer_logger:<secondary_gie_0> NvDsInferContext[UID 2]: Info from NvDsInferContextImpl::deserializeEngineAndBackend() <nvdsinfer_context_impl.cpp:1909> [UID = 2]: deserialized trt engine from :/home/nvidia/engines/PeopleMultitask/mcls_export.etlt_b1_gpu0_fp32.engine
INFO: [Implicit Engine Info]: layers num: 4
0   INPUT  kFLOAT input_1         3x80x60         
1   OUTPUT kFLOAT pose/Softmax    5x1x1           
2   OUTPUT kFLOAT object/Softmax  2x1x1           
3   OUTPUT kFLOAT action/Softmax  6x1x1           

0:00:03.787081248  6790 0xffff5c002390 INFO                 nvinfer gstnvinfer.cpp:646:gst_nvinfer_logger:<secondary_gie_0> NvDsInferContext[UID 2]: Info from NvDsInferContextImpl::generateBackendContext() <nvdsinfer_context_impl.cpp:2012> [UID = 2]: Use deserialized engine model: /home/nvidia/engines/PeopleMultitask/mcls_export.etlt_b1_gpu0_fp32.engine
[New Thread 0xffff7934a900 (LWP 6801)]
[New Thread 0xffff78b49900 (LWP 6802)]
[New Thread 0xffff631e6900 (LWP 6803)]
0:00:03.796126976  6790 0xffff5c002390 INFO                 nvinfer gstnvinfer_impl.cpp:328:notifyLoadModelStatus:<secondary_gie_0> [UID 2]: Load new model:/home/nvidia/deepstream-app/multitask/config_infer_secondary_MT_people.txt sucessfully
[New Thread 0xffff629e5900 (LWP 6804)]
[New Thread 0xffff621e4900 (LWP 6805)]
WARNING: [TRT]: Using an engine plan file across different models of devices is not recommended and is likely to affect performance or even cause errors.
0:00:05.727608640  6790 0xffff5c002390 INFO                 nvinfer gstnvinfer.cpp:646:gst_nvinfer_logger:<primary_gie> NvDsInferContext[UID 1]: Info from NvDsInferContextImpl::deserializeEngineAndBackend() <nvdsinfer_context_impl.cpp:1909> [UID = 1]: deserialized trt engine from :/home/nvidia/engines/PrimaryObjectDetect/yolov4_resnet18_epoch_004.etlt_b1_gpu0_fp32.engine
INFO: [Implicit Engine Info]: layers num: 5
0   INPUT  kFLOAT Input           3x736x1280      
1   OUTPUT kINT32 BatchedNMS      1               
2   OUTPUT kFLOAT BatchedNMS_1    200x4           
3   OUTPUT kFLOAT BatchedNMS_2    200             
4   OUTPUT kFLOAT BatchedNMS_3    200             

0:00:05.892889120  6790 0xffff5c002390 INFO                 nvinfer gstnvinfer.cpp:646:gst_nvinfer_logger:<primary_gie> NvDsInferContext[UID 1]: Info from NvDsInferContextImpl::generateBackendContext() <nvdsinfer_context_impl.cpp:2012> [UID = 1]: Use deserialized engine model: /home/nvidia/engines/PrimaryObjectDetect/yolov4_resnet18_epoch_004.etlt_b1_gpu0_fp32.engine
[New Thread 0xffff619e3900 (LWP 6806)]
[New Thread 0xffff611e2900 (LWP 6807)]
[New Thread 0xffff609e1900 (LWP 6808)]
0:00:05.903908448  6790 0xffff5c002390 INFO                 nvinfer gstnvinfer_impl.cpp:328:notifyLoadModelStatus:<primary_gie> [UID 1]: Load new model:/home/nvidia/deepstream-app/multitask/config_infer_primary.txt sucessfully
[New Thread 0xffff5bff9900 (LWP 6809)]
[New Thread 0xffff5b7f8900 (LWP 6810)]
[New Thread 0xffff5aff7900 (LWP 6811)]
[New Thread 0xffff5a7f6900 (LWP 6812)]
[New Thread 0xffff59ff5900 (LWP 6813)]

Runtime commands:
	h: Print this help
	q: Quit

	p: Pause
	r: Resume


**PERF:  FPS 0 (Avg)	
**PERF:  0.00 (0.00)	
** INFO: <bus_callback:194>: Pipeline ready

[New Thread 0xffff597f4900 (LWP 6814)]
[New Thread 0xffff58ff3900 (LWP 6815)]
[Detaching after vfork from child process 6816]
Opening in BLOCKING MODE 
NvMMLiteOpen : Block : BlockType = 261 
NVMEDIA: Reading vendor.tegra.display-size : status: 6 
[New Thread 0xffff4f47d900 (LWP 6819)]
[New Thread 0xffff4ec7c900 (LWP 6820)]
[New Thread 0xffff4e47b900 (LWP 6821)]
NvMMLiteBlockCreate : Block : BlockType = 261 
[New Thread 0xffff4dc7a900 (LWP 6822)]
[New Thread 0xffff4d078900 (LWP 6823)]
** INFO: <bus_callback:180>: Pipeline running

[New Thread 0xffff4c877900 (LWP 6824)]
[New Thread 0xffff0fff9900 (LWP 6825)]
[New Thread 0xffff0f470900 (LWP 6826)]
[New Thread 0xffff0e667900 (LWP 6827)]
**PERF:  33.82 (33.64)	
**PERF:  29.99 (31.72)	
**PERF:  30.01 (31.13)	
[Thread 0xffff4d078900 (LWP 6823) exited]
**PERF:  30.02 (30.84)	
**PERF:  30.00 (30.67)	
0:00:31.302875232  6790 0xaaaaab758000 ERROR                nvinfer gstnvinfer.cpp:640:gst_nvinfer_logger:<secondary_gie_0> NvDsInferContext[UID 2]: Error in NvDsInferContextImpl::parseBoundingBox() <nvdsinfer_context_impl_output_parsing.cpp:59> [UID = 2]: Could not find output coverage layer for parsing objects
0:00:31.302912864  6790 0xaaaaab758000 ERROR                nvinfer gstnvinfer.cpp:640:gst_nvinfer_logger:<secondary_gie_0> NvDsInferContext[UID 2]: Error in NvDsInferContextImpl::fillDetectionOutput() <nvdsinfer_context_impl_output_parsing.cpp:735> [UID = 2]: Failed to parse bboxes

Thread 9 "deepstream-app" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xffff7934a900 (LWP 6801)]
0x0000ffffb2f2ddc0 in ?? () from /usr/lib/aarch64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_infer.so
(gdb) q
A debugging session is active.

	Inferior 1 [process 6790] will be killed.

Quit anyway? (y or n) y

You can use bt command when it crash in gdb to see more info.
Also, from the log attached, Could not find output coverage layer for parsing objects.
Did you train the model by yourself? Are output layers same as the config file you added(action/Softmax;object/Softmax;pose/Softmax)?

You can use bt command when it crash in gdb to see more info.

Ah, my apologies. I am not the most familiar with C++/gdb. Here is the output of the bt command:

0:00:37.632354560  3419 0xaaaaab758000 ERROR                nvinfer gstnvinfer.cpp:640:gst_nvinfer_logger:<secondary_gie_0> NvDsInferContext[UID 2]: Error in NvDsInferContextImpl::parseBoundingBox() <nvdsinfer_context_impl_output_parsing.cpp:59> [UID = 2]: Could not find output coverage layer for parsing objects
0:00:37.632393600  3419 0xaaaaab758000 ERROR                nvinfer gstnvinfer.cpp:640:gst_nvinfer_logger:<secondary_gie_0> NvDsInferContext[UID 2]: Error in NvDsInferContextImpl::fillDetectionOutput() <nvdsinfer_context_impl_output_parsing.cpp:735> [UID = 2]: Failed to parse bboxes

Thread 9 "deepstream-app" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xffff7934a900 (LWP 3429)]
0x0000ffffb2f2ddc0 in ?? () from /usr/lib/aarch64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_infer.so
(gdb) bt
#0  0x0000ffffb2f2ddc0 in  () at /usr/lib/aarch64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_infer.so
#1  0x0000ffffb2f2760c in  () at /usr/lib/aarch64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_infer.so
#2  0x0000fffff72e047c in  () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#3  0x0000fffff6e00624 in start_thread (arg=0xfffff7303e30) at pthread_create.c:477
#4  0x0000fffff6f0f49c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:78
(gdb)

Also, from the log attached, Could not find output coverage layer for parsing objects.
Did you train the model by yourself? Are output layers same as the config file you added(action/Softmax;object/Softmax;pose/Softmax)?

Yes I did train the model myself, Those are my tasks to identify and they are reported as given from the nvinfer_config.txt output post training.

Here is nvinfer_config.txt as output by TAO’s export:

net-scale-factor=1.0
offsets=103.939;116.779;123.68
infer-dims=3;80;60
tlt-model-key=nvidia_tlt
network-type=0
uff-input-order=0
output-blob-names=action/Softmax;object/Softmax;pose/Softmax
uff-input-blob-name=input_1
model-color-format=1
maintain-aspect-ratio=0
output-tensor-meta=0

As a side note, the primary object detector is a yolo_v4 model. Running a yolo_v4 object detector in deepstream gave me a nearly identical bounding box error until I linked the proper .so file from deepstream_tao_apps and specified the proper bbox parsing function as shown below in my config_infer_primary.txt file. I don’t suppose this problem with multi-task classification is similar? Maybe some .so file i may be missing or I am not passing it the proper bbox parsing function?

parse-bbox-func-name=NvDsInferParseCustomBatchedNMSTLT
custom-lib-path=/home/nvidia/deepstream-tao-apps/post_processor/libnvds_infercustomparser_tao.so