Thresholds Automatically Setting to Top Threshold on Multi-class FRCNN Detector

We have a multi-class FRCNN where one class is specifically trained to detect False Positives with the label DontCare. When we set the threshold of the DontCare class to 1.1 and the other classes to 0.5 respectively, it seems that Deepstream sets all detection thresholds to the 1.1 threshold on the first class. We have further tested this by dropping the threshold of DontCare to .99 but keeping the other classes thresholds at 0.5 and we only receive detection on all detection with confidences above .99. Though we have switched to using post-cluster-threshold and it seems to work properly in this way, we were wondering if the ‘threshold’ class attributes will always operate in this fashion. Attached below is the nvinfer config and labels file. We are using a TLT custom trained model.

[property]
gpu-id=0
net-scale-factor=1
offsets=114.40612496516515;117.39066364679121;115.51607974929091
model-color-format=1
labelfile-path=/home/ze-flyer/ZE/Deepstream/data/configs/dynamic/labels.txt
tlt-encoded-model=/home/ze-flyer/ZE/Deepstream/data/models/T_121_20.etlt
tlt-model-key=IydmkcOfk-IlQ-s3mkZwXuRNnnsLH8wqsUb8oG2EafE
#tlt-model-key=tlt
#tlt-model-key=bmV2bWNuaXZsdG8xNDB1cnYwbDdmbWczOGc6MThkNTY2NWQtZjAyOC00NDRjLTljMWItNDM2NjAwYzM0Njcy
uff-input-dims=3;540;960;0
uff-input-blob-name=input_image
## 0=FP32, 1=INT8, 2=FP16 mode
process-mode=1
network-mode=0
num-detected-classes=4
interval=0
batch-size=1
gie-unique-id=1
## 0=Group Rectangles, 1=DBSCAN, 2=NMS, 3 = None(No clustering)
cluster-mode=2
is-classifier=0
#network-type=0
output-blob-names=proposal;dense_class_td/Softmax;dense_regress_td/BiasAdd
parse-bbox-func-name=NvDsInferParseCustomFrcnnTLT
custom-lib-path=/opt/nvidia/deepstream/deepstream-6.0/sources/deepstream_tlt_apps/nvdsinfer_customparser_frcnn_tlt/libnvds_infercustomparser_frcnn_tlt.so
workspace-size=15000
#classifier-threshold=0.4

[class-attrs-0]
threshold=1.1

[class-attrs-2]
threshold=0.5

[class-attrs-1]
threshold=0.5

[tracker]
tracker-width=960
tracker-height=540
gpu-id=0
ll-lib-file=/opt/nvidia/deepstream/deepstream-6.0/lib/libnvds_mot_klt.so
#ll-lib-file=/opt/nvidia/deepstream/deepstream-6.0/lib/libnvds_nvdcf.so
#ll-config-file=tracker_config.yml
enable-batch-process=1
dontCare
P
R
background

Could you change the threshold to pre-cluster-threshold

We have tried both pre and post-cluster-threshold, for post-cluster-threshold the thresholding works fine and is completely independent per class. Pre-cluster-threshold however has the same error as regular threshold it seems where all thresholds are forced to the highest threshold

OK, I think you can add some log inside [nvdsinfer_context_impl_output_parsing.cpp to check what’s the behaviour

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.