Failed to parse bboxes

My sgie has custom output, CDCGreedecoder. I can successfully decode output at TensorRT.
Now in Deepstream, I have error as

0:00:03.350316666 22437   0x55bc106800 ERROR                nvinfer gstnvinfer.cpp:613: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:03.350461825 22437   0x55bc106800 ERROR                nvinfer gstnvinfer.cpp:613:gst_nvinfer_logger:<secondary_gie_0> NvDsInferContext[UID 2]: Error in NvDsInferContextImpl::fillDetectionOutput() <nvdsinfer_context_impl_output_parsing.cpp:734> [UID = 2]: Failed to parse bboxes
0:

That is from nvdsinfer_context_impl_output_parsing.cpp.

There is m_CustomBBoxParseFunc.
Do I need to implement output layer decoding as m_CustomBBoxParseFunc?

How can I do that?

Found out that I need to implement function for parse-bbox-func-name in nvinfer configuration file.

After going through lib files.
This is what I need to do.
In the nvinfer config file, neet to include flag

parse-bbox-func-name

By default, parseBoundingBox is called inside nvdsinfer_context_impl_output_parsing.cpp.
If we provide custom parsing function registered, custom function will be called from m_CustomBBoxParseFunc(outputLayers, m_NetworkInfo, m_DetectionParams, m_ObjectList).

Custom function is implemented inside nvdsinfer_custombboxparser.cpp.

Since my output is not bounding box and class id, I need another Struct to be defined for my output inside nvdsinfer.h.

That is how I understood for the process flow.

May be somebody can highlight me if it is not correct or need some more steps.
I hope this helps to others as well.

1 Like