507
edits
Line 147: | Line 147: | ||
== TensorFlow Lite Benchmarks == | == TensorFlow Lite Benchmarks == | ||
=== FPS measurement === | |||
<html> | <html> | ||
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> | <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> | ||
Line 385: | Line 386: | ||
var showFPS_only = document.getElementById("show_tflite"); | var showFPS_only = document.getElementById("show_tflite"); | ||
showFPS_only.onclick = function() { | showFPS_only.onclick = function() { | ||
view1.setColumns([0,7,8,9,10,11,12]); | |||
view1.hideColumns([1,2,3,4,5,6]); | |||
materialChart1.draw(view1, materialOptions1); | |||
} | |||
/*Select the Platform to filter the data to show in the chart*/ | |||
var show_x86 = document.getElementById('show_x86'); | |||
show_x86.onclick = function() { | |||
view2.setColumns([0,1,7]); | |||
view2.hideColumns([2,3,4,5,6,8,9,10,11,12]); | |||
materialChart2.draw(view2, materialOptions2); | |||
} | |||
var show_x86_gpu = document.getElementById("show_x86_gpu"); | |||
show_x86_gpu.onclick = function() { | |||
view2.setColumns([0,2,8]); | |||
view2.hideColumns([1,3,4,5,6,7,9,10,11,12]); | |||
materialChart2.draw(view2, materialOptions2); | |||
} | |||
var show_tx2 = document.getElementById('show_tx2'); | |||
show_tx2.onclick = function() { | |||
view2.setColumns([0,3,9]); | |||
view2.hideColumns([1,2,4,5,6,7,8,10,11,12]); | |||
materialChart2.draw(view2, materialOptions2); | |||
} | |||
var show_tx2_gpu = document.getElementById("show_tx2_gpu"); | |||
show_tx2_gpu.onclick = function() { | |||
view2.setColumns([0,4,10]); | |||
view2.hideColumns([1,2,3,5,6,7,8,9,11,12]); | |||
materialChart2.draw(view2, materialOptions2); | |||
} | |||
var show_coral = document.getElementById('show_coral'); | |||
show_coral.onclick = function() { | |||
view2.setColumns([0,5,11]); | |||
view2.hideColumns([1,2,3,4,6,7,8,9,10,12]); | |||
materialChart2.draw(view2, materialOptions2); | |||
} | |||
var show_coral_tpu = document.getElementById("show_coral_tpu"); | |||
show_coral_tpu.onclick = function() { | |||
view2.setColumns([0,6,12]); | |||
view2.hideColumns([1,2,3,4,5,7,8,9,10,11]); | |||
materialChart2.draw(view2, materialOptions2); | |||
} | |||
drawMaterialChart(); | |||
}; | |||
</script> | |||
</html> | |||
=== CPU usage measurement === | |||
<html> | |||
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> | |||
<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="Buttons_Model" style="margin: auto; width: 1300px; height: auto;"> | |||
<button class="button" id="show_inceptionv1">Show InceptionV1 </button> | |||
<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: 500px; height: auto;"> | |||
<button class="button" id="show_tensorflow">Show Tensorflow </button> | |||
<button class="button" id="show_tflite">Show Tensorflow-Lite </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> | |||
google.charts.load('current', {'packages':['corechart', 'bar']}); | |||
google.charts.setOnLoadCallback(drawStuff); | |||
function drawStuff() { | |||
var chartDiv = document.getElementById('chart_div'); | |||
var chartDiv1 = document.getElementById('chart_div1'); | |||
var chartDiv2 = document.getElementById('chart_div2'); | |||
var table_backend_platform = google.visualization.arrayToDataTable([ | |||
['Platform', | |||
'InceptionV1 \n Tensorflow', | |||
'InceptionV1 \n Tensorflow-Lite', | |||
'InceptionV2 \n Tensorflow', | |||
'InceptionV2 \n Tensorflow-Lite', | |||
'InceptionV3 \n Tensorflow', | |||
'InceptionV3 \n Tensorflow-Lite', | |||
'InceptionV4 \n Tensorflow', | |||
'InceptionV4 \n Tensorflow-Lite', | |||
'TinyYoloV2 \n Tensorflow', | |||
'TinyYoloV2 \n Tensorflow-Lite', | |||
'TinyYoloV3 \n Tensorflow', | |||
'TinyYoloV3 \n Tensorflow-Lite'], | |||
['x86', 20, 19, 18, 17, 16, 15, 14, 13, 28, 16, 16, 15], | |||
['x86+GPU', 25, 24, 23, 22, 50, 20, 19, 18, 25, 15, 16, 15], | |||
['TX2', 24, 23, 22, 50, 20, 19, 18, 17, 26, 14, 16, 15], | |||
['TX2-GPU', 27, 26, 25, 24, 23, 22, 50, 20, 25, 13, 16, 15], | |||
['Coral', 16, 15, 14, 13, 12, 11, 10, 19, 36, 12, 16, 15], | |||
['Coral+TPU', 18, 17, 16, 15, 14, 13, 12, 11, 31, 11, 16, 15] | |||
]); | |||
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'], | |||
['InceptionV1', 20, 25, 24, 27, 16, 18, 19, 24, 23, 26, 15, 17], | |||
['InceptionV2', 18, 23, 22, 25, 14, 16, 17, 22, 50, 24, 13, 15], | |||
['InceptionV3', 16, 50, 20, 23, 12, 14, 15, 20, 19, 22, 11, 13], | |||
['InceptionV4', 14, 19, 18, 50, 10, 12, 13, 18, 17, 20, 29, 11], | |||
['TinyYoloV2', 15, 16, 16, 23, 12, 13, 13, 17, 17, 28, 19, 15], | |||
['TinyYoloV3', 16, 19, 18, 50, 10, 12, 13, 18, 17, 20, 29, 11] | |||
]); | |||
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'], | |||
['InceptionV1', 20, 25, 24, 27, 16, 18, 19, 24, 23, 26, 15, 17], | |||
['InceptionV2', 18, 23, 22, 25, 14, 16, 17, 22, 50, 24, 13, 15], | |||
['InceptionV3', 16, 50, 20, 23, 12, 14, 15, 20, 19, 22, 11, 13], | |||
['InceptionV4', 14, 19, 18, 50, 10, 12, 13, 18, 17, 20, 29, 18], | |||
['TinyYoloV2', 15, 16, 16, 23, 12, 13, 13, 17, 17, 28, 19, 15], | |||
['TinyYoloV3', 16, 19, 18, 50, 10, 12, 13, 18, 17, 20, 29, 11] | |||
]); | |||
var materialOptions = { | |||
width: 900, | |||
chart: { | |||
title: 'Backend Vs Platform per model', | |||
}, | |||
series: { | |||
0: { axis: 'distance' }, // Bind series 0 to an axis named 'distance'. | |||
}, | |||
axes: { | |||
y: { | |||
distance: {side: 'left',label: 'CPU USAGE'}, // Left y-axis. | |||
} | |||
} | |||
}; | |||
var materialOptions1 = { | |||
width: 900, | |||
chart: { | |||
title: 'Model Vs Platform per backend', | |||
}, | |||
series: { | |||
0: { axis: 'distance' }, // Bind series 0 to an axis named 'distance'. | |||
}, | |||
axes: { | |||
y: { | |||
distance: {side: 'left',label: 'CPU USAGE'}, // Left y-axis. | |||
} | |||
} | |||
}; | |||
var materialOptions2 = { | |||
width: 900, | |||
chart: { | |||
title: 'Model Vs Backend per Platform', | |||
}, | |||
series: { | |||
0: { axis: 'distance' }, // Bind series 0 to an axis named 'distance'. | |||
}, | |||
axes: { | |||
y: { | |||
distance: {side: 'left',label: 'CPU USAGE'}, // Left y-axis. | |||
} | |||
} | |||
}; | |||
var materialChart = new google.charts.Bar(chartDiv); | |||
var materialChart1 = new google.charts.Bar(chartDiv1); | |||
var materialChart2 = new google.charts.Bar(chartDiv2); | |||
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() { | |||
var materialChart = new google.charts.Bar(chartDiv); | |||
var materialChart1 = new google.charts.Bar(chartDiv1); | |||
var materialChart2 = new google.charts.Bar(chartDiv2); | |||
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(); | |||
} | |||
function init_charts(){ | |||
view.setColumns([0,1,2]); | |||
view.hideColumns([3,4,5,6,7,8,9,10,11,12]); | |||
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); | |||
} | |||
/*Select the backend to filter the data to show in the chart*/ | |||
var show_inceptionv1 = document.getElementById('show_inceptionv1'); | |||
show_inceptionv1.onclick = function () { | |||
view.setColumns([0,1,2]); | |||
view.hideColumns([3,4,5,6,7,8,9,10,11,12]); | |||
materialChart.draw(view, materialOptions); | |||
} | |||
var show_inceptionv2 = document.getElementById("show_inceptionv2"); | |||
show_inceptionv2.onclick = function() { | |||
view.setColumns([0,3,4]); | |||
view.hideColumns([1,2,5,6,7,8,9,10,11,12]); | |||
materialChart.draw(view, materialOptions); | |||
} | |||
var show_inceptionv3 = document.getElementById('show_inceptionv3'); | |||
show_inceptionv3.onclick = function() { | |||
view.setColumns([0,5,6]); | |||
view.hideColumns([1,2,3,4,7,8,9,10,11,12]); | |||
materialChart.draw(view, materialOptions); | |||
} | |||
var show_inceptionv4 = document.getElementById("show_inceptionv4"); | |||
show_inceptionv4.onclick = function() { | |||
view.setColumns([0,7,8]); | |||
view.hideColumns([1,2,3,4,5,6,9,10,11,12]); | |||
materialChart.draw(view, materialOptions); | |||
} | |||
var show_tinyyolov2 = document.getElementById("show_tinyyolov2"); | |||
show_tinyyolov2.onclick = function() { | |||
view.setColumns([0,9,10]); | |||
view.hideColumns([1,2,3,4,5,6,7,8,11,12]); | |||
materialChart.draw(view, materialOptions); | |||
} | |||
var show_tinyyolov3 = document.getElementById("show_tinyyolov3"); | |||
show_tinyyolov3.onclick = function() { | |||
view.setColumns([0,11,12]); | |||
view.hideColumns([1,2,3,4,5,6,7,8,9,10]); | |||
materialChart.draw(view, materialOptions); | |||
} | |||
/*Select the backend to filter the data to show in the chart*/ | |||
var button = document.getElementById('show_tensorflow'); | |||
button.onclick = function() { | |||
view1.setColumns([0,1,2,3,4,5,6]); | |||
view1.hideColumns([7,8,9,10,11,12]); | |||
materialChart1.draw(view1, materialOptions1); | |||
} | |||
var showCPU_USAGE_only = document.getElementById("show_tflite"); | |||
showCPU_USAGE_only.onclick = function() { | |||
view1.setColumns([0,7,8,9,10,11,12]); | view1.setColumns([0,7,8,9,10,11,12]); | ||
view1.hideColumns([1,2,3,4,5,6]); | view1.hideColumns([1,2,3,4,5,6]); |
edits