|
|
(47 intermediate revisions by 4 users not shown) |
Line 1: |
Line 1: |
| <noinclude> | | <noinclude> |
| {{GstInference/Head|previous=Example Applications/DispTec|next=Model Zoo|keywords=GstInference gstreamer pipelines, Inference gstreamer pipelines, NCSDK Inference gstreamer pipelines, GoogLeNet, TinyYolo v2, GoogLeNet x2, TensorFlow backend|title=GstInference Benchmarks}} | | {{GstInference/Head|previous=Example Applications/DispTec|next=Model Zoo|metakeywords=GstInference gstreamer pipelines, Inference gstreamer pipelines, NCSDK Inference gstreamer pipelines, GoogLeNet, TinyYolo v2, GoogLeNet x2, TensorFlow backend|title=GstInference Benchmarks}} |
| </noinclude> | | </noinclude> |
|
| |
|
Line 11: |
Line 11: |
| </html> | | </html> |
|
| |
|
| == GstInference Benchmarks == | | == GstInference Benchmarks - Introduction == |
| The following benchmarks were run with a source video (1920x1080@60). With the following base [https://www.ridgerun.com/gstreamer GStreamer] pipeline, and environment variables:
| |
|
| |
|
| <source lang="bash">
| | This wiki summarizes a series of benchmarks on different hardware platforms based on the [https://github.com/RidgeRun/gst-inference/blob/master/tests/benchmark/run_benchmark.sh run_benchmark.sh] bash script that can be found in the official [https://github.com/RidgeRun/gst-inference GstInference repository]. The script is based on the following GStreamer pipeline: |
| $ VIDEO_FILE='video.mp4'
| |
| $ MODEL_LOCATION='graph_inceptionv1_tensorflow.pb'
| |
| $ INPUT_LAYER='input'
| |
| $ OUTPUT_LAYER='InceptionV1/Logits/Predictions/Reshape_1'
| |
| </source>
| |
| The environment variables were changed accordingly with the used model (Inception V1,V2,V3 or V4) | |
|
| |
|
| <source lang="bash"> | | <source lang="bash"> |
| GST_DEBUG=inception1:1 gst-launch-1.0 filesrc location=$VIDEO_FILE ! decodebin ! videoconvert ! videoscale ! queue ! net.sink_model inceptionv1 name=net model-location=$MODEL_LOCATION backend=tensorflow backend::input-layer=$INPUT_LAYER backend::output-layer=$OUTPUT_LAYER net.src_model ! perf ! fakesink -v
| | #Script to run each model |
| </source>
| | run_all_models(){ |
|
| |
|
| The Desktop PC had the following specifications:
| | model_array=(inceptionv1 inceptionv2 inceptionv3 inceptionv4 tinyyolov2 tinyyolov3) |
| *Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz
| | model_upper_array=(InceptionV1 InceptionV2 InceptionV3 InceptionV4 TinyYoloV2 TinyYoloV3) |
| *8 GB RAM
| | input_array=(input input input input input/Placeholder inputs ) |
| *Cedar [Radeon HD 5000/6000/7350/8350 Series]
| | output_array=(InceptionV1/Logits/Predictions/Reshape_1 Softmax InceptionV3/Predictions/Reshape_1 |
| *Linux 4.15.0-54-generic x86_64 (Ubuntu 16.04)
| | InceptionV4/Logits/Predictions add_8 output_boxes ) |
|
| |
|
| The Jetson Xavier power modes used were 2 and 6 (more information: [https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%2520Linux%2520Driver%2520Package%2520Development%2520Guide%2Fpower_management_jetson_xavier.html%23wwpID0E0OM0HA Supported Modes and Power Efficiency])
| | mkdir -p logs/ |
| | rm -f logs/* |
|
| |
|
| *View current power mode:
| | for ((i=0;i<${#model_array[@]};++i)); do |
| | echo Perf ${model_array[i]} |
| | gst-launch-1.0 \ |
| | filesrc location=$VIDEO_PATH num-buffers=600 ! decodebin ! videoconvert ! \ |
| | perf print-arm-load=true name=inputperf ! tee name=t t. ! videoscale ! queue ! net.sink_model t. ! queue ! net.sink_bypass \ |
| | ${model_array[i]} backend=$BACKEND name=net backend::input-layer=${input_array[i]} backend::output-layer=${output_array[i]} \ |
| | model-location="${MODELS_PATH}${model_upper_array[i]}_${INTERNAL_PATH}/graph_${model_array[i]}${EXTENSION}" \ |
| | net.src_bypass ! perf print-arm-load=true name=outputperf ! videoconvert ! fakesink sync=false > logs/${model_array[i]}.log |
| | done |
| | } |
| | </source> |
|
| |
|
| <source lang="bash"> | | === Test benchmark video === |
| $ sudo /usr/sbin/nvpmodel -q
| | The following video was used to perform the benchmark tests. |
| </source> | | <br> |
| | To download the video press right-click on the video and select 'Save video as' and save this on your computer. |
| | <br> |
| | <br> |
| | [[File:Test benchmark video.mp4|thumb|border|center|500px|alt=Alt|Video 1. Test benchmark video]] |
|
| |
|
| *Change current power mode:
| | == x86 == |
|
| |
|
| <source lang="bash">
| | The Desktop PC had the following specifications: |
| sudo /usr/sbin/nvpmodel -m x
| | *Intel(R) Core(TM) Core i7-7700HQ CPU @ 2.80GHz |
| </source>
| | *12 GB RAM |
| Where x is the power mode ID (e.g. 0, 1, 2, 3, 4, 5, 6).
| | *Linux 4.15.0-106-generic x86_64 (Ubuntu 16.04) |
| | *GStreamer 1.8.3 |
|
| |
|
| === Summary === | | === FPS Measurements === |
|
| |
|
| {| class="wikitable" style="display: inline-table;"
| | <html> |
| ! style="font-weight:bold; background-color:#efefef; color:#000000;" | Desktop PC
| |
| ! colspan="2" style="text-align: center; font-weight:bold; background-color:#efefef; color:#000000;" | CPU Library
| |
| |-
| |
| | style="background-color:#e98d44; color:#000000;" | Model
| |
| | style="background-color:#e98d44; color:#000000;" | Framerate
| |
| | style="background-color:#e98d44; color:#000000;" | CPU Usage
| |
| |-
| |
| | style="background-color:#e98d44; color:#000000;" | Inception V1
| |
| | style="background-color:#fee3cd; color:#000000;" | 11.89
| |
| | style="background-color:#fee3cd; color:#000000;" | 48
| |
| |-
| |
| | style="background-color:#e98d44; color:#000000;" | Inception V2
| |
| | style="background-color:#fee3cd; color:#000000;" | 10.33
| |
| | style="background-color:#fee3cd; color:#000000;" | 65
| |
| |-
| |
| | style="background-color:#e98d44; color:#000000;" | Inception V3
| |
| | style="background-color:#fee3cd; color:#000000;" | 5.41
| |
| | style="background-color:#fee3cd; color:#000000;" | 90
| |
| |-
| |
| | style="background-color:#e98d44; color:#000000;" | Inception V4
| |
| | style="background-color:#fee3cd; color:#000000;" | 3.81
| |
| | style="background-color:#fee3cd; color:#000000;" | 94
| |
| |}
| |
|
| |
|
| {| class="wikitable" style="display: inline-table;"
| | <style> |
| ! style="font-weight:bold; background-color:#efefef; color:#000000;" | Jetson Xavier (15W)
| |
| ! colspan="2" style="text-align: center; font-weight:bold; background-color:#efefef; color:#000000;" | CPU Library
| |
| ! colspan="2" style="text-align: center; font-weight:bold; background-color:#efefef; color:#000000;" | GPU Library
| |
| |-
| |
| | style="background-color:#2c79d3; color:#000000;" | Model
| |
| | style="background-color:#2c79d3; color:#000000;" | Framerate
| |
| | style="background-color:#2c79d3; color:#000000;" | CPU Usage
| |
| | style="background-color:#2c79d3; color:#000000;" | Framerate
| |
| | style="background-color:#2c79d3; color:#000000;" | CPU Usage
| |
| |-
| |
| | style="background-color:#2c79d3; color:#000000;" | Inception V1
| |
| | style="background-color:#c5daf6; color:#000000;" | 8.24
| |
| | style="background-color:#c5daf6; color:#000000;" | 86
| |
| | style="background-color:#c5daf6; color:#000000;" | 52.3
| |
| | style="background-color:#c5daf6; color:#000000;" | 43
| |
| |-
| |
| | style="background-color:#2c79d3; color:#000000;" | Inception V2
| |
| | style="background-color:#c5daf6; color:#000000;" | 6.58
| |
| | style="background-color:#c5daf6; color:#000000;" | 88
| |
| | style="background-color:#c5daf6; color:#000000;" | 39.6
| |
| | style="background-color:#c5daf6; color:#000000;" | 42
| |
| |-
| |
| | style="background-color:#2c79d3; color:#000000;" | Inception V3
| |
| | style="background-color:#c5daf6; color:#000000;" | 2.54
| |
| | style="background-color:#c5daf6; color:#000000;" | 92
| |
| | style="background-color:#c5daf6; color:#000000;" | 17.8
| |
| | style="background-color:#c5daf6; color:#000000;" | 25
| |
| |-
| |
| | style="background-color:#2c79d3; color:#000000;" | Inception V4
| |
| | style="background-color:#c5daf6; color:#000000;" | 1.22
| |
| | style="background-color:#c5daf6; color:#000000;" | 94
| |
| | style="background-color:#c5daf6; color:#000000;" | 9.4
| |
| | style="background-color:#c5daf6; color:#000000;" | 20
| |
| |}
| |
| | |
| {| class="wikitable" style="display: inline-table;"
| |
| ! style="font-weight:bold; background-color:#efefef; color:#000000;" | Jetson Xavier (30W)
| |
| ! colspan="2" style="text-align: center; font-weight:bold; background-color:#efefef; color:#000000;" | CPU Library
| |
| ! colspan="2" style="text-align: center; font-weight:bold; background-color:#efefef; color:#000000;" | GPU Library
| |
| |-
| |
| | style="background-color:#6aa758; color:#000000;" | Model
| |
| | style="background-color:#6aa758; color:#000000;" | Framerate
| |
| | style="background-color:#6aa758; color:#000000;" | CPU Usage
| |
| | style="background-color:#6aa758; color:#000000;" | Framerate
| |
| | style="background-color:#6aa758; color:#000000;" | CPU Usage
| |
| |-
| |
| | style="background-color:#6aa758; color:#000000;" | Inception V1
| |
| | style="background-color:#d8e9d3; color:#000000;" | 6.41
| |
| | style="background-color:#d8e9d3; color:#000000;" | 93
| |
| | style="background-color:#d8e9d3; color:#000000;" | 66.27
| |
| | style="background-color:#d8e9d3; color:#000000;" | 72
| |
| |-
| |
| | style="background-color:#6aa758; color:#000000;" | Inception V2
| |
| | style="background-color:#d8e9d3; color:#000000;" | 5.11
| |
| | style="background-color:#d8e9d3; color:#000000;" | 95
| |
| | style="background-color:#d8e9d3; color:#000000;" | 50.59
| |
| | style="background-color:#d8e9d3; color:#000000;" | 62
| |
| |-
| |
| | style="background-color:#6aa758; color:#000000;" | Inception V3
| |
| | style="background-color:#d8e9d3; color:#000000;" | 1.96
| |
| | style="background-color:#d8e9d3; color:#000000;" | 98
| |
| | style="background-color:#d8e9d3; color:#000000;" | 22.95
| |
| | style="background-color:#d8e9d3; color:#000000;" | 44
| |
| |-
| |
| | style="background-color:#6aa758; color:#000000;" | Inception V4
| |
| | style="background-color:#d8e9d3; color:#000000;" | 0.98
| |
| | style="background-color:#d8e9d3; color:#000000;" | 99
| |
| | style="background-color:#d8e9d3; color:#000000;" | 12.14
| |
| | style="background-color:#d8e9d3; color:#000000;" | 32
| |
| |}
| |
| | |
| === Framerate ===
| |
| | |
| [[File:Framerate Benchmarks gst-inference.png|1024px|frameless|thumb|center]]
| |
| | |
| === CPU Usage ===
| |
| | |
| [[File:CPU Benchmarks gst-inference.png|1024px|frameless|thumb|center]]
| |
| | |
| == TensorFlow Lite Benchmarks ==
| |
| === FPS measurement ===
| |
| <html>
| |
| <style>
| |
| .button { | | .button { |
| background-color: #008CBA; | | background-color: #008CBA; |
Line 171: |
Line 74: |
| } | | } |
| </style> | | </style> |
| <div id="Buttons_Model" style="margin: auto; width: 1300px; height: auto;">
| | |
| <button class="button" id="show_inceptionv1">Show InceptionV1 </button>
| | <div id="chart_fps_x86" style="margin: auto; width: 800px; height: 500px;"></div> |
| <button class="button" id="show_inceptionv2">Show InceptionV2 </button>
| |
| <button class="button" id="show_inceptionv3">Show InceptionV3 </button>
| |
| <button class="button" id="show_inceptionv4">Show InceptionV4 </button>
| |
| <button class="button" id="show_tinyyolov2">Show TinyYoloV2 </button>
| |
| <button class="button" id="show_tinyyolov3">Show TinyYoloV3 </button>
| |
| </div>
| |
| <br><br>
| |
| <div id="chart_div" style="margin: auto; width: 800px; height: 500px;"></div>
| |
| <br><br>
| |
| <div id="Buttons_Backend" style="margin: auto; width: 600px; height: auto;">
| |
| <button class="button" id="show_tensorflow">Show Tensorflow </button>
| |
| <button class="button" id="show_tflite">Show Tensorflow-Lite </button>
| |
| <button class="button" id="show_edgetpu">Show EdgeTPU </button>
| |
| </div>
| |
| <div id="chart_div1" style="margin: auto; width: 800px; height: 500px;"></div>
| |
| <br><br>
| |
| <div id="Buttons_Platform" style="margin: auto; width: 1050px; height: auto;">
| |
| <button class="button" id="show_x86">Show x86 </button>
| |
| <button class="button" id="show_x86_gpu">Show X86+GPU </button>
| |
| <button class="button" id="show_tx2">Show Tx2 </button>
| |
| <button class="button" id="show_tx2_gpu">Show TX2+GPU </button>
| |
| <button class="button" id="show_coral">Show Coral </button>
| |
| <button class="button" id="show_coral_tpu">Show Coral+TPU </button>
| |
| </div>
| |
| <div id="chart_div2" style="margin: auto; width: 800px; height: 500px;"></div> | |
|
| |
|
| <script> | | <script> |
| google.charts.load('current', {'packages':['corechart', 'bar']}); | | google.charts.load('current', {'packages':['corechart', 'bar']}); |
| google.charts.setOnLoadCallback(drawStuff); | | google.charts.setOnLoadCallback(drawStuffx86Fps); |
| | | |
| | function drawStuffx86Fps() { |
|
| |
|
| function drawStuff() {
| | var chartDiv_Fps_x86 = document.getElementById('chart_fps_x86'); |
| | |
|
| |
|
| | | var table_models_fps_x86 = google.visualization.arrayToDataTable([ |
| var chartDiv = document.getElementById('chart_div');
| | ['Model', //Column 0 |
| var chartDiv1 = document.getElementById('chart_div1');
| | 'ONNXRT \n x86', |
| var chartDiv2 = document.getElementById('chart_div2');
| | 'ONNXRT OpenVINO (CPU_FP32) \n x86', |
| | | 'ONNXRT OpenVINO (GPU_FP32)\n x86', |
| var table_backend_platform_fps = google.visualization.arrayToDataTable([ | | 'ONNXRT OpenVINO (GPU_FP16)\n x86', |
| ['Platform', //Colunm 0 | | 'ONNXRT OpenVINO (MYRIAD_FP16)\n x86', |
| 'InceptionV1 \n Tensorflow', //Colunm 1 | | 'TensorFlow \n x86', |
| 'InceptionV1 \n Tensorflow-Lite',//Colunm 2 | | 'TensorFlow Lite \n x86'], |
| 'InceptionV1 \n EdgeTPU', //Colunm 3 | | ['InceptionV1', 47.9, 81.966, 70.580, 98.742, 46.294, 55.3182, 18.8422], //row 1 |
| 'InceptionV2 \n Tensorflow', //Colunm 4 | | ['InceptionV2', 32.7, 63.352, 54.159, 77.449, 34.613, 39.6438, 13.5714], //row 2 |
| 'InceptionV2 \n Tensorflow-Lite',//Colunm 5
| | ['InceptionV3', 12.1, 23.287, 20.878, 34.059, 11.999, 16.2488, 4.9924], //row 3 |
| 'InceptionV2 \n EdgeTPU', //Colunm 6 | | ['InceptionV4', 5.26, 10.927, 6.160, 4.548, 6.494, 7.793, 2.583], //row 4 |
| 'InceptionV3 \n Tensorflow', //Colunm 7 | | ['TinyYoloV2', 33.559, 32.587, 0, 0, 0, 18.1846, 7.2708], //row 5 |
| 'InceptionV3 \n Tensorflow-Lite',//Colunm 8 | | ['TinyYoloV3', 35.092, 27.799, 0, 0, 0, 21.7334, 7.3042] //row 6 |
| 'InceptionV3 \n EdgeTPU', //Colunm 9
| |
| 'InceptionV4 \n Tensorflow', //Colunm 10
| |
| 'InceptionV4 \n Tensorflow-Lite',//Colunm 11
| |
| 'InceptionV4 \n EdgeTPU', //Colunm 12
| |
| 'TinyYoloV2 \n Tensorflow', //Colunm 13
| |
| 'TinyYoloV2 \n Tensorflow-Lite', //Colunm 14
| |
| 'TinyYoloV2 \n EdgeTPU', //Colunm 15
| |
| 'TinyYoloV3 \n Tensorflow', //Colunm 16
| |
| 'TinyYoloV3 \n Tensorflow-Lite', //Colunm 17
| |
| 'TinyYoloV3 \n EdgeTPU'], //Colunm 18
| |
| ['x86', 63.747, 22.781, 0, 48.381, 14.164, 0, 20.482, 12.164, 0, 10.338, 10.164, 0, 24.255, 12.164, 0, 27.113, 10.164, 0], | |
| ['x86+GPU', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //row 1 | |
| ['TX2', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //row 2 | |
| ['TX2-GPU', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //row 3 | |
| ['Coral', 0, 3.107, 0, 0, 2.311, 0, 0, 0.903, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //row 4 | |
| ['Coral+TPU', 0, 0, 41.489, 0, 0, 42.001, 0, 0, 15.232, 0, 0, 8.405, 0, 0, 0, 0, 0, 0] //row 5 | |
| ]); | | ]); |
| var table_model_platform_fps = google.visualization.arrayToDataTable([ | | var x86_materialOptions_fps = { |
| ['Model', //Colunm 0
| | width: 1000, |
| 'Tensorflow \n x86', //Colunm 1
| |
| 'Tensorflow \n x86+GPU', //Colunm 2
| |
| 'Tensorflow \n TX2', //Colunm 3
| |
| 'Tensorflow \n TX2+GPU', //Colunm 4
| |
| 'Tensorflow \n Coral', //Colunm 5
| |
| 'Tensorflow \n Coral+TPU', //Colunm 6
| |
| 'Tensorflow-Lite \n x86', //Colunm 7
| |
| 'Tensorflow-Lite \n x86+GPU', //Colunm 8
| |
| 'Tensorflow-Lite \n TX2', //Colunm 9
| |
| 'Tensorflow-Lite \n TX2+GPU', //Colunm 10
| |
| 'Tensorflow-Lite \n Coral', //Colunm 11
| |
| 'Tensorflow-Lite \n Coral+TPU', //Colunm 12
| |
| 'EdgeTPU \n Coral+TPU'], //Colunm 13
| |
| ['InceptionV1', 63.747, 0, 0, 0, 0, 0, 22.781, 0, 0, 0, 3.107, 0, 41.489], //row 1
| |
| ['InceptionV2', 48.381, 0, 0, 0, 0, 0, 14.164, 0, 0, 0, 2.311, 0, 42.001], //row 2
| |
| ['InceptionV3', 20.482, 0, 0, 0, 0, 0, 12.164, 0, 0, 0, 0.903, 0, 15.232], //row 3
| |
| ['InceptionV4', 10.338, 0, 0, 0, 0, 0, 10.164, 0, 0, 0, 0, 0, 8.405], //row 4
| |
| ['TinyYoloV2', 24.255, 0, 0, 0, 0, 0, 12.164, 0, 0, 0, 0, 0, 0], //row 5
| |
| ['TinyYoloV3', 27.113, 0, 0, 0, 0, 0, 10.164, 0, 0, 0, 0, 0, 0] //row 6
| |
| ]);
| |
| var table_model_backend_fps = google.visualization.arrayToDataTable([
| |
| ['Model', //Colunm 0
| |
| 'Tensorflow \n x86', //Colunm 1
| |
| 'Tensorflow \n x86+GPU', //Colunm 2
| |
| 'Tensorflow \n TX2', //Colunm 3
| |
| 'Tensorflow \n TX2+GPU', //Colunm 4
| |
| 'Tensorflow \n Coral', //Colunm 5
| |
| 'Tensorflow \n Coral+TPU', //Colunm 6
| |
| 'Tensorflow-Lite \n x86', //Colunm 7
| |
| 'Tensorflow-Lite \n x86+GPU', //Colunm 8
| |
| 'Tensorflow-Lite \n TX2', //Colunm 9
| |
| 'Tensorflow-Lite \n TX2+GPU', //Colunm 10
| |
| 'Tensorflow-Lite \n Coral', //Colunm 11
| |
| 'Tensorflow-Lite \n Coral+TPU', //Colunm 12
| |
| 'EdgeTPU \n Coral+TPU'], //Colunm 13
| |
| ['InceptionV1', 63.747, 0, 0, 0, 0, 0, 22.781, 0, 0, 0, 3.107, 0, 41.489], //row 1
| |
| ['InceptionV2', 48.381, 0, 0, 0, 0, 0, 14.164, 0, 0, 0, 2.311, 0, 42.001], //row 2
| |
| ['InceptionV3', 20.482, 0, 0, 0, 0, 0, 12.164, 0, 0, 0, 0.903, 0, 15.232], //row 3
| |
| ['InceptionV4', 10.338, 0, 0, 0, 0, 0, 10.164, 0, 0, 0, 0, 0, 8.405], //row 4
| |
| ['TinyYoloV2', 24.255, 0, 0, 0, 0, 0, 12.164, 0, 0, 0, 0, 0, 0], //row 5
| |
| ['TinyYoloV3', 27.113, 0, 0, 0, 0, 0, 10.164, 0, 0, 0, 0, 0, 0] //row 6
| |
| ]);
| |
| | |
| var materialOptions = {
| |
| width: 900, | |
| chart: { | | chart: { |
| title: 'Model Vs Platform per backend', | | title: 'Model Vs FPS per backend', |
| }, | | }, |
| series: { | | series: { |
Line 297: |
Line 114: |
| } | | } |
| }; | | }; |
| var materialOptions1 = { | | |
| width: 900, | | var materialChart_x86_fps = new google.charts.Bar(chartDiv_Fps_x86); |
| | view_x86_fps = new google.visualization.DataView(table_models_fps_x86); |
| | |
| | function drawMaterialChart() { |
| | var materialChart_x86_fps = new google.charts.Bar(chartDiv_Fps_x86); |
| | materialChart_x86_fps.draw(table_models_fps_x86, google.charts.Bar.convertOptions(x86_materialOptions_fps)); |
| | |
| | init_charts(); |
| | } |
| | function init_charts(){ |
| | view_x86_fps.setColumns([0,1, 2, 3, 4, 5, 6, 7]); |
| | materialChart_x86_fps.draw(view_x86_fps, x86_materialOptions_fps); |
| | } |
| | drawMaterialChart(); |
| | } |
| | |
| | </script> |
| | |
| | </html> |
| | |
| | === CPU Load Measurements === |
| | |
| | <html> |
| | |
| | <style> |
| | .button { |
| | background-color: #008CBA; |
| | border: none; |
| | color: white; |
| | padding: 15px 32px; |
| | text-align: center; |
| | text-decoration: none; |
| | display: inline-block; |
| | font-size: 16px; |
| | margin: 4px 2px; |
| | cursor: pointer; |
| | } |
| | </style> |
| | |
| | <div id="chart_cpu_x86" style="margin: auto; width: 800px; height: 500px;"></div> |
| | |
| | <script> |
| | google.charts.load('current', {'packages':['corechart', 'bar']}); |
| | google.charts.setOnLoadCallback(drawStuffx86Cpu); |
| | |
| | function drawStuffx86Cpu() { |
| | |
| | var chartDiv_Cpu_x86 = document.getElementById('chart_cpu_x86'); |
| | |
| | var table_models_cpu_x86 = google.visualization.arrayToDataTable([ |
| | ['Model', //Column 0 |
| | 'ONNXRT \n x86', |
| | 'ONNXRT OpenVINO (CPU_FP32) \n x86', |
| | 'ONNXRT OpenVINO (GPU_FP32)\n x86', |
| | 'ONNXRT OpenVINO (GPU_FP16)\n x86', |
| | 'ONNXRT OpenVINO (MYRIAD_FP16)\n x86', |
| | 'TensorFlow \n x86', |
| | 'TensorFlow Lite \n x86'], //Column 1 |
| | ['InceptionV1', 94.6, 49, 31, 29, 14, 74.2, 47.6], //row 1 |
| | ['InceptionV2', 100, 52, 28, 29, 11, 74.2, 43.6], //row 2 |
| | ['InceptionV3', 95.2, 49, 28, 28, 13, 81, 60.2], //row 3 |
| | ['InceptionV4', 88.8, 49, 33, 46, 11, 86, 50], //row 4 |
| | ['TinyYoloV2', 94, 50, 0, 0, 0, 80.6, 46], //row 5 |
| | ['TinyYoloV3', 91.4, 46, 0, 0, 0, 74.6, 42.4] //row 6 |
| | ]); |
| | var x86_materialOptions_cpu = { |
| | width: 1000, |
| chart: { | | chart: { |
| title: 'Model Vs Platform per backend', | | title: 'Model Vs CPU Load per backend', |
| }, | | }, |
| series: { | | series: { |
Line 306: |
Line 189: |
| axes: { | | axes: { |
| y: { | | y: { |
| distance: {side: 'left',label: 'FPS'}, // Left y-axis. | | distance: {side: 'left',label: 'CPU Load'}, // Left y-axis. |
| } | | } |
| } | | } |
| }; | | }; |
| var materialOptions2 = { | | |
| | var materialChart_x86_cpu = new google.charts.Bar(chartDiv_Cpu_x86); |
| | view_x86_cpu = new google.visualization.DataView(table_models_cpu_x86); |
| | |
| | function drawMaterialChart() { |
| | var materialChart_x86_cpu = new google.charts.Bar(chartDiv_Cpu_x86); |
| | materialChart_x86_cpu.draw(table_models_cpu_x86, google.charts.Bar.convertOptions(x86_materialOptions_cpu)); |
| | |
| | init_charts(); |
| | } |
| | function init_charts(){ |
| | view_x86_cpu.setColumns([0,1, 2, 3, 4, 5, 6, 7]); |
| | materialChart_x86_cpu.draw(view_x86_cpu, x86_materialOptions_cpu); |
| | } |
| | drawMaterialChart(); |
| | } |
| | |
| | </script> |
| | |
| | </html> |
| | |
| | == Jetson AGX Xavier == |
| | |
| | The Jetson Xavier power modes used were 2 and 6 (more information: [https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%2520Linux%2520Driver%2520Package%2520Development%2520Guide%2Fpower_management_jetson_xavier.html%23wwpID0E0OM0HA Supported Modes and Power Efficiency]) |
| | |
| | *View current power mode: |
| | |
| | <source lang="bash"> |
| | $ sudo /usr/sbin/nvpmodel -q |
| | </source> |
| | |
| | *Change current power mode: |
| | |
| | <source lang="bash"> |
| | sudo /usr/sbin/nvpmodel -m x |
| | </source> |
| | Where x is the power mode ID (e.g. 0, 1, 2, 3, 4, 5, 6). |
| | |
| | === FPS Measurements === |
| | |
| | <html> |
| | |
| | <style> |
| | .button { |
| | background-color: #008CBA; |
| | border: none; |
| | color: white; |
| | padding: 15px 32px; |
| | text-align: center; |
| | text-decoration: none; |
| | display: inline-block; |
| | font-size: 16px; |
| | margin: 4px 2px; |
| | cursor: pointer; |
| | } |
| | </style> |
| | |
| | <div id="chart_fps_xavier" style="margin: auto; width: 800px; height: 500px;"></div> |
| | |
| | <script> |
| | google.charts.load('current', {'packages':['corechart', 'bar']}); |
| | google.charts.setOnLoadCallback(drawStuffXavierFps); |
| | |
| | function drawStuffXavierFps() { |
| | |
| | var chartDiv_Fps_Xavier = document.getElementById('chart_fps_xavier'); |
| | |
| | var table_models_fps_xavier = google.visualization.arrayToDataTable([ |
| | ['Model', //Column 0 |
| | 'TensorFlow \n Xavier (15 W)', //Column 1 |
| | 'TensorFlow (GPU) \n Xavier (15 W)', //Column 2 |
| | 'TensorFlow \n Xavier (30 W)', //Column 3 |
| | 'TensorFlow (GPU) \n Xavier (30 W)', //Column 4 |
| | 'TensorRT \n Xavier', //Column 5 |
| | 'ONNXRT ACL \n Xavier'], //Column 6 |
| | ['InceptionV1', 8.24, 52.3, 6.41, 66.27, 92.6, 17.566], //row 1 |
| | ['InceptionV2', 6.58, 39.6, 5.11, 50.59, 0, 12.729], //row 2 |
| | ['InceptionV3', 2.54, 17.8, 1.96, 22.95, 24.9, 5.709], //row 3 |
| | ['InceptionV4', 1.22, 9.4, 0.98, 12.14, 13.6, 2.747], //row 4 |
| | ['TinyYoloV2', 0, 0, 0, 0, 69.7, 9.367], //row 5 |
| | ['TinyYoloV3', 0, 0, 0, 0, 0, 10.520] //row 6 |
| | ]); |
| | var xavier_materialOptions_fps = { |
| width: 900, | | width: 900, |
| chart: { | | chart: { |
| title: 'Model Vs Backend per Platform', | | title: 'Model Vs FPS per backend', |
| }, | | }, |
| series: { | | series: { |
Line 324: |
Line 289: |
| }; | | }; |
|
| |
|
| var materialChart_fps = new google.charts.Bar(chartDiv); | | var materialChart_xavier_fps = new google.charts.Bar(chartDiv_Fps_Xavier); |
| var materialChart1_fps = new google.charts.Bar(chartDiv1); | | view_xavier_fps = new google.visualization.DataView(table_models_fps_xavier); |
| var materialChart2_fps = new google.charts.Bar(chartDiv2);
| |
| view_fps = new google.visualization.DataView(table_backend_platform_fps);
| |
| view1_fps = new google.visualization.DataView(table_model_platform_fps);
| |
| view2_fps = new google.visualization.DataView(table_model_backend_fps);
| |
|
| |
|
| function drawMaterialChart() { | | function drawMaterialChart() { |
| var materialChart_fps = new google.charts.Bar(chartDiv); | | var materialChart_xavier_fps = new google.charts.Bar(chartDiv_Fps_Xavier); |
| var materialChart1_fps = new google.charts.Bar(chartDiv1); | | materialChart_xavier_fps.draw(table_models_fps_xavier, google.charts.Bar.convertOptions(xavier_materialOptions_fps)); |
| var materialChart2_fps = new google.charts.Bar(chartDiv2);
| | |
| materialChart_fps.draw(table_backend_platform_fps, google.charts.Bar.convertOptions(materialOptions));
| |
| materialChart1_fps.draw(table_model_platform_fps, google.charts.Bar.convertOptions(materialOptions1));
| |
| materialChart2_fps.draw(table_model_backend_fps, google.charts.Bar.convertOptions(materialOptions2));
| |
| init_charts(); | | init_charts(); |
| } | | } |
| function init_charts(){ | | function init_charts(){ |
| view_fps.setColumns([0,1,2,3]); | | view_xavier_fps.setColumns([0,1,2,3,4,5,6]); |
| view_fps.hideColumns([4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]);
| | materialChart_xavier_fps.draw(view_xavier_fps, xavier_materialOptions_fps); |
| materialChart_fps.draw(view_fps, materialOptions);
| |
| view1_fps.setColumns([0,1,2,3,4,5,6]);
| |
| view1_fps.hideColumns([7,8,9,10,11,12]);
| |
| materialChart1_fps.draw(view1_fps, materialOptions1);
| |
| view2_fps.setColumns([0,1,7]);
| |
| view2_fps.hideColumns([2,3,4,5,6,8,9,10,11,12]);
| |
| materialChart2_fps.draw(view2_fps, materialOptions2); | |
| | |
| } | | } |
| | | drawMaterialChart(); |
| // REF_MODEL | |
| /*Select the Model that you want to show in the chart*/
| |
| var show_inceptionv1 = document.getElementById('show_inceptionv1');
| |
| show_inceptionv1.onclick = function () {
| |
| view_fps.setColumns([0,1]);
| |
| view_fps.hideColumns([2, 3, 4, 5, 6]);
| |
| materialChart_fps.draw(view_fps, materialOptions);
| |
| }
| |
| var show_inceptionv2 = document.getElementById("show_inceptionv2");
| |
| show_inceptionv2.onclick = function() {
| |
| view_fps.setColumns([0,4,5,6]);
| |
| view_fps.hideColumns([1,2,3,7,8,9,10,11,12,13,14,15,16,17,18]);
| |
| materialChart_fps.draw(view_fps, materialOptions);
| |
| }
| |
| var show_inceptionv3 = document.getElementById('show_inceptionv3');
| |
| show_inceptionv3.onclick = function() {
| |
| view_fps.setColumns([0,7,8,9]);
| |
| view_fps.hideColumns([1,2,3,4,5,6,10,11,12,13,14,15,16,17,18]);
| |
| materialChart_fps.draw(view_fps, materialOptions);
| |
| }
| |
| var show_inceptionv4 = document.getElementById("show_inceptionv4");
| |
| show_inceptionv4.onclick = function() {
| |
| view_fps.setColumns([0,10,11,12]);
| |
| view_fps.hideColumns([1,2,3,4,5,6,7,8,9,13,14,15,16,17,18]);
| |
| materialChart_fps.draw(view_fps, materialOptions);
| |
| }
| |
| var show_tinyyolov2 = document.getElementById("show_tinyyolov2");
| |
| show_tinyyolov2.onclick = function() {
| |
| view_fps.setColumns([0,13,14,15]);
| |
| view_fps.hideColumns([1,2,3,4,5,6,7,8,9,10,11,12,16,17,18]);
| |
| materialChart_fps.draw(view_fps, materialOptions);
| |
| }
| |
| var show_tinyyolov3 = document.getElementById("show_tinyyolov3");
| |
| show_tinyyolov3.onclick = function() {
| |
| view_fps.setColumns([0,16,17,18]);
| |
| view_fps.hideColumns([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]);
| |
| materialChart_fps.draw(view_fps, materialOptions);
| |
| }
| |
| /* REF_BACKEND */
| |
| /*Select the backend to filter the data to show in the chart*/
| |
| var button = document.getElementById('show_tensorflow');
| |
| button.onclick = function() {
| |
| view1_fps.setColumns([0,1,2,3,4,5,6]);
| |
| view1_fps.hideColumns([7,8,9,10,11,12,13]);
| |
| materialChart1_fps.draw(view1_fps, materialOptions1);
| |
| }
| |
| var showFPS_only = document.getElementById("show_tflite");
| |
| showFPS_only.onclick = function() {
| |
| view1_fps.setColumns([0,7,8,9,10,11,12]);
| |
| view1_fps.hideColumns([1,2,3,4,5,6,13]);
| |
| materialChart1_fps.draw(view1_fps, materialOptions1);
| |
| }
| |
| var showEdgeTPUFPS = document.getElementById("show_edgetpu");
| |
| showEdgeTPUFPS.onclick = function() {
| |
| view1_fps.setColumns([0,13]);
| |
| view1_fps.hideColumns([1,2,3,4,5,6,7,8,9,10,11,12]);
| |
| materialChart1_fps.draw(view1_fps, materialOptions1);
| |
| }
| |
| /* REF_PLATFORM */
| |
| /*Select the Platform to filter the data to show in the chart*/
| |
| var show_x86 = document.getElementById('show_x86');
| |
| show_x86.onclick = function() {
| |
| view2_fps.setColumns([0,1,7]);
| |
| view2_fps.hideColumns([2,3,4,5,6,8,9,10,11,12]);
| |
| materialChart2_fps.draw(view2_fps, materialOptions2);
| |
| }
| |
| var show_x86_gpu = document.getElementById("show_x86_gpu");
| |
| show_x86_gpu.onclick = function() {
| |
| view2_fps.setColumns([0,2,8]);
| |
| view2_fps.hideColumns([1,3,4,5,6,7,9,10,11,12]);
| |
| materialChart2_fps.draw(view2_fps, materialOptions2);
| |
| }
| |
| var show_tx2 = document.getElementById('show_tx2');
| |
| show_tx2.onclick = function() {
| |
| view2_fps.setColumns([0,3,9]);
| |
| view2_fps.hideColumns([1,2,4,5,6,7,8,10,11,12]);
| |
| materialChart2_fps.draw(view2_fps, materialOptions2);
| |
| }
| |
| var show_tx2_gpu = document.getElementById("show_tx2_gpu");
| |
| show_tx2_gpu.onclick = function() {
| |
| view2_fps.setColumns([0,4,10]);
| |
| view2_fps.hideColumns([1,2,3,5,6,7,8,9,11,12]);
| |
| materialChart2_fps.draw(view2_fps, materialOptions2);
| |
| }
| |
| var show_coral = document.getElementById('show_coral');
| |
| show_coral.onclick = function() {
| |
| view2_fps.setColumns([0,5,11]);
| |
| view2_fps.hideColumns([1,2,3,4,6,7,8,9,10,12]);
| |
| materialChart2_fps.draw(view2_fps, materialOptions2);
| |
| }
| |
| var show_coral_tpu = document.getElementById("show_coral_tpu");
| |
| show_coral_tpu.onclick = function() {
| |
| view2_fps.setColumns([0,13]);
| |
| view2_fps.hideColumns([1,2,3,4,5,7,8,9,10,11]);
| |
| materialChart2_fps.draw(view2_fps, materialOptions2);
| |
| } | | } |
|
| |
|
| drawMaterialChart();
| |
| };
| |
| </script> | | </script> |
| | |
| </html> | | </html> |
|
| |
|
| === CPU usage measurement === | | === CPU Load Measurements === |
| | |
| <html> | | <html> |
|
| |
|
| <div id="Buttons_Model" style="margin: auto; width: 1300px; height: auto;"> | | <style> |
| <button class="button" id="show_inceptionv1_cpu">Show InceptionV1 </button>
| | .button { |
| <button class="button" id="show_inceptionv2_cpu">Show InceptionV2 </button>
| | background-color: #008CBA; |
| <button class="button" id="show_inceptionv3_cpu">Show InceptionV3 </button>
| | border: none; |
| <button class="button" id="show_inceptionv4_cpu">Show InceptionV4 </button>
| | color: white; |
| <button class="button" id="show_tinyyolov2_cpu">Show TinyYoloV2 </button>
| | padding: 15px 32px; |
| <button class="button" id="show_tinyyolov3_cpu">Show TinyYoloV3 </button>
| | text-align: center; |
| </div>
| | text-decoration: none; |
| <br><br>
| | display: inline-block; |
| <div id="chart_div_cpu" style="margin: auto; width: 800px; height: 500px;"></div>
| | font-size: 16px; |
| <br><br>
| | margin: 4px 2px; |
| <div id="Buttons_Backend" style="margin: auto; width: 600px; height: auto;">
| | cursor: pointer; |
| <button class="button" id="show_tensorflow_cpu">Show Tensorflow </button>
| | } |
| <button class="button" id="show_tflite_cpu">Show Tensorflow-Lite </button>
| | </style> |
| <button class="button" id="show_edgetpu_cpu">Show EdgeTPU </button>
| | |
| </div>
| | <div id="chart_cpu_xavier" style="margin: auto; width: 800px; height: 500px;"></div> |
| <div id="chart_div1_cpu" style="margin: auto; width: 800px; height: 500px;"></div>
| |
| <br><br>
| |
| <div id="Buttons_Platform" style="margin: auto; width: 1050px; height: auto;">
| |
| <button class="button" id="show_x86_cpu">Show x86 </button>
| |
| <button class="button" id="show_x86_gpu_cpu">Show X86+GPU </button>
| |
| <button class="button" id="show_tx2_cpu">Show Tx2 </button>
| |
| <button class="button" id="show_tx2_gpu_cpu">Show TX2+GPU </button>
| |
| <button class="button" id="show_coral_cpu">Show Coral </button>
| |
| <button class="button" id="show_coral_tpu_cpu">Show Coral+TPU </button>
| |
| </div>
| |
| <div id="chart_div2_cpu" style="margin: auto; width: 800px; height: 500px;"></div> | |
|
| |
|
| <script> | | <script> |
| google.charts.load('current', {'packages':['corechart', 'bar']});
| | google.charts.load('current', {'packages':['corechart', 'bar']}); |
| google.charts.setOnLoadCallback(drawStuff1); | | google.charts.setOnLoadCallback(drawStuffXavierCpu); |
| | | |
| | function drawStuffXavierCpu() { |
|
| |
|
| function drawStuff1() {
| | var chartDiv_Cpu_Xavier = document.getElementById('chart_cpu_xavier'); |
| | |
| | |
|
| |
|
| var chartDivCPU = document.getElementById('chart_div_cpu'); | | var table_models_cpu_xavier = google.visualization.arrayToDataTable([ |
| var chartDiv1CPU = document.getElementById('chart_div1_cpu');
| | ['Model', //Column 0 |
| var chartDiv2CPU = document.getElementById('chart_div2_cpu');
| | 'TensorFlow \n Xavier (15 W)', //Column 1 |
| | | 'TensorFlow (GPU) \n Xavier (15 W)', //Column 2 |
| var table_backend_platform = google.visualization.arrayToDataTable([
| | 'TensorFlow \n Xavier (30 W)', //Column 3 |
| ['Platform', | | 'TensorFlow (GPU) \n Xavier (30 W)', //Column 4 |
| 'InceptionV1 \n Tensorflow', | | 'TensorRT \n Xavier', //Column 5 |
| 'InceptionV1 \n Tensorflow-Lite', | | 'ONNXRT ACL \n Xavier'], //Column 6 |
| 'InceptionV1 \n EdgeTPU',
| | ['InceptionV1', 86, 72, 93, 72, 32, 50], //row 1 |
| 'InceptionV2 \n Tensorflow',
| | ['InceptionV2', 88, 62.6, 95, 62, 0, 49], //row 2 |
| 'InceptionV2 \n Tensorflow-Lite',
| | ['InceptionV3', 92, 44, 98, 44, 6, 50], //row 3 |
| 'InceptionV2 \n EdgeTPU',
| | ['InceptionV4', 94, 32, 99, 32, 3, 50], //row 4 |
| 'InceptionV3 \n Tensorflow',
| | ['TinyYoloV2', 0, 0, 0, 0, 16, 50], //row 5 |
| 'InceptionV3 \n Tensorflow-Lite',
| | ['TinyYoloV3', 0, 0, 0, 0, 0, 50] //row 6 |
| 'InceptionV3 \n EdgeTPU',
| |
| 'InceptionV4 \n Tensorflow',
| |
| 'InceptionV4 \n Tensorflow-Lite',
| |
| 'InceptionV4 \n EdgeTPU',
| |
| 'TinyYoloV2 \n Tensorflow',
| |
| 'TinyYoloV2 \n Tensorflow-Lite',
| |
| 'TinyYoloV2 \n EdgeTPU',
| |
| 'TinyYoloV3 \n Tensorflow',
| |
| 'TinyYoloV3 \n Tensorflow-Lite',
| |
| 'TinyYoloV3 \n EdgeTPU'],
| |
| ['x86', 74, 46, 0, 75, 43, 0, 79, 54, 0, 84, 50, 0, 79, 45, 0, 76, 44, 0],
| |
| ['x86+GPU', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
| |
| ['TX2', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
| |
| ['TX2-GPU', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
| |
| ['Coral', 0, 73, 0, 0, 72, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
| |
| ['Coral+TPU', 0, 0, 32, 0, 0, 32, 0, 0, 12, 0, 0, 6, 0, 0, 0, 0, 0, 0]
| |
| ]);
| |
| var table_model_platform = google.visualization.arrayToDataTable([
| |
| ['Model',
| |
| 'Tensorflow \n x86',
| |
| 'Tensorflow \n x86+GPU', | |
| 'Tensorflow \n TX2', | |
| 'Tensorflow \n TX2+GPU',
| |
| 'Tensorflow \n Coral',
| |
| 'Tensorflow \n Coral+TPU', | |
| 'Tensorflow-Lite \n x86', | |
| 'Tensorflow-Lite \n x86+GPU', | |
| 'Tensorflow-Lite \n TX2',
| |
| 'Tensorflow-Lite \n TX2+GPU',
| |
| 'Tensorflow-Lite \n Coral',
| |
| 'Tensorflow-Lite \n Coral+TPU',
| |
| 'EdgeTPU \n Coral+TPU'],
| |
| ['InceptionV1', 74, 0, 0, 0, 0, 0, 46, 0, 0, 0, 73, 0, 32], | |
| ['InceptionV2', 75, 0, 0, 0, 0, 0, 43, 0, 0, 0, 72, 0, 32],
| |
| ['InceptionV3', 79, 0, 0, 0, 0, 0, 54, 0, 0, 0, 74, 0, 12],
| |
| ['InceptionV4', 84, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 6], | |
| ['TinyYoloV2', 79, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0],
| |
| ['TinyYoloV3', 76, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0] | |
| ]);
| |
| var table_model_backend = google.visualization.arrayToDataTable([
| |
| ['Model',
| |
| 'Tensorflow \n x86',
| |
| 'Tensorflow \n x86+GPU',
| |
| 'Tensorflow \n TX2',
| |
| 'Tensorflow \n TX2+GPU',
| |
| 'Tensorflow \n Coral',
| |
| 'Tensorflow \n Coral+TPU',
| |
| 'Tensorflow-Lite \n x86',
| |
| 'Tensorflow-Lite \n x86+GPU',
| |
| 'Tensorflow-Lite \n TX2',
| |
| 'Tensorflow-Lite \n TX2+GPU',
| |
| 'Tensorflow-Lite \n Coral',
| |
| 'Tensorflow-Lite \n Coral+TPU',
| |
| 'EdgeTPU \n Coral+TPU'],
| |
| ['InceptionV1', 74, 0, 0, 0, 0, 0, 46, 0, 0, 0, 73, 0, 32], | |
| ['InceptionV2', 75, 0, 0, 0, 0, 0, 43, 0, 0, 0, 72, 0, 32],
| |
| ['InceptionV3', 79, 0, 0, 0, 0, 0, 54, 0, 0, 0, 74, 0, 12],
| |
| ['InceptionV4', 84, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 6],
| |
| ['TinyYoloV2', 79, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0], | |
| ['TinyYoloV3', 76, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0] | |
| ]); | | ]); |
| | | var xavier_materialOptions_cpu = { |
| var materialOptions = { | |
| width: 900, | | width: 900, |
| chart: { | | chart: { |
| title: 'Backend Vs Platform per model', | | title: 'Model Vs CPU load per backend', |
| }, | | }, |
| series: { | | series: { |
Line 580: |
Line 362: |
| axes: { | | axes: { |
| y: { | | y: { |
| distance: {side: 'left',label: 'CPU USAGE'}, // Left y-axis. | | distance: {side: 'left',label: 'CPU Load'}, // Left y-axis. |
| } | | } |
| } | | } |
| }; | | }; |
| var materialOptions1 = { | | |
| | var materialChart_xavier_cpu = new google.charts.Bar(chartDiv_Cpu_Xavier); |
| | view_xavier_cpu = new google.visualization.DataView(table_models_cpu_xavier); |
| | |
| | function drawMaterialChart() { |
| | var materialChart_xavier_cpu = new google.charts.Bar(chartDiv_Cpu_Xavier); |
| | materialChart_xavier_cpu.draw(table_models_cpu_xavier, google.charts.Bar.convertOptions(xavier_materialOptions_cpu)); |
| | |
| | init_charts(); |
| | } |
| | function init_charts(){ |
| | view_xavier_cpu.setColumns([0,1,2,3,4,5,6]); |
| | materialChart_xavier_cpu.draw(view_xavier_cpu, xavier_materialOptions_cpu); |
| | } |
| | drawMaterialChart(); |
| | } |
| | |
| | </script> |
| | |
| | </html> |
| | |
| | == Jetson TX2 == |
| | |
| | === FPS Measurements === |
| | |
| | <html> |
| | |
| | <style> |
| | .button { |
| | background-color: #008CBA; |
| | border: none; |
| | color: white; |
| | padding: 15px 32px; |
| | text-align: center; |
| | text-decoration: none; |
| | display: inline-block; |
| | font-size: 16px; |
| | margin: 4px 2px; |
| | cursor: pointer; |
| | } |
| | </style> |
| | |
| | <div id="chart_fps_tx2" style="margin: auto; width: 800px; height: 500px;"></div> |
| | |
| | <script> |
| | google.charts.load('current', {'packages':['corechart', 'bar']}); |
| | google.charts.setOnLoadCallback(drawStuffTx2Fps); |
| | |
| | function drawStuffTx2Fps() { |
| | |
| | var chartDiv_Fps_Tx2 = document.getElementById('chart_fps_tx2'); |
| | |
| | var table_models_fps_tx2 = google.visualization.arrayToDataTable([ |
| | ['Model', //Column 0 |
| | 'TensorRT \n TX2'], //Column 1 |
| | ['InceptionV1', 62.5], //row 1 |
| | ['InceptionV2', 0], //row 2 |
| | ['InceptionV3', 20.2], //row 3 |
| | ['InceptionV4', 11.22], //row 4 |
| | ['TinyYoloV2', 33.8], //row 5 |
| | ['TinyYoloV3', 0] //row 6 |
| | ]); |
| | var Tx2_materialOptions_fps = { |
| width: 900, | | width: 900, |
| chart: { | | chart: { |
| title: 'Model Vs Platform per backend', | | title: 'Model Vs FPS per backend', |
| }, | | }, |
| series: { | | series: { |
Line 593: |
Line 437: |
| axes: { | | axes: { |
| y: { | | y: { |
| distance: {side: 'left',label: 'CPU USAGE'}, // Left y-axis. | | distance: {side: 'left',label: 'FPS'}, // Left y-axis. |
| } | | } |
| } | | } |
| }; | | }; |
| var materialOptions2 = { | | |
| | var materialChart_tx2_fps = new google.charts.Bar(chartDiv_Fps_Tx2); |
| | view_tx2_fps = new google.visualization.DataView(table_models_fps_tx2); |
| | |
| | function drawMaterialChart() { |
| | var materialChart_tx2_fps = new google.charts.Bar(chartDiv_Fps_Tx2); |
| | materialChart_tx2_fps.draw(table_models_fps_tx2, google.charts.Bar.convertOptions(Tx2_materialOptions_fps)); |
| | |
| | init_charts(); |
| | } |
| | function init_charts(){ |
| | view_tx2_fps.setColumns([0,1]); |
| | materialChart_tx2_fps.draw(view_tx2_fps, Tx2_materialOptions_fps); |
| | } |
| | drawMaterialChart(); |
| | } |
| | |
| | </script> |
| | |
| | </html> |
| | |
| | === CPU Load Measurements === |
| | |
| | <html> |
| | |
| | <style> |
| | .button { |
| | background-color: #008CBA; |
| | border: none; |
| | color: white; |
| | padding: 15px 32px; |
| | text-align: center; |
| | text-decoration: none; |
| | display: inline-block; |
| | font-size: 16px; |
| | margin: 4px 2px; |
| | cursor: pointer; |
| | } |
| | </style> |
| | |
| | <div id="chart_cpu_tx2" style="margin: auto; width: 800px; height: 500px;"></div> |
| | |
| | <script> |
| | google.charts.load('current', {'packages':['corechart', 'bar']}); |
| | google.charts.setOnLoadCallback(drawStuffTx2Cpu); |
| | |
| | function drawStuffTx2Cpu() { |
| | |
| | var chartDiv_Cpu_Tx2 = document.getElementById('chart_cpu_tx2'); |
| | |
| | var table_models_cpu_tx2 = google.visualization.arrayToDataTable([ |
| | ['Model', //Column 0 |
| | 'TensorRT \n TX2'], //Column 1 |
| | ['InceptionV1', 21], //row 1 |
| | ['InceptionV2', 0], //row 2 |
| | ['InceptionV3', 10], //row 3 |
| | ['InceptionV4', 7], //row 4 |
| | ['TinyYoloV2', 19], //row 5 |
| | ['TinyYoloV3', 0] //row 6 |
| | ]); |
| | var Tx2_materialOptions_cpu = { |
| width: 900, | | width: 900, |
| chart: { | | chart: { |
| title: 'Model Vs Backend per Platform', | | title: 'Model Vs CPU Load per backend', |
| }, | | }, |
| series: { | | series: { |
Line 606: |
Line 510: |
| axes: { | | axes: { |
| y: { | | y: { |
| distance: {side: 'left',label: 'CPU USAGE'}, // Left y-axis. | | distance: {side: 'left',label: 'FPS'}, // Left y-axis. |
| } | | } |
| } | | } |
| }; | | }; |
|
| |
|
| var materialChart = new google.charts.Bar(chartDivCPU); | | var materialChart_tx2_cpu = new google.charts.Bar(chartDiv_Cpu_Tx2); |
| var materialChart1 = new google.charts.Bar(chartDiv1CPU); | | view_tx2_cpu = new google.visualization.DataView(table_models_cpu_tx2); |
| var materialChart2 = new google.charts.Bar(chartDiv2CPU);
| |
| view = new google.visualization.DataView(table_backend_platform);
| |
| view1 = new google.visualization.DataView(table_model_platform);
| |
| view2 = new google.visualization.DataView(table_model_backend);
| |
|
| |
|
| function drawMaterialChart() { | | function drawMaterialChart() { |
| var materialChart = new google.charts.Bar(chartDivCPU); | | var materialChart_tx2_cpu = new google.charts.Bar(chartDiv_Cpu_Tx2); |
| var materialChart1 = new google.charts.Bar(chartDiv1CPU); | | materialChart_tx2_cpu.draw(table_models_cpu_tx2, google.charts.Bar.convertOptions(Tx2_materialOptions_cpu)); |
| var materialChart2 = new google.charts.Bar(chartDiv2CPU);
| | |
| materialChart.draw(table_backend_platform, google.charts.Bar.convertOptions(materialOptions));
| |
| materialChart1.draw(table_model_platform, google.charts.Bar.convertOptions(materialOptions1));
| |
| materialChart2.draw(table_model_backend, google.charts.Bar.convertOptions(materialOptions2));
| |
| init_charts(); | | init_charts(); |
| } | | } |
| function init_charts(){ | | function init_charts(){ |
| view.setColumns([0,1,2,3]); | | view_tx2_cpu.setColumns([0,1]); |
| view.hideColumns([4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]);
| | materialChart_tx2_cpu.draw(view_tx2_cpu, Tx2_materialOptions_cpu); |
| materialChart.draw(view, materialOptions); | |
| view1.setColumns([0,1,2,3,4,5,6]);
| |
| view1.hideColumns([7,8,9,10,11,12]);
| |
| materialChart1.draw(view1, materialOptions1);
| |
| view2.setColumns([0,1,7]);
| |
| view2.hideColumns([2,3,4,5,6,8,9,10,11,12]);
| |
| materialChart2.draw(view2, materialOptions2);
| |
| | |
| } | | } |
| | | drawMaterialChart(); |
| | |
| // REF_MODEL CPU | |
| /*Select the Model that you want to show in the chart*/
| |
| var show_inceptionv1_cpu = document.getElementById('show_inceptionv1_cpu');
| |
| show_inceptionv1_cpu.onclick = function () {
| |
| view.setColumns([0,1,2,3]);
| |
| view.hideColumns([4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]);
| |
| materialChart.draw(view, materialOptions);
| |
| }
| |
| var show_inceptionv2_cpu = document.getElementById("show_inceptionv2_cpu");
| |
| show_inceptionv2_cpu.onclick = function() {
| |
| view.setColumns([0,4,5,6]);
| |
| view.hideColumns([1,2,3,7,8,9,10,11,12,13,14,15,16,17,18]);
| |
| materialChart.draw(view, materialOptions);
| |
| }
| |
| var show_inceptionv3_cpu = document.getElementById('show_inceptionv3_cpu');
| |
| show_inceptionv3_cpu.onclick = function() {
| |
| view.setColumns([0,7,8,9]);
| |
| view.hideColumns([1,2,3,4,5,6,10,11,12,13,14,15,16,17,18]);
| |
| materialChart.draw(view, materialOptions);
| |
| }
| |
| var show_inceptionv4_cpu = document.getElementById("show_inceptionv4_cpu");
| |
| show_inceptionv4_cpu.onclick = function() {
| |
| view.setColumns([0,10,11,12]);
| |
| view.hideColumns([1,2,3,4,5,6,7,8,9,13,14,15,16,17,18]);
| |
| materialChart.draw(view, materialOptions);
| |
| }
| |
| var show_tinyyolov2_cpu = document.getElementById("show_tinyyolov2_cpu");
| |
| show_tinyyolov2_cpu.onclick = function() {
| |
| view.setColumns([0,13,14,15]);
| |
| view.hideColumns([1,2,3,4,5,6,7,8,9,10,11,12,16,17,18]);
| |
| materialChart.draw(view, materialOptions);
| |
| }
| |
| var show_tinyyolov3_cpu = document.getElementById("show_tinyyolov3_cpu");
| |
| show_tinyyolov3_cpu.onclick = function() {
| |
| view.setColumns([0,16,17,18]);
| |
| view.hideColumns([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]);
| |
| materialChart.draw(view, materialOptions);
| |
| }
| |
| /* REF_BACKEND CPU*/
| |
| /*Select the backend to filter the data to show in the chart*/
| |
| var button = document.getElementById('show_tensorflow_cpu');
| |
| button.onclick = function() {
| |
| view1.setColumns([0,1,2,3,4,5,6]);
| |
| view1.hideColumns([7,8,9,10,11,12,13]);
| |
| materialChart1.draw(view1, materialOptions1);
| |
| }
| |
| var showCPU_USAGE_only = document.getElementById("show_tflite_cpu");
| |
| showCPU_USAGE_only.onclick = function() {
| |
| view1.setColumns([0,7,8,9,10,11,12]);
| |
| view1.hideColumns([1,2,3,4,5,6,13]);
| |
| materialChart1.draw(view1, materialOptions1);
| |
| }
| |
| var showCPU_USAGE_EdgeTPU = document.getElementById("show_edgetpu_cpu");
| |
| showCPU_USAGE_EdgeTPU.onclick = function() {
| |
| view1.setColumns([0,13]);
| |
| view1.hideColumns([1,2,3,4,5,6,7,8,9,10,11,12]);
| |
| materialChart1.draw(view1, materialOptions1);
| |
| }
| |
| /* REF_PLATFORM CPU*/
| |
| /*Select the Platform to filter the data to show in the chart*/
| |
| var show_x86_cpu = document.getElementById('show_x86_cpu');
| |
| show_x86_cpu.onclick = function() {
| |
| view2.setColumns([0,1,7]);
| |
| view2.hideColumns([2,3,4,5,6,8,9,10,11,12,13]);
| |
| materialChart2.draw(view2, materialOptions2);
| |
| }
| |
| var show_x86_gpu_cpu = document.getElementById("show_x86_gpu_cpu");
| |
| show_x86_gpu_cpu.onclick = function() {
| |
| view2.setColumns([0,2,8]);
| |
| view2.hideColumns([1,3,4,5,6,7,9,10,11,12,13]);
| |
| materialChart2.draw(view2, materialOptions2);
| |
| }
| |
| var show_tx2_cpu = document.getElementById('show_tx2_cpu');
| |
| show_tx2_cpu.onclick = function() {
| |
| view2.setColumns([0,3,9]);
| |
| view2.hideColumns([1,2,4,5,6,7,8,10,11,12,13]);
| |
| materialChart2.draw(view2, materialOptions2);
| |
| }
| |
| var show_tx2_gpu_cpu = document.getElementById("show_tx2_gpu_cpu");
| |
| show_tx2_gpu_cpu.onclick = function() {
| |
| view2.setColumns([0,4,10]);
| |
| view2.hideColumns([1,2,3,5,6,7,8,9,11,12,13]);
| |
| materialChart2.draw(view2, materialOptions2);
| |
| }
| |
| var show_coral_cpu = document.getElementById('show_coral_cpu');
| |
| show_coral_cpu.onclick = function() {
| |
| view2.setColumns([0,5,11]);
| |
| view2.hideColumns([1,2,3,4,6,7,8,9,10,12,13]);
| |
| materialChart2.draw(view2, materialOptions2);
| |
| }
| |
| var show_coral_tpu_cpu = document.getElementById("show_coral_tpu_cpu");
| |
| show_coral_tpu_cpu.onclick = function() {
| |
| view2.setColumns([0,6,12,13]);
| |
| view2.hideColumns([1,2,3,4,5,7,8,9,10,11]);
| |
| materialChart2.draw(view2, materialOptions2);
| |
| } | | } |
|
| |
|
| drawMaterialChart();
| |
| };
| |
| </script> | | </script> |
| | |
| </html> | | </html> |
|
| |
|
| === Test benchmark video === | | == Jetson Nano == |
| The following video was used to perform the benchmark tests.
| |
| <br>
| |
| To download the video press right click on the video and select 'Save video as' and save this in your computer.
| |
| | |
| [[File:Test benchmark video.mp4|500px|thumb|center|Test benchmark video]]
| |
| | |
| == ONNXRT Benchmarks ==
| |
| The Desktop PC had the following specifications:
| |
| | |
| *Intel(R) Core(TM) Core i7-7700HQ CPU @ 2.80GHz
| |
| *12 GB RAM
| |
| *Linux 4.15.0-106-generic x86_64 (Ubuntu 16.04)
| |
| *GStreamer 1.8.3
| |
| | |
| The following was the GStreamer pipeline used to obtain the results:
| |
| | |
| <source lang="bash">
| |
| # MODELS_PATH has the following structure
| |
| #/path/to/models/
| |
| #├── InceptionV1_onnxrt
| |
| #│ ├── graph_inceptionv1_info.txt
| |
| #│ ├── graph_inceptionv1.onnx
| |
| #│ └── labels.txt
| |
| #├── InceptionV2_onnxrt
| |
| #│ ├── graph_inceptionv2_info.txt
| |
| #│ ├── graph_inceptionv2.onnx
| |
| #│ └── labels.txt
| |
| #├── InceptionV3_onnxrt
| |
| #│ ├── graph_inceptionv3_info.txt
| |
| #│ ├── graph_inceptionv3.onnx
| |
| #│ └── labels.txt
| |
| #├── InceptionV4_onnxrt
| |
| #│ ├── graph_inceptionv4_info.txt
| |
| #│ ├── graph_inceptionv4.onnx
| |
| #│ └── labels.txt
| |
| #├── TinyYoloV2_onnxrt
| |
| #│ ├── graph_tinyyolov2_info.txt
| |
| #│ ├── graph_tinyyolov2.onnx
| |
| #│ └── labels.txt
| |
| #└── TinyYoloV3_onnxrt
| |
| # ├── graph_tinyyolov3_info.txt
| |
| # ├── graph_tinyyolov3.onnx
| |
| # └── labels.txt
| |
| | |
| model_array=(inceptionv1 inceptionv2 inceptionv3 inceptionv4 tinyyolov2 tinyyolov3)
| |
| model_upper_array=(InceptionV1 InceptionV2 InceptionV3 InceptionV4 TinyYoloV2 TinyYoloV3)
| |
| MODELS_PATH=/path/to/models/
| |
| INTERNAL_PATH=onnxrt
| |
| EXTENSION=".onnx"
| |
| | |
| gst-launch-1.0 \
| |
| filesrc location=$VIDEO_PATH num-buffers=600 ! decodebin ! videoconvert ! \
| |
| perf print-arm-load=true name=inputperf ! tee name=t t. ! videoscale ! queue ! net.sink_model t. ! queue ! net.sink_bypass \
| |
| ${model_array[i]} backend=onnxrt name=net \
| |
| model-location="${MODELS_PATH}${model_upper_array[i]}_${INTERNAL_PATH}/graph_${model_array[i]}${EXTENSION}" \
| |
| net.src_bypass ! perf print-arm-load=true name=outputperf ! videoconvert ! fakesink sync=false
| |
| </source>
| |
|
| |
|
| === FPS Measurements === | | === FPS Measurements === |
Line 821: |
Line 556: |
| </style> | | </style> |
|
| |
|
| <div id="Buttons_Model_Onnxrt_Fps" style="margin: auto; width: 1300px; height: auto;"> | | <div id="chart_fps_nano" style="margin: auto; width: 800px; height: 500px;"></div> |
| <button class="button" id="show_inceptionv1_onnxrt_fps">Show InceptionV1 </button>
| |
| <button class="button" id="show_inceptionv2_onnxrt_fps">Show InceptionV2 </button>
| |
| <button class="button" id="show_inceptionv3_onnxrt_fps">Show InceptionV3 </button>
| |
| <button class="button" id="show_inceptionv4_onnxrt_fps">Show InceptionV4 </button>
| |
| <button class="button" id="show_tinyyolov2_onnxrt_fps">Show TinyYoloV2 </button>
| |
| <button class="button" id="show_tinyyolov3_onnxrt_fps">Show TinyYoloV3 </button>
| |
| </div>
| |
| <br><br>
| |
| <div id="chart_onnxrt" style="margin: auto; width: 800px; height: 500px;"></div>
| |
| <br><br>
| |
| <div id="Buttons_Backend_Onnxrt_Fps" style="margin: auto; width: 600px; height: auto;">
| |
| <button class="button" id="show_onnxrt_fps">Show ONNXRT </button>
| |
| </div>
| |
| <div id="chart_onnxrt1" style="margin: auto; width: 800px; height: 500px;"></div>
| |
| <br><br>
| |
|
| |
|
| <script> | | <script> |
| google.charts.load('current', {'packages':['corechart', 'bar']}); | | google.charts.load('current', {'packages':['corechart', 'bar']}); |
| google.charts.setOnLoadCallback(drawStuffFpsOnnxrt); | | google.charts.setOnLoadCallback(drawStuffNanoFps); |
| | | |
| function drawStuffFpsOnnxrt() { | | function drawStuffNanoFps() { |
|
| |
|
| var onnxrt_chartDiv = document.getElementById('chart_onnxrt'); | | var chartDiv_Fps_Nano = document.getElementById('chart_fps_nano'); |
| var onnxrt_chartDiv1 = document.getElementById('chart_onnxrt1');
| |
|
| |
|
| var table_backend_platform_onnxrt_fps = google.visualization.arrayToDataTable([ | | var table_models_fps_nano = google.visualization.arrayToDataTable([ |
| ['Platform', //Column 0 | | ['Model', //Column 0 |
| 'InceptionV1 \n ONNXRT', //Column 1 | | 'TensorRT \n Nano'], //Column 1 |
| 'InceptionV2 \n ONNXRT', //Column 2
| | ['InceptionV1', 36.8], //row 1 |
| 'InceptionV3 \n ONNXRT', //Column 3
| | ['InceptionV2', 0], //row 2 |
| 'InceptionV4 \n ONNXRT', //Column 4
| | ['InceptionV3', 10.9], //row 3 |
| 'TinyYoloV2 \n ONNXRT', //Column 5
| | ['InceptionV4', 4.82], //row 4 |
| 'TinyYoloV3 \n ONNXRT'], //Column 6
| | ['TinyYoloV2', 14.6], //row 5 |
| ['x86', 47.8702, 32.7236, 12.092, 5.2632, 16.03, 18.3592]
| | ['TinyYoloV3', 0] //row 6 |
| ]);
| |
| var table_model_platform_onnxrt_fps = google.visualization.arrayToDataTable([
| |
| ['Model', //Column 0
| |
| 'ONNXRT \n x86'], //Column 1
| |
| ['InceptionV1', 47.8702], //row 1 | |
| ['InceptionV2', 32.7236], //row 2 | |
| ['InceptionV3', 12.092], //row 3 | |
| ['InceptionV4', 5.2632], //row 4 | |
| ['TinyYoloV2', 16.03], //row 5 | |
| ['TinyYoloV3', 18.3592] //row 6 | |
| ]); | | ]); |
| var onnxrt_materialOptions = { | | var Nano_materialOptions_fps = { |
| width: 320,
| |
| chart: {
| |
| title: 'Backend Vs Platform per model',
| |
| },
| |
| series: {
| |
| },
| |
| axes: {
| |
| y: {
| |
| distance: {side: 'left',label: 'FPS'}, // Left y-axis.
| |
| }
| |
| }
| |
| };
| |
| var onnxrt_materialOptions1 = {
| |
| width: 900, | | width: 900, |
| chart: { | | chart: { |
| title: 'Model Vs Platform per backend', | | title: 'Model Vs FPS per backend', |
| }, | | }, |
| series: { | | series: { |
Line 894: |
Line 590: |
| }; | | }; |
|
| |
|
| var materialChart_onnxrt_fps = new google.charts.Bar(onnxrt_chartDiv); | | var materialChart_nano_fps = new google.charts.Bar(chartDiv_Fps_Nano); |
| var materialChart_onnxrt_fps1 = new google.charts.Bar(onnxrt_chartDiv1); | | view_nano_fps = new google.visualization.DataView(table_models_fps_nano); |
| view_onnxrt_fps = new google.visualization.DataView(table_backend_platform_onnxrt_fps);
| |
| view_onnxrt_fps1 = new google.visualization.DataView(table_model_platform_onnxrt_fps);
| |
|
| |
|
| function drawMaterialChart() { | | function drawMaterialChart() { |
| var materialChart_onnxrt_fps = new google.charts.Bar(onnxrt_chartDiv); | | var materialChart_nano_fps = new google.charts.Bar(chartDiv_Fps_Nano); |
| var materialChart_onnxrt_fps1 = new google.charts.Bar(onnxrt_chartDiv1); | | materialChart_nano_fps.draw(table_models_fps_nano, google.charts.Bar.convertOptions(Nano_materialOptions_fps)); |
| materialChart_onnxrt_fps.draw(table_backend_platform_onnxrt_fps, google.charts.Bar.convertOptions(onnxrt_materialOptions));
| |
| materialChart_onnxrt_fps1.draw(table_model_platform_onnxrt_fps, google.charts.Bar.convertOptions(onnxrt_materialOptions1));
| |
|
| |
|
| init_charts(); | | init_charts(); |
| } | | } |
| function init_charts(){ | | function init_charts(){ |
| view_onnxrt_fps.setColumns([0,1]); | | view_nano_fps.setColumns([0,1]); |
| view_onnxrt_fps.hideColumns([2, 3, 4, 5, 6]); | | materialChart_nano_fps.draw(view_nano_fps, Nano_materialOptions_fps); |
| materialChart_onnxrt_fps.draw(view_onnxrt_fps, onnxrt_materialOptions);
| | } |
| view_onnxrt_fps1.setColumns([0,1]);
| | drawMaterialChart(); |
| materialChart_onnxrt_fps1.draw(view_onnxrt_fps1, onnxrt_materialOptions1);
| |
| } | | } |
|
| |
|
| // REF_MODEL
| |
| /*Select the Model that you want to show in the chart*/
| |
| var show_inceptionv1_onnxrt_fps = document.getElementById('show_inceptionv1_onnxrt_fps');
| |
| show_inceptionv1_onnxrt_fps.onclick = function () {
| |
| view_onnxrt_fps.setColumns([0,1]);
| |
| view_onnxrt_fps.hideColumns([2, 3, 4, 5, 6]);
| |
| materialChart_onnxrt_fps.draw(view_onnxrt_fps, onnxrt_materialOptions);
| |
| }
| |
| var show_inceptionv2_onnxrt_fps = document.getElementById('show_inceptionv2_onnxrt_fps');
| |
| show_inceptionv2_onnxrt_fps.onclick = function () {
| |
| view_onnxrt_fps.setColumns([0,2]);
| |
| view_onnxrt_fps.hideColumns([1, 3, 4, 5, 6]);
| |
| materialChart_onnxrt_fps.draw(view_onnxrt_fps, onnxrt_materialOptions);
| |
| }
| |
| var show_inceptionv3_onnxrt_fps = document.getElementById('show_inceptionv3_onnxrt_fps');
| |
| show_inceptionv3_onnxrt_fps.onclick = function () {
| |
| view_onnxrt_fps.setColumns([0,3]);
| |
| view_onnxrt_fps.hideColumns([1, 2, 4, 5, 6]);
| |
| materialChart_onnxrt_fps.draw(view_onnxrt_fps, onnxrt_materialOptions);
| |
| }
| |
| var show_inceptionv4_onnxrt_fps = document.getElementById('show_inceptionv4_onnxrt_fps');
| |
| show_inceptionv4_onnxrt_fps.onclick = function () {
| |
| view_onnxrt_fps.setColumns([0,4]);
| |
| view_onnxrt_fps.hideColumns([1, 2, 3, 5, 6]);
| |
| materialChart_onnxrt_fps.draw(view_onnxrt_fps, onnxrt_materialOptions);
| |
| }
| |
| var show_tinyyolov2_onnxrt_fps = document.getElementById('show_tinyyolov2_onnxrt_fps');
| |
| show_tinyyolov2_onnxrt_fps.onclick = function () {
| |
| view_onnxrt_fps.setColumns([0,5]);
| |
| view_onnxrt_fps.hideColumns([1, 2, 3, 4, 6]);
| |
| materialChart_onnxrt_fps.draw(view_onnxrt_fps, onnxrt_materialOptions);
| |
| }
| |
| var show_tinyyolov3_onnxrt_fps = document.getElementById('show_tinyyolov3_onnxrt_fps');
| |
| show_tinyyolov3_onnxrt_fps.onclick = function () {
| |
| view_onnxrt_fps.setColumns([0,6]);
| |
| view_onnxrt_fps.hideColumns([1, 2, 3, 4, 5]);
| |
| materialChart_onnxrt_fps.draw(view_onnxrt_fps, onnxrt_materialOptions);
| |
| }
| |
| // REF_BACKEND
| |
| /*Select the Model that you want to show in the chart*/
| |
| var show_onnxrt_fps = document.getElementById('show_onnxrt_fps');
| |
| show_onnxrt_fps.onclick = function () {
| |
| view_onnxrt_fps1.setColumns([0,1]);
| |
| materialChart_onnxrt_fps1.draw(view_onnxrt_fps1, onnxrt_materialOptions1);
| |
| }
| |
| drawMaterialChart();
| |
| };
| |
| </script> | | </script> |
|
| |
|
Line 985: |
Line 629: |
| </style> | | </style> |
|
| |
|
| <div id="Buttons_Model_Onnxrt_Cpu" style="margin: auto; width: 1300px; height: auto;"> | | <div id="chart_cpu_nano" style="margin: auto; width: 800px; height: 500px;"></div> |
| <button class="button" id="show_inceptionv1_onnxrt_cpu">Show InceptionV1 </button>
| |
| <button class="button" id="show_inceptionv2_onnxrt_cpu">Show InceptionV2 </button>
| |
| <button class="button" id="show_inceptionv3_onnxrt_cpu">Show InceptionV3 </button>
| |
| <button class="button" id="show_inceptionv4_onnxrt_cpu">Show InceptionV4 </button>
| |
| <button class="button" id="show_tinyyolov2_onnxrt_cpu">Show TinyYoloV2 </button>
| |
| <button class="button" id="show_tinyyolov3_onnxrt_cpu">Show TinyYoloV3 </button>
| |
| </div>
| |
| <br><br>
| |
| <div id="chart_onnxrt_cpu" style="margin: auto; width: 800px; height: 500px;"></div>
| |
| <br><br>
| |
| <div id="Buttons_Backend_Onnxrt_Cpu" style="margin: auto; width: 600px; height: auto;">
| |
| <button class="button" id="show_onnxrt_cpu">Show ONNXRT </button>
| |
| </div>
| |
| <div id="chart_onnxrt1_cpu" style="margin: auto; width: 800px; height: 500px;"></div>
| |
| <br><br>
| |
|
| |
|
| <script> | | <script> |
| google.charts.load('current', {'packages':['corechart', 'bar']}); | | google.charts.load('current', {'packages':['corechart', 'bar']}); |
| google.charts.setOnLoadCallback(drawStuffCpuOnnxrt); | | google.charts.setOnLoadCallback(drawStuffNanoCpu); |
| | | |
| function drawStuffCpuOnnxrt() { | | function drawStuffNanoCpu() { |
|
| |
|
| var onnxrt_chartDiv_cpu = document.getElementById('chart_onnxrt_cpu'); | | var chartDiv_Cpu_Nano = document.getElementById('chart_cpu_nano'); |
| var onnxrt_chartDiv1_cpu = document.getElementById('chart_onnxrt1_cpu');
| |
|
| |
|
| var table_backend_platform_onnxrt_cpu = google.visualization.arrayToDataTable([ | | var table_models_cpu_nano = google.visualization.arrayToDataTable([ |
| ['Platform', //Column 0 | | ['Model', //Column 0 |
| 'InceptionV1 \n ONNXRT', //Column 1 | | 'TensorRT \n Nano'], //Column 1 |
| 'InceptionV2 \n ONNXRT', //Column 2
| | ['InceptionV1', 18], //row 1 |
| 'InceptionV3 \n ONNXRT', //Column 3
| | ['InceptionV2', 0], //row 2 |
| 'InceptionV4 \n ONNXRT', //Column 4
| | ['InceptionV3', 18], //row 3 |
| 'TinyYoloV2 \n ONNXRT', //Column 5
| | ['InceptionV4', 20], //row 4 |
| 'TinyYoloV3 \n ONNXRT'], //Column 6
| | ['TinyYoloV2', 20], //row 5 |
| ['x86', 94.6, 100.0, 95.2, 88.8, 94.0, 91.4] | | ['TinyYoloV3', 0] //row 6 |
| ]); | | ]); |
| var table_model_platform_onnxrt_cpu = google.visualization.arrayToDataTable([ | | var Nano_materialOptions_cpu = { |
| ['Model', //Column 0
| |
| 'ONNXRT \n x86'], //Column 1
| |
| ['InceptionV1', 94.6], //row 1
| |
| ['InceptionV2', 100.0], //row 2
| |
| ['InceptionV3', 95.2], //row 3
| |
| ['InceptionV4', 88.8], //row 4
| |
| ['TinyYoloV2', 94.0], //row 5
| |
| ['TinyYoloV3', 91.4] //row 6
| |
| ]);
| |
| var onnxrt_materialOptions_cpu = {
| |
| width: 320,
| |
| chart: {
| |
| title: 'Backend Vs Platform per model',
| |
| },
| |
| series: {
| |
| },
| |
| axes: {
| |
| y: {
| |
| distance: {side: 'left',label: 'CPU Usage'}, // Left y-axis.
| |
| }
| |
| }
| |
| };
| |
| var onnxrt_materialOptions1_cpu = {
| |
| width: 900, | | width: 900, |
| chart: { | | chart: { |
| title: 'Model Vs Platform per backend', | | title: 'Model Vs CPU Load per backend', |
| }, | | }, |
| series: { | | series: { |
Line 1,053: |
Line 658: |
| axes: { | | axes: { |
| y: { | | y: { |
| distance: {side: 'left',label: 'CPU Usage'}, // Left y-axis. | | distance: {side: 'left',label: 'FPS'}, // Left y-axis. |
| } | | } |
| } | | } |
| }; | | }; |
|
| |
|
| var materialChart_onnxrt_cpu = new google.charts.Bar(onnxrt_chartDiv_cpu); | | var materialChart_nano_cpu = new google.charts.Bar(chartDiv_Cpu_Nano); |
| var materialChart_onnxrt_cpu1 = new google.charts.Bar(onnxrt_chartDiv1_cpu); | | view_nano_cpu = new google.visualization.DataView(table_models_cpu_nano); |
| view_onnxrt_cpu = new google.visualization.DataView(table_backend_platform_onnxrt_cpu);
| |
| view_onnxrt_cpu1 = new google.visualization.DataView(table_model_platform_onnxrt_cpu);
| |
|
| |
|
| function drawMaterialChart() { | | function drawMaterialChart() { |
| var materialChart_onnxrt_cpu = new google.charts.Bar(onnxrt_chartDiv_cpu); | | var materialChart_nano_cpu = new google.charts.Bar(chartDiv_Cpu_Nano); |
| var materialChart_onnxrt_cpu1 = new google.charts.Bar(onnxrt_chartDiv1_cpu); | | materialChart_nano_cpu.draw(table_models_cpu_nano, google.charts.Bar.convertOptions(Nano_materialOptions_cpu)); |
| materialChart_onnxrt_cpu.draw(table_backend_platform_onnxrt_cpu, google.charts.Bar.convertOptions(onnxrt_materialOptions_cpu));
| |
| materialChart_onnxrt_cpu1.draw(table_model_platform_onnxrt_cpu, google.charts.Bar.convertOptions(onnxrt_materialOptions1_cpu));
| |
|
| |
|
| init_charts(); | | init_charts(); |
| } | | } |
| function init_charts(){ | | function init_charts(){ |
| view_onnxrt_cpu.setColumns([0,1]); | | view_nano_cpu.setColumns([0,1]); |
| view_onnxrt_cpu.hideColumns([2, 3, 4, 5, 6]); | | materialChart_nano_cpu.draw(view_nano_cpu, Nano_materialOptions_cpu); |
| materialChart_onnxrt_cpu.draw(view_onnxrt_cpu, onnxrt_materialOptions_cpu);
| | } |
| view_onnxrt_cpu1.setColumns([0,1]);
| | drawMaterialChart(); |
| materialChart_onnxrt_cpu1.draw(view_onnxrt_cpu1, onnxrt_materialOptions1_cpu);
| |
| } | | } |
|
| |
|
| // REF_MODEL
| |
| /*Select the Model that you want to show in the chart*/
| |
| var show_inceptionv1_onnxrt_cpu = document.getElementById('show_inceptionv1_onnxrt_cpu');
| |
| show_inceptionv1_onnxrt_cpu.onclick = function () {
| |
| view_onnxrt_cpu.setColumns([0,1]);
| |
| view_onnxrt_cpu.hideColumns([2, 3, 4, 5, 6]);
| |
| materialChart_onnxrt_cpu.draw(view_onnxrt_cpu, onnxrt_materialOptions_cpu);
| |
| }
| |
| var show_inceptionv2_onnxrt_cpu = document.getElementById('show_inceptionv2_onnxrt_cpu');
| |
| show_inceptionv2_onnxrt_cpu.onclick = function () {
| |
| view_onnxrt_cpu.setColumns([0,2]);
| |
| view_onnxrt_cpu.hideColumns([1, 3, 4, 5, 6]);
| |
| materialChart_onnxrt_cpu.draw(view_onnxrt_cpu, onnxrt_materialOptions_cpu);
| |
| }
| |
| var show_inceptionv3_onnxrt_cpu = document.getElementById('show_inceptionv3_onnxrt_cpu');
| |
| show_inceptionv3_onnxrt_cpu.onclick = function () {
| |
| view_onnxrt_cpu.setColumns([0,3]);
| |
| view_onnxrt_cpu.hideColumns([1, 2, 4, 5, 6]);
| |
| materialChart_onnxrt_cpu.draw(view_onnxrt_cpu, onnxrt_materialOptions_cpu);
| |
| }
| |
| var show_inceptionv4_onnxrt_cpu = document.getElementById('show_inceptionv4_onnxrt_cpu');
| |
| show_inceptionv4_onnxrt_cpu.onclick = function () {
| |
| view_onnxrt_cpu.setColumns([0,4]);
| |
| view_onnxrt_cpu.hideColumns([1, 2, 3, 5, 6]);
| |
| materialChart_onnxrt_cpu.draw(view_onnxrt_cpu, onnxrt_materialOptions_cpu);
| |
| }
| |
| var show_tinyyolov2_onnxrt_cpu = document.getElementById('show_tinyyolov2_onnxrt_cpu');
| |
| show_tinyyolov2_onnxrt_cpu.onclick = function () {
| |
| view_onnxrt_cpu.setColumns([0,5]);
| |
| view_onnxrt_cpu.hideColumns([1, 2, 3, 4, 6]);
| |
| materialChart_onnxrt_cpu.draw(view_onnxrt_cpu, onnxrt_materialOptions_cpu);
| |
| }
| |
| var show_tinyyolov3_onnxrt_cpu = document.getElementById('show_tinyyolov3_onnxrt_cpu');
| |
| show_tinyyolov3_onnxrt_cpu.onclick = function () {
| |
| view_onnxrt_cpu.setColumns([0,6]);
| |
| view_onnxrt_cpu.hideColumns([1, 2, 3, 4, 5]);
| |
| materialChart_onnxrt_cpu.draw(view_onnxrt_cpu, onnxrt_materialOptions_cpu);
| |
| }
| |
| // REF_BACKEND
| |
| /*Select the Model that you want to show in the chart*/
| |
| var show_onnxrt_cpu = document.getElementById('show_onnxrt_cpu');
| |
| show_onnxrt_cpu.onclick = function () {
| |
| view_onnxrt_cpu1.setColumns([0,1]);
| |
| materialChart_onnxrt_cpu1.draw(view_onnxrt_cpu1, onnxrt_materialOptions1);
| |
| }
| |
| drawMaterialChart();
| |
| };
| |
| </script> | | </script> |
|
| |
|
| </html> | | </html> |
|
| |
|
| === Test benchmark video === | | == Google Coral == |
| The following video was used to perform the benchmark tests.
| |
| <br>
| |
| To download the video press right click on the video and select 'Save video as' and save this in your computer.
| |
|
| |
|
| [[File:Test benchmark video.mp4|500px|thumb|center|Test benchmark video]]
| | The following benchmarks were performed on the Coral Dev Board. |
| | |
| == TensorRT Benchmarks ==
| |
|
| |
|
| === FPS Measurements === | | === FPS Measurements === |
Line 1,158: |
Line 706: |
| </style> | | </style> |
|
| |
|
| <div id="Buttons_Model_Tensorrt_Fps" style="margin: auto; width: 1300px; height: auto;"> | | <div id="chart_fps_coral" style="margin: auto; width: 800px; height: 500px;"></div> |
| <button class="button" id="show_inceptionv1_tensorrt_fps">Show InceptionV1 </button>
| |
| <button class="button" id="show_inceptionv2_tensorrt_fps">Show InceptionV2 </button>
| |
| <button class="button" id="show_inceptionv3_tensorrt_fps">Show InceptionV3 </button>
| |
| <button class="button" id="show_inceptionv4_tensorrt_fps">Show InceptionV4 </button>
| |
| <button class="button" id="show_tinyyolov2_tensorrt_fps">Show TinyYoloV2 </button>
| |
| <button class="button" id="show_tinyyolov3_tensorrt_fps">Show TinyYoloV3 </button>
| |
| </div>
| |
| <br><br>
| |
| <div id="chart_tensorrt" style="margin: auto; width: 800px; height: 500px;"></div>
| |
| <br><br>
| |
| <div id="Buttons_Backend_TensorRT_Fps" style="margin: auto; width: 600px; height: auto;">
| |
| <button class="button" id="show_tensorrt_fps">Show TensorRT </button>
| |
| </div>
| |
| <div id="chart_tensorrt1" style="margin: auto; width: 800px; height: 500px;"></div>
| |
| <br><br>
| |
|
| |
|
| <script> | | <script> |
| google.charts.load('current', {'packages':['corechart', 'bar']}); | | google.charts.load('current', {'packages':['corechart', 'bar']}); |
| google.charts.setOnLoadCallback(drawStuffFpsTensorRT); | | google.charts.setOnLoadCallback(drawStuffCoralFps); |
| | | |
| function drawStuffFpsTensorRT() { | | function drawStuffCoralFps() { |
|
| |
|
| var tensorrt_chartDiv = document.getElementById('chart_tensorrt'); | | var chartDiv_Fps_Coral = document.getElementById('chart_fps_coral'); |
| var tensorrt_chartDiv1 = document.getElementById('chart_tensorrt1');
| |
|
| |
|
| var table_backend_platform_tensorrt_fps = google.visualization.arrayToDataTable([ | | var table_models_fps_coral = google.visualization.arrayToDataTable([ |
| ['Platform', //Column 0 | | ['Model', //Column 0 |
| 'InceptionV1 \n TensorRT', //Column 1 | | 'TensorFlow Lite \n Coral', |
| 'InceptionV2 \n TensorRT', //Column 2 | | 'TensorFlow Lite EdgeTPU \n Coral'], //Column 1 |
| 'InceptionV3 \n TensorRT', //Column 3
| | ['InceptionV1', 3.11, 41.6], //row 1 |
| 'InceptionV4 \n TensorRT', //Column 4
| | ['InceptionV2', 2.31, 42.8], //row 2 |
| 'TinyYoloV2 \n TensorRT', //Column 5
| | ['InceptionV3', 0.9, 15.02], //row 3 |
| 'TinyYoloV3 \n TensorRT'], //Column 6
| | ['InceptionV4', 0, 8.56], //row 4 |
| ['Nano', 30.560, 0, 9.129, 4.823, 14.602, 0], | | ['MobileNetV2', 0, 41.12], //row 5 |
| ['TX2', 62.511, 0, 20.240, 11.150, 33.756, 0], | | ['MobileNetV2 + SSD', 0, 38.64] //row 6 |
| ['Xavier', 92.559, 0, 24.854, 13.560, 69.715, 0] | |
| ]); | | ]); |
| var table_model_platform_tensorrt_fps = google.visualization.arrayToDataTable([ | | var Coral_materialOptions_fps = { |
| ['Model', //Column 0
| |
| 'TensorRT \n Nano', //Column 1
| |
| 'TensorRT \n TX2', //Column 2
| |
| 'TensorRT \n Xavier'], //Column 3
| |
| ['InceptionV1', 36.754, 62.511, 92.559], //row 1
| |
| ['InceptionV2', 0, 0, 0], //row 2
| |
| ['InceptionV3', 10.892, 20.240, 24.854], //row 3
| |
| ['InceptionV4', 4.823, 11.150, 13.560], //row 4
| |
| ['TinyYoloV2', 14.602, 33.756, 69.715], //row 5
| |
| ['TinyYoloV3', 0, 0, 0] //row 6
| |
| ]);
| |
| var tensorrt_materialOptions = {
| |
| width: 320,
| |
| chart: {
| |
| title: 'Backend Vs Platform per model',
| |
| },
| |
| series: {
| |
| },
| |
| axes: {
| |
| y: {
| |
| distance: {side: 'left',label: 'FPS'}, // Left y-axis.
| |
| }
| |
| }
| |
| };
| |
| var tensorrt_materialOptions1 = {
| |
| width: 900, | | width: 900, |
| chart: { | | chart: { |
| title: 'Model Vs Platform per backend', | | title: 'Model Vs FPS per backend', |
| }, | | }, |
| series: { | | series: { |
Line 1,235: |
Line 741: |
| }; | | }; |
|
| |
|
| var materialChart_tensorrt_fps = new google.charts.Bar(tensorrt_chartDiv); | | var materialChart_coral_fps = new google.charts.Bar(chartDiv_Fps_Coral); |
| var materialChart_tensorrt_fps1 = new google.charts.Bar(tensorrt_chartDiv1); | | view_coral_fps = new google.visualization.DataView(table_models_fps_coral); |
| view_tensorrt_fps = new google.visualization.DataView(table_backend_platform_tensorrt_fps);
| |
| view_tensorrt_fps1 = new google.visualization.DataView(table_model_platform_tensorrt_fps);
| |
|
| |
|
| function drawMaterialChart() { | | function drawMaterialChart() { |
| var materialChart_tensorrt_fps = new google.charts.Bar(tensorrt_chartDiv); | | var materialChart_coral_fps = new google.charts.Bar(chartDiv_Fps_Coral); |
| var materialChart_tensorrt_fps1 = new google.charts.Bar(tensorrt_chartDiv1); | | materialChart_coral_fps.draw(table_models_fps_coral, google.charts.Bar.convertOptions(Coral_materialOptions_fps)); |
| materialChart_tensorrt_fps.draw(table_backend_platform_tensorrt_fps, google.charts.Bar.convertOptions(tensorrt_materialOptions));
| |
| materialChart_tensorrt_fps1.draw(table_model_platform_tensorrt_fps, google.charts.Bar.convertOptions(tensorrt_materialOptions1));
| |
|
| |
|
| init_charts(); | | init_charts(); |
| } | | } |
| function init_charts(){ | | function init_charts(){ |
| view_tensorrt_fps.setColumns([0,1]); | | view_coral_fps.setColumns([0,1, 2]); |
| view_tensorrt_fps.hideColumns([2, 3, 4, 5, 6]);
| | materialChart_coral_fps.draw(view_coral_fps, Coral_materialOptions_fps); |
| materialChart_tensorrt_fps.draw(view_tensorrt_fps, tensorrt_materialOptions); | | } |
| view_tensorrt_fps1.setColumns([0,1,2,3,4]);
| | drawMaterialChart(); |
| materialChart_tensorrt_fps1.draw(view_tensorrt_fps1, tensorrt_materialOptions1);
| |
| } | | } |
|
| |
|
| // REF_MODEL
| |
| /*Select the Model that you want to show in the chart*/
| |
| var show_inceptionv1_tensorrt_fps = document.getElementById('show_inceptionv1_tensorrt_fps');
| |
| show_inceptionv1_tensorrt_fps.onclick = function () {
| |
| view_tensorrt_fps.setColumns([0,1]);
| |
| view_tensorrt_fps.hideColumns([2, 3, 4, 5, 6]);
| |
| materialChart_tensorrt_fps.draw(view_tensorrt_fps, tensorrt_materialOptions);
| |
| }
| |
| var show_inceptionv2_tensorrt_fps = document.getElementById('show_inceptionv2_tensorrt_fps');
| |
| show_inceptionv2_tensorrt_fps.onclick = function () {
| |
| view_tensorrt_fps.setColumns([0,2]);
| |
| view_tensorrt_fps.hideColumns([1, 3, 4, 5, 6]);
| |
| materialChart_tensorrt_fps.draw(view_tensorrt_fps, tensorrt_materialOptions);
| |
| }
| |
| var show_inceptionv3_tensorrt_fps = document.getElementById('show_inceptionv3_tensorrt_fps');
| |
| show_inceptionv3_tensorrt_fps.onclick = function () {
| |
| view_tensorrt_fps.setColumns([0,3]);
| |
| view_tensorrt_fps.hideColumns([1, 2, 4, 5, 6]);
| |
| materialChart_tensorrt_fps.draw(view_tensorrt_fps, tensorrt_materialOptions);
| |
| }
| |
| var show_inceptionv4_tensorrt_fps = document.getElementById('show_inceptionv4_tensorrt_fps');
| |
| show_inceptionv4_tensorrt_fps.onclick = function () {
| |
| view_tensorrt_fps.setColumns([0,4]);
| |
| view_tensorrt_fps.hideColumns([1, 2, 3, 5, 6]);
| |
| materialChart_tensorrt_fps.draw(view_tensorrt_fps, tensorrt_materialOptions);
| |
| }
| |
| var show_tinyyolov2_tensorrt_fps = document.getElementById('show_tinyyolov2_tensorrt_fps');
| |
| show_tinyyolov2_tensorrt_fps.onclick = function () {
| |
| view_tensorrt_fps.setColumns([0,5]);
| |
| view_tensorrt_fps.hideColumns([1, 2, 3, 4, 6]);
| |
| materialChart_tensorrt_fps.draw(view_tensorrt_fps, tensorrt_materialOptions);
| |
| }
| |
| var show_tinyyolov3_tensorrt_fps = document.getElementById('show_tinyyolov3_tensorrt_fps');
| |
| show_tinyyolov3_tensorrt_fps.onclick = function () {
| |
| view_tensorrt_fps.setColumns([0,6]);
| |
| view_tensorrt_fps.hideColumns([1, 2, 3, 4, 5]);
| |
| materialChart_tensorrt_fps.draw(view_tensorrt_fps, tensorrt_materialOptions);
| |
| }
| |
| // REF_BACKEND
| |
| /*Select the Model that you want to show in the chart*/
| |
| var show_tensorrt_fps = document.getElementById('show_tensorrt_fps');
| |
| show_tensorrt_fps.onclick = function () {
| |
| view_tensorrt_fps1.setColumns([0,1,2,3,4]);
| |
| materialChart_tensorrt_fps1.draw(view_tensorrt_fps1, tensorrt_materialOptions1);
| |
| }
| |
| drawMaterialChart();
| |
| };
| |
| </script> | | </script> |
|
| |
|
Line 1,326: |
Line 780: |
| </style> | | </style> |
|
| |
|
| <div id="Buttons_Model_Tensorrt_Cpu" style="margin: auto; width: 1300px; height: auto;"> | | <div id="chart_cpu_coral" style="margin: auto; width: 800px; height: 500px;"></div> |
| <button class="button" id="show_inceptionv1_tensorrt_cpu">Show InceptionV1 </button>
| |
| <button class="button" id="show_inceptionv2_tensorrt_cpu">Show InceptionV2 </button>
| |
| <button class="button" id="show_inceptionv3_tensorrt_cpu">Show InceptionV3 </button>
| |
| <button class="button" id="show_inceptionv4_tensorrt_cpu">Show InceptionV4 </button>
| |
| <button class="button" id="show_tinyyolov2_tensorrt_cpu">Show TinyYoloV2 </button>
| |
| <button class="button" id="show_tinyyolov3_tensorrt_cpu">Show TinyYoloV3 </button>
| |
| </div>
| |
| <br><br>
| |
| <div id="chart_tensorrt_cpu" style="margin: auto; width: 800px; height: 500px;"></div>
| |
| <br><br>
| |
| <div id="Buttons_Backend_Tensorrt_Cpu" style="margin: auto; width: 600px; height: auto;">
| |
| <button class="button" id="show_tensorrt_cpu">Show TensorRT </button>
| |
| </div>
| |
| <div id="chart_tensorrt1_cpu" style="margin: auto; width: 800px; height: 500px;"></div>
| |
| <br><br>
| |
|
| |
|
| <script> | | <script> |
| google.charts.load('current', {'packages':['corechart', 'bar']}); | | google.charts.load('current', {'packages':['corechart', 'bar']}); |
| google.charts.setOnLoadCallback(drawStuffCpuTensorrt); | | google.charts.setOnLoadCallback(drawStuffCoralCpu); |
| | | |
| function drawStuffCpuTensorrt() { | | function drawStuffCoralCpu() { |
|
| |
|
| var tensorrt_chartDiv_cpu = document.getElementById('chart_tensorrt_cpu'); | | var chartDiv_Cpu_Coral = document.getElementById('chart_cpu_coral'); |
| var tensorrt_chartDiv1_cpu = document.getElementById('chart_tensorrt1_cpu');
| |
|
| |
|
| var table_backend_platform_tensorrt_cpu = google.visualization.arrayToDataTable([ | | var table_models_cpu_coral = google.visualization.arrayToDataTable([ |
| ['Platform', //Column 0 | | ['Model', //Column 0 |
| 'InceptionV1 \n TensorRT', //Column 1 | | 'TensorFlow Lite \n Coral', |
| 'InceptionV2 \n TensorRT', //Column 2
| | 'TensorFlow Lite EdgeTPU \n Coral'], //Column 1 |
| 'InceptionV3 \n TensorRT', //Column 3
| | ['InceptionV1', 73, 32], //row 1 |
| 'InceptionV4 \n TensorRT', //Column 4
| | ['InceptionV2', 72, 37], //row 2 |
| 'TinyYoloV2 \n TensorRT', //Column 5
| | ['InceptionV3', 74, 14], //row 3 |
| 'TinyYoloV3 \n TensorRT'], //Column 6 | | ['InceptionV4', 0, 5], //row 4 |
| ['Nano', 18, 0, 18, 20, 20, 0],
| | ['MobileNetV2', 0, 34], //row 5 |
| ['TX2', 21, 0, 10, 7, 19, 0],
| | ['MobileNetV2 + SSD', 0, 45] //row 6 |
| ['Xavier', 32, 0, 6, 3, 16, 0]
| |
| ]);
| |
| var table_model_platform_tensorrt_cpu = google.visualization.arrayToDataTable([
| |
| ['Model', //Column 0
| |
| 'TensorRT \n Nano', //Column 1
| |
| 'TensorRT \n TX2', //Column 2
| |
| 'TensorRT \n Xavier'], //Column 3
| |
| ['InceptionV1', 18, 21, 32], //row 1 | |
| ['InceptionV2', 0, 0, 0], //row 2 | |
| ['InceptionV3', 18, 10, 6], //row 3 | |
| ['InceptionV4', 20, 7, 3], //row 4 | |
| ['TinyYoloV2', 20, 19, 16], //row 5 | |
| ['TinyYoloV3', 0, 0, 0] //row 6 | |
| ]); | | ]); |
| var tensorrt_materialOptions_cpu = { | | var Coral_materialOptions_cpu = { |
| width: 320,
| |
| chart: {
| |
| title: 'Backend Vs Platform per model',
| |
| },
| |
| series: {
| |
| },
| |
| axes: {
| |
| y: {
| |
| distance: {side: 'left',label: 'CPU Usage'}, // Left y-axis.
| |
| }
| |
| }
| |
| };
| |
| var tensorrt_materialOptions1_cpu = {
| |
| width: 900, | | width: 900, |
| chart: { | | chart: { |
| title: 'Model Vs Platform per backend', | | title: 'Model Vs CPU Load per backend', |
| }, | | }, |
| series: { | | series: { |
Line 1,398: |
Line 810: |
| axes: { | | axes: { |
| y: { | | y: { |
| distance: {side: 'left',label: 'CPU Usage'}, // Left y-axis. | | distance: {side: 'left',label: 'CPU Load'}, // Left y-axis. |
| } | | } |
| } | | } |
| }; | | }; |
|
| |
|
| var materialChart_tensorrt_cpu = new google.charts.Bar(tensorrt_chartDiv_cpu); | | var materialChart_coral_cpu = new google.charts.Bar(chartDiv_Cpu_Coral); |
| var materialChart_tensorrt_cpu1 = new google.charts.Bar(tensorrt_chartDiv1_cpu); | | view_coral_cpu = new google.visualization.DataView(table_models_cpu_coral); |
| view_tensorrt_cpu = new google.visualization.DataView(table_backend_platform_tensorrt_cpu);
| |
| view_tensorrt_cpu1 = new google.visualization.DataView(table_model_platform_tensorrt_cpu);
| |
|
| |
|
| function drawMaterialChart() { | | function drawMaterialChart() { |
| var materialChart_tensorrt_cpu = new google.charts.Bar(tensorrt_chartDiv_cpu); | | var materialChart_coral_cpu = new google.charts.Bar(chartDiv_Cpu_Coral); |
| var materialChart_tensorrt_cpu1 = new google.charts.Bar(tensorrt_chartDiv1_cpu); | | materialChart_coral_cpu.draw(table_models_cpu_coral, google.charts.Bar.convertOptions(Coral_materialOptions_cpu)); |
| materialChart_tensorrt_cpu.draw(table_backend_platform_tensorrt_cpu, google.charts.Bar.convertOptions(tensorrt_materialOptions_cpu));
| |
| materialChart_tensorrt_cpu1.draw(table_model_platform_tensorrt_cpu, google.charts.Bar.convertOptions(tensorrt_materialOptions1_cpu));
| |
|
| |
|
| init_charts(); | | init_charts(); |
| } | | } |
| function init_charts(){ | | function init_charts(){ |
| view_tensorrt_cpu.setColumns([0,1]); | | view_coral_cpu.setColumns([0,1, 2]); |
| view_tensorrt_cpu.hideColumns([2, 3, 4, 5, 6]);
| | materialChart_coral_cpu.draw(view_coral_cpu, Coral_materialOptions_cpu); |
| materialChart_tensorrt_cpu.draw(view_tensorrt_cpu, tensorrt_materialOptions_cpu); | | } |
| view_tensorrt_cpu1.setColumns([0,1,2,3]);
| | drawMaterialChart(); |
| materialChart_tensorrt_cpu1.draw(view_tensorrt_cpu1, tensorrt_materialOptions1_cpu);
| |
| } | | } |
|
| |
|
| // REF_MODEL
| |
| /*Select the Model that you want to show in the chart*/
| |
| var show_inceptionv1_tensorrt_cpu = document.getElementById('show_inceptionv1_tensorrt_cpu');
| |
| show_inceptionv1_tensorrt_cpu.onclick = function () {
| |
| view_tensorrt_cpu.setColumns([0,1]);
| |
| view_tensorrt_cpu.hideColumns([2, 3, 4, 5, 6]);
| |
| materialChart_tensorrt_cpu.draw(view_tensorrt_cpu, tensorrt_materialOptions_cpu);
| |
| }
| |
| var show_inceptionv2_tensorrt_cpu = document.getElementById('show_inceptionv2_tensorrt_cpu');
| |
| show_inceptionv2_tensorrt_cpu.onclick = function () {
| |
| view_tensorrt_cpu.setColumns([0,2]);
| |
| view_tensorrt_cpu.hideColumns([1, 3, 4, 5, 6]);
| |
| materialChart_tensorrt_cpu.draw(view_tensorrt_cpu, tensorrt_materialOptions_cpu);
| |
| }
| |
| var show_inceptionv3_tensorrt_cpu = document.getElementById('show_inceptionv3_tensorrt_cpu');
| |
| show_inceptionv3_tensorrt_cpu.onclick = function () {
| |
| view_tensorrt_cpu.setColumns([0,3]);
| |
| view_tensorrt_cpu.hideColumns([1, 2, 4, 5, 6]);
| |
| materialChart_tensorrt_cpu.draw(view_tensorrt_cpu, tensorrt_materialOptions_cpu);
| |
| }
| |
| var show_inceptionv4_tensorrt_cpu = document.getElementById('show_inceptionv4_tensorrt_cpu');
| |
| show_inceptionv4_tensorrt_cpu.onclick = function () {
| |
| view_tensorrt_cpu.setColumns([0,4]);
| |
| view_tensorrt_cpu.hideColumns([1, 2, 3, 5, 6]);
| |
| materialChart_tensorrt_cpu.draw(view_tensorrt_cpu, tensorrt_materialOptions_cpu);
| |
| }
| |
| var show_tinyyolov2_tensorrt_cpu = document.getElementById('show_tinyyolov2_tensorrt_cpu');
| |
| show_tinyyolov2_tensorrt_cpu.onclick = function () {
| |
| view_tensorrt_cpu.setColumns([0,5]);
| |
| view_tensorrt_cpu.hideColumns([1, 2, 3, 4, 6]);
| |
| materialChart_tensorrt_cpu.draw(view_tensorrt_cpu, tensorrt_materialOptions_cpu);
| |
| }
| |
| var show_tinyyolov3_tensorrt_cpu = document.getElementById('show_tinyyolov3_tensorrt_cpu');
| |
| show_tinyyolov3_tensorrt_cpu.onclick = function () {
| |
| view_tensorrt_cpu.setColumns([0,6]);
| |
| view_tensorrt_cpu.hideColumns([1, 2, 3, 4, 5]);
| |
| materialChart_tensorrt_cpu.draw(view_tensorrt_cpu, tensorrt_materialOptions_cpu);
| |
| }
| |
| // REF_BACKEND
| |
| /*Select the Model that you want to show in the chart*/
| |
| var show_tensorrt_cpu = document.getElementById('show_tensorrt_cpu');
| |
| show_tensorrt_cpu.onclick = function () {
| |
| view_tensorrt_cpu1.setColumns([0,1,2,3]);
| |
| materialChart_tensorrt_cpu1.draw(view_tensorrt_cpu1, tensorrt_materialOptions1);
| |
| }
| |
| drawMaterialChart();
| |
| };
| |
| </script> | | </script> |
|
| |
|
| </html> | | </html> |
|
| |
|
| |
|
| |
|
| <noinclude> | | <noinclude> |
| {{GstInference/Foot|Example Applications/DispTec|Model Zoo}} | | {{GstInference/Foot|Example Applications/DispTec|Model Zoo}} |
| </noinclude> | | </noinclude> |