Jetson AGX Xavier or GeForce RTX 2080 Ti?

Hi everybody,

hopefully this is the right forum where I post this question.

I need to detect some fast objects with YOLOv3 in real time and I need to decide between systems for running. Maybe someone could give me some advice which of the following two systems might work (better).

In the system there are some aquatic organism (e.g. fishs), semi-transparent, with length 15 mm and width 3 mm swimming through a transparent tube with a velocity of at least 0.2 m/s.

The tube is filmed by a camera and the picture is analyzed by YOLOv3. Right now YOLOv3 is running with 6 FPS (416 x 416 pixel) on Jetson Nano. The goal is to reach 25 FPS or higher with YOLOv3 (or another real time detection algorithm, but not Tiny-YOLO). Therefore I am thinking about two different systmes:

The first idea would be to use the AGX Jetson Xavier. It is unclear if it can reach more than 25 FPS, based on the information found online (see link 1, 2 and 3). I found that it might be an option to get up to 50 FPS by using a plugin called nvyolo (see link 4 and 5). The question is if there is an option that would lead to a running system within an acceptable amount of time. At the moment, I was unable to find a system with direct Nvidia support.

The second idea is to buy up a computer with a high-quality GPU. I was thinking of Pascal Titan X, because it is recommended in pjreddies hardware guide (see link 6) or Geforce RTX 2080 Ti because it seems to perform great in real time detection (see link 7).

Maybe anyone has an idea or an estimation, which system should be preferably used for 25 FPS. But it would also be interesting, if both of them could reach 25 FPS. Also if it would be possible to use a lower performance GPU, e.g. Geforce GTC 2070.

Thank you for your help!

1 - https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=8&cad=rja&uact=8&ved=2ahUKEwi5p7mk4InmAhUs4aYKHbqbBooQFjAHegQIBRAC&url=https%3A%2F%2Fwww.mdpi.com%2F1424-8220%2F19%2F15%2F3371%2Fpdf-vor&usg=AOvVaw3lDYhXKsMOIu_7pgZOWtGA
2 - https://devtalk.nvidia.com/default/topic/1048211/yolov3-on-jetson-agx-xavier-developer-kit-with-ros-on-a-mobile-robot/
3 - https://github.com/opendatacam/opendatacam/issues/45
4 - https://devtalk.nvidia.com/default/topic/1049402/deepstream-sdk/deepstream-yolo-app-performance-vs-tensor-core-optimized-yolo-darknet/
5 - https://devtalk.nvidia.com/default/topic/1058408/jetson-agx-xavier/yolov3-fps-on-xavier/
6 - https://pjreddie.com/darknet/hardware-guide/
7 - https://lambdalabs.com/blog/best-gpu-tensorflow-2080-ti-vs-v100-vs-titan-v-vs-1080-ti-benchmark/

Hi,

For Xavier, we can reach 22.4 fps on with FP16 mode and 27.6 fps on the INT8 mode.
This test is applied on the original 608x608 input size of YOLOv3.
The score is included the whole multimedia pipeline:
camera -> pre-processing -> inference -> post-process -> display

For Nano, here is a implementation to achieve 20 fps by updating the YOLOv3 width/height into 416x416.
https://devtalk.nvidia.com/default/topic/1064871/deepstream-sdk/deepstream-gst-nvstreammux-change-width-and-height-doesn-t-affect-fps/post/5392823/#5392823

It’s recommended to test above sample first.

Thanks.

Thank you for your advice, AastaLLL.
In my config file the value for width and height was already at 416. So I tried to decrease it, but even at a value of 32 I could not reach more than 6 FPS with YOLOv3.

I think, that there maybe could be a resolution problem, because I can not take the following “normal” command to start yolov3:

./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights -c 0

If I run this command, after loading all the layers it returns: “Video stream stopped!”

Therefore I changed the command to:

./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights 'nvarguscamerasrc auto-exposure=1 ! video/x-raw(memory:NVMM), width=(int)416, height=(int)416, format=(string)NV12, framerate=(fraction)60/1 ! nvvidconv flip-method=0 ! video/x-raw, width=(int)416, height=(int)416, format=(string)BGRx ! videoconvert ! video/x-raw, format=(string)BGR ! appsink -e'

Then it works, but with maximum 6 FPS.
I already tried running the upper command after a new set up of the Jetson Nano, but there is no difference.

Maybe you (or anyone else) has an idea, how I could run the upper command, or what else I could change. Thank you.

Hi,

Suppose Darknet use OpenCV as the image interface.
There will be several memory copy between CPU and GPU buffer in OpenCV, which lower the performance.

It’s recommended to use our deepstream sample instead.
We have optimized the whole pipeline for the embedded system.

/opt/nvidia/deepstream/deepstream-4.0/sources/objectDetector_Yolo/

With the change shared in comment#2, you should be able to achieve 20fps with Nano.

Thanks.