NVIDIA-ISAAC-ROS / isaac_ros_object_detection

NVIDIA-accelerated, deep learned model support for image space object detection
https://developer.nvidia.com/isaac-ros-gems
Apache License 2.0
119 stars 27 forks source link

Seeking advice on 'process has died' error #33

Open immaixq opened 11 months ago

immaixq commented 11 months ago
          @mzahana Thank you for your help and advice, I have gained some insights after looking into netron again. I did changed the number of classes in the script and I think the error is caused by the number of outputs my model gives, which consists of output0 and output1. I managed to fix the mismatch error after changing `output_tensor_names`  and `output_binding_names` to `[output0, output1]`. However, another error occurred which I'm not sure of what could be the cause of it.

@kajananchinniahNV Thank you for your help, I have changed the parameters as mentioned above and managed to fix the mismatch error. Unfortunately another error occurred. The process has died without additional log on its cause. it'd be great if you could share some insights or advice on how to troubleshoot the cause of it.

Really appreciate both of your help, thank you!

Screenshot from 2023-11-28 11-39-54

_Originally posted by @immaixq in https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_object_detection/issues/32#issuecomment-1829064964_

kajananchinniahNV commented 11 months ago

Hi @immaixq,

Based on the information, I suspect that you're right that the cause of this issue is the two outputs as well since our node currently does not expect that (as mentioned in comment in #32). If possible, could you provide me with more information about your usecase? Are you using a yolov8 detection model or another type of model (e.g. segmentation)? Based on my understanding, the detection model should output only one tensor, whereas the segmentation one outputs two. If it's the segmentation model, I think the decoder we provide is currently incompatible since it expects one output from a yolov8 detection model.

For general investigation, I'd recommend checking out this tutorial for debugging using gdb. I'd specifically recommend using cuda-gdb for this. It might also be useful to compile and run with full debug logs on, etc so that we can get a more detailed stack trace.

immaixq commented 11 months ago

@kajananchinniahNV Thank you for the swift reply. And yes, I'm using a yolov8 segmentation model. Is there any ways or sample code I can run inference with it in isaac in that case ? Or I'd be glad to hear any suggestions to run and deploy the yolov8 segmentation model with ros2 on jetson device.

kajananchinniahNV commented 11 months ago

My recommendation would be to check out a feature we have called CUDA with NITROS. This is our approach to allowing users to write their own custom pre-processing and post-processing nodes for DNN applications in C++.

The source code in isaac_ros_yolov8 here uses it and could serve as a good example. We also have a few examples here that should be useful.

Another option would be to write the a postprocessing node specific to yolov8 segmentation model in Python as well. NVIDIA AI IOT has an example that can be found here.

If you run into issues using this approach, please let us know.

immaixq commented 11 months ago

@kajananchinniahNV Thank you for the suggestions, I'll give it a try!