GStreamer Video Stabilizer for NVIDIA Jetson Boards/Performance/TX1/TX2: Difference between revisions

From RidgeRun Developer Wiki
No edit summary
No edit summary
Line 12: Line 12:


=== Standalone element ===
=== Standalone element ===
==== Test Conditions ====
The following measurements were taken with the board on high-performance mode enabled, which was attained by running the following commands:
The following measurements were taken with the board on high-performance mode enabled, which was attained by running the following commands:
<syntaxhighlight lang=bash>
<syntaxhighlight lang=bash>
Line 17: Line 18:
sudo jetson_clocks
sudo jetson_clocks
</syntaxhighlight>
</syntaxhighlight>
==== Pipeline ====


All the measurements bellow where made using the following minimal pipeline.
All the measurements bellow where made using the following minimal pipeline.
<syntaxhighlight lang=bash>
<syntaxhighlight lang=bash>
PATH_TO_FILE=path_to_file.rgba
PATH_TO_FILE=path_to_file.rgba
Line 29: Line 28:
gst-launch-1.0  filesrc location=$PATH_TO_FILE blocksize=$FRAME_SIZE ! videoparse format=rgba width=$WIDTH height=$HEIGHT ! nvstabilize ! fakesink sync=true
gst-launch-1.0  filesrc location=$PATH_TO_FILE blocksize=$FRAME_SIZE ! videoparse format=rgba width=$WIDTH height=$HEIGHT ! nvstabilize ! fakesink sync=true
</syntaxhighlight>
</syntaxhighlight>
Note that this pipeline attempts to be as the least invasive as possible so the only processing element is GstNvStabilize.


==== Maximum and minimum framerate ====
==== Maximum and minimum framerate ====

Revision as of 20:57, 24 July 2019




Previous: Performance Index Next: Performance/Xavier





The following section describes some relevant performance measurements during video stabilization for a few standard resolutions. It begins with a summary of the results detailed on the following sections, as well as the pipelines used to capture such results.


Summary

Benchmarking

Standalone element

Test Conditions

The following measurements were taken with the board on high-performance mode enabled, which was attained by running the following commands:

sudo nvpmodel -m 0
sudo jetson_clocks

All the measurements bellow where made using the following minimal pipeline.

PATH_TO_FILE=path_to_file.rgba
WIDTH=1920
HEIGHT=1080
FRAME_SIZE=$(($WIDTH * $HEIGHT * 4))

gst-launch-1.0  filesrc location=$PATH_TO_FILE blocksize=$FRAME_SIZE ! videoparse format=rgba width=$WIDTH height=$HEIGHT ! nvstabilize ! fakesink sync=true

Note that this pipeline attempts to be as the least invasive as possible so the only processing element is GstNvStabilize.

Maximum and minimum framerate

These measurements were taken with the pipeline above, but without any limitation regarding to the framerate. In the next the table you can find the maximum, minimum and the average framerate for video input and different resolution stabilized by the plugin.

Resolution Maximum framerate Minimum framerate Average
640x480 78.37 53.94 72.20
1280x720 49.11 39.25 46.62
1920x1080 23.62 17.54 21.84
3840×2160 11.86 5.96 7.22

Note: To take into account the framerate relies on the movement of the video.

Maximum and minimum framerate for different resolutions.

CPU

Resolution CPU 0 CPU 1 CPU 2 CPU 3 CPU4 CPU5 Average (reported by top)
640x480@25Fps 0.52 11.6 18.54 0.14 3.61 0.71 21.9
1280x720@25Fps 4.7 49.3 40 1.28 12.5 1.21 38.2
1920x1080@25Fps 418 34.23 34 2.8 3.11 1.73 76.6
2048×1080@25Fps 4.13 65.22 61.4 2.86 1.86 1.52 116
Cpu usage for different resolutions.

GPU

Resolution GPU
640x480@25Fps 1.64
1280x720@25Fps 3.57
1920x1080@25Fps 8.26
2048×1080@25Fps 9.43
GPU usage for different resolutions.

RAM

Resolution RAM
640x480@25Fps 1199/7861MB
1280x720@25Fps 1230/7861MB
1920x1080@25Fps 1307/7861MB
2048×1080@25Fps 1317/7861MB
RAM consumption for different resolutions.

Glass-to-glass latency

Latency was measured as shown in the picture, and the following are the approximate results. It is important to notice that latency can be affected by the parameters selected on the pipeline, specifically the queue-size property of the gst-nvstabilize element, as further explained on the User Guide. The pipeline used was the following:

Note: the following latency measurements were NOT taken with high-performance enabled, given that the chosen resolution did not require it.

gst-launch-1.0 v4l2src device=/dev/video0 ! 'video/x-raw,width=1280,height=720' ! nvvidconv ! 'video/x-raw(memory:NVMM),width=1280,height=720,format=RGBA'  ! nvvidconv ! queue max-size-buffers=1 leaky=downstream ! nvstabilize queue-size=5 ! nvvidconv ! nvoverlaysink sync=false


Glass-to-glass latency measurement
Glass-to-glass latency measurement


1280x720@30Fps

queue-size Latency (ms)
No stabilizer 140.8
1 254
2 258
3 288
4 328.8
5 412.6
6 412
Latency measurements varying queue size.
Previous: Performance Index Next: Performance/Xavier