Multiple classification results

• Hardware Platform (Jetson / GPU) : GPU
• DeepStream Version : 5.1
• TensorRT Version : 7.2.1-1+cuda11.1
• NVIDIA GPU Driver Version (valid for GPU only) : 455.23.05
• Issue Type(questions, new requirements, bugs) : Question

Hi,

We have trained a 60 class classifier (EfficienNet B1) using NVIDIA TAO in order to classify different type of images. We want to perform inference using deepstream and it works ok as it performs classification according to our needs except one detail.
As an output we get right now the class with highest probability, but we would like to get the complet output of the neural network.

Right now we receive something like:[object:’car’; probability:87%] and we would need something like [{object:’car’;probability:87%},{object:’truck’;probability:10%},{object:’bike’;probability:3%}]

We cheked _NvDsClassifierMeta field NvDsLabelInfoList and we only get one object.

Do you know if it is possible to get the list we are looking for as an output?

Thanks in advance,
Alberto

you can enable “output-tensor-meta=1” for the gie to get the network output and then parse the output by yourself

Hi,

I looked changing output-tensor-meta as you mention but I don’t get any information. In the code below the first printf works but the second doesn’t, implying there are no elements in the list. I also have tried accessing NvDsInferTensorMeta, nit it is also empty. I wonder if this is only working for object detection and not for classification, as it is my use case.

NvDsObjectMeta *obj_meta = NULL;
NvDsMetaList *l_frame = NULL, *us_obj = NULL;
NvDsUserMeta *us_meta = NULL;
NvDsBatchMeta *batch_meta = gst_buffer_get_nvds_batch_meta (buf);

for (l_frame = batch_meta->frame_meta_list; l_frame != NULL; l_frame = l_frame->next) {
NvDsFrameMeta *frame_meta = (NvDsFrameMeta *) (l_frame->data);
printf(“SOMETHING INSEDE FRAME META LIST\n”);
for (us_obj = frame_meta->frame_user_meta_list;us_obj != NULL; us_obj = us_obj->next) {
us_meta = (NvDsUserMeta *) (us_obj->data);
print(“SOMETHING INSEDE FRAME USER META LISTA\n”)

  }

}

Best Regards,
Alberto

sorry for long delay!

I think you can refer to deepstream_tao_apps/apps/tao_others/deepstream-bodypose2d-app at release/tao3.0_ds6.0ga · NVIDIA-AI-IOT/deepstream_tao_apps · GitHub sample about how to parse the output in pgie_pad_buffer_probe() , it’s using “output-tensor-meta=1” in its config file - bodypose2d_pgie_config.txt .

Hi all,

I ´m trying to achieve the same as described in this post. However, I have not succeeded.

I tried activating “output-tensor-meta=1” for the pgie but when iterating over user metadata structure (NvDsUserMeta) like it is done in pgie_pad_buffer_probe() function of quoted example, user metadata structure seems to be empty because the execution doesn´t go inside the loop.

Hi alexmoreno98,

Please help to open a new topic if it’s still an issue. Thanks