Optimizing SiamRPN++ and Siamese Tracker for Speed on Jetson Orin NX

• Hardware Platform: Jetson Orin NX

• DeepStream Version: 6.3

• JetPack Version (valid for Jetson only): 5.1.3

  • TensorRT version: 8.5.2.2
  • CUDA version: 11.4

I am working with the SiamRPN++ model for object tracking and am looking to use it on a Jetson Orin NX. Specifically, I am interested in integrating the Siamese Tracker, a SOT (Single Object Tracker), into DeepStream for real-time performance. I plan to use the pysot library, which can be found on this GitHub repository, to implement the tracker.

I am considering two approaches:

  1. Adding the Siamese Tracker as a custom plugin to DeepStream using Python.
  2. Optimizing the speed of SiamRPN++ within the DeepStream pipeline or via other methods.

I want to know if it’s possible to integrate the Siamese Tracker (SOT) from pysot as a custom plugin in DeepStream for efficient object tracking. Specifically, I am interested in how to do this with Python and how to improve the tracking speed for real-time applications.

Is there a way to:

  • Implement the SiamRPN++ model from pysot efficiently on Jetson Orin NX using DeepStream?
  • Integrate the Siamese tracker (SOT) as a custom plugin to leverage GPU acceleration?
  • Optimize the speed of this tracker to run smoothly in real-time, especially at high frame rates?

Any tips on optimizing the DeepStream pipeline or other ways to speed up the tracker are highly appreciated.

Thank you!

We have this guide to implement a custom tracker:Gst-nvtracker — DeepStream documentation
But it is C++ API to implement a custom tracker in DeepStream.
Can you share why current nvtracker isn’t enough for your project?

The existing nvtracker module doesn’t fully meet my project’s requirements for these reasons:

  1. Frame Processing Rate: I need high-speed processing focused on a single object, but nvtracker options are designed for multi-object tracking, adding unnecessary operations that slow down performance.
  2. Single Object Tracking: My project requires dedicated, single-object tracking, which the current nvtracker algorithms don’t support effectively. While the IoU tracker has the necessary speed, it lacks the precision required.

A Siamese-based tracker, however, would address both speed and accuracy for single-object tracking, making it a more suitable choice for my needs.

Regarding a single object, it depend on the detector. If the detector only output one object, nvtracker will only tracking the detected one object.
Regarding performance and accuracy, please check this doc: Gst-nvtracker — DeepStream documentation

There is no update from you for a period, assuming this is not an issue anymore. Hence we are closing this topic. If need further support, please open a new one. Thanks

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