11324物聯網系統設計應用 Week14 學習日誌

 

任課老師:王曉璿

學  生:林品彤

        號:ADT110143

一、課程摘要  

1.      線上機器學習模型+Javascript設計應用

2.      設計人員辨識系統:以3 以上為一組,製作人員辨識系統

3.      Google AppSheet 基本設計與應用

 

二、課程網路資源

Teachable Machinehttps://teachablemachine.withgoogle.com/

 

三、課程重要指令語法摘要

參考模型中Javascript 網頁程式

 

       <div>Teachable Machine Image Model</div>

      <button type="button" onclick="init()">Start</button>

      <div id="webcam-container"></div>

      <div id="label-container"></div>

      <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@latest/dist/tf.min.js"></script>

      <script src="https://cdn.jsdelivr.net/npm/@teachablemachine/image@latest/dist/teachablemachine-image.min.js"></script>

      <script type="text/javascript">

      // More API functions here:

      // https://github.com/googlecreativelab/teachablemachine-community/tree/master/libraries/image

 

      // the link to your model provided by Teachable Machine export panel

      const URL = "https://teachablemachine.withgoogle.com/models/Apd4rBQ9o/";

 

      let model, webcam, labelContainer, maxPredictions;

 

      // Load the image model and setup the webcam

      async function init() {

      const modelURL = URL + "model.json";

      const metadataURL = URL + "metadata.json";

 

      // load the model and metadata

      // Refer to tmImage.loadFromFiles() in the API to support files from a file picker

      // or files from your local hard drive

      // Note: the pose library adds "tmImage" object to your window (window.tmImage)

      model = await tmImage.load(modelURL, metadataURL);

      maxPredictions = model.getTotalClasses();

 

     // Convenience function to setup a webcam

     const flip = true; // whether to flip the webcam

     webcam = new tmImage.Webcam(200, 200, flip); // width, height, flip

     await webcam.setup(); // request access to the webcam

     await webcam.play();

     window.requestAnimationFrame(loop);

 

     // append elements to the DOM

     document.getElementById("webcam-container").appendChild(webcam.canvas);

    labelContainer = document.getElementById("label-container");

    for (let i = 0; i < maxPredictions; i++) { // and class labels

    labelContainer.appendChild(document.createElement("div"));

     }

    }

 

    async function loop() {

    webcam.update(); // update the webcam frame

    await predict();

    window.requestAnimationFrame(loop);

    }

 

    // run the webcam image through the image model

    async function predict() {

    // predict can take in an image, video or canvas html element

    const prediction = await model.predict(webcam.canvas);

    for (let i = 0; i < maxPredictions; i++) {

     const classPrediction =

     prediction[i].className + ": " + prediction[i].probability.toFixed(2);

     labelContainer.childNodes[i].innerHTML = classPrediction;

     }

    }

     </script>

 

四、學習心得

一下子下次上課就是大學的最後一堂了,這學期學了很多新的AI軟體,多接觸了很多不同的工具,很期待把這些知識帶到研究所的課程裡!