Advertisement
filiptronicek

predict.js

Apr 23rd, 2020
768
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. $("#image-selector").change(function () {
  2.   let reader = new FileReader();
  3.   reader.onload = function () {
  4.     let dataURL = reader.result;
  5.     $("#selected-image").attr("src", dataURL);
  6.     $("#prediction-list").empty();
  7.   };
  8.  
  9.   let file = $("#image-selector").prop("files")[0];
  10.   reader.readAsDataURL(file);
  11. });
  12.  
  13. let model;
  14. $(document).ready(async function () {
  15.   $(".progress-bar").show();
  16.   console.log("Loading model...");
  17.   model = await tf.loadGraphModel("model/model.json");
  18.   console.log("Model loaded.");
  19.   $(".progress-bar").hide();
  20. });
  21.  
  22. $("#predict-button").click(async function () {
  23.   let image = $("#selected-image").get(0);
  24.  
  25.   // Pre-process the image
  26.   console.log("Loading image...");
  27.   let tensor = tf.browser
  28.     .fromPixels(image, 3)
  29.     .resizeNearestNeighbor([224, 224]) // change the image size
  30.     .expandDims()
  31.     .toFloat()
  32.     .reverse(-1); // RGB -> BGR
  33.   let predictions = await model.predict(tensor).data();
  34.   console.log(predictions);
  35.   let top5 = Array.from(predictions)
  36.     .map(function (p, i) {
  37.       // this is Array.map
  38.       return {
  39.         probability: p,
  40.         className: TARGET_CLASSES[i], // we are selecting the value from the obj
  41.       };
  42.     })
  43.     .sort(function (a, b) {
  44.       return b.probability - a.probability; // sort classes by probability
  45.     })
  46.     .slice(0, 2);
  47.  
  48.   $("#prediction-list").empty();
  49.   top5.forEach(function (p) {
  50.     $("#prediction-list").append(
  51.       `<li>${p.className}: ${p.probability.toFixed(6)}</li>`
  52.     );
  53.   });
  54. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement