首頁 > 後端開發 > Python教學 > 使用 TensorFlow.js 和 COCO-SSD 在瀏覽器中利用即時物件偵測

使用 TensorFlow.js 和 COCO-SSD 在瀏覽器中利用即時物件偵測

王林
發布: 2024-07-25 12:59:13
原創
1037 人瀏覽過

Harnessing Real-Time Object Detection in the Browser with TensorFlow.js and COCO-SSD

簡介

近年來,機器學習領域取得了顯著的進步,特別是在將強大的模型引入 Web 應用程式方面。其中一項突破是能夠直接在 Web 瀏覽器中執行即時物件偵測,這要歸功於 TensorFlow.js 等技術和 COCO-SSD 等模型。本文探討了開發人員如何利用這些工具來創建互動式應用程序,以檢測即時網路攝影機串流、上傳的圖像或視訊中的對象,所有這些都不需要伺服器端處理。

了解 TensorFlow.js 和 COCO-SSD

TensorFlow.js 是 Google 開發的 JavaScript 函式庫,讓開發人員直接在瀏覽器中執行機器學習模型。它提供了一種使用 JavaScript API 部署預訓練模型或訓練新模型的方法,使其易於存取且易於與 Web 應用程式整合。 COCO-SSD(上下文中的常見物件 - Single Shot MultiBox Detector)是一種流行的用於物件偵測的預訓練模型。它經過優化,可以即時檢測各種物體,使其適合互動式應用程式。

設定環境

首先,開發人員需要設定他們的開發環境。這通常涉及:

  • 使用腳本標籤在 HTML 文件中包含 TensorFlow.js 和 COCO-SSD:
  <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@latest"></script>
  <script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/coco-ssd@latest"></script>
登入後複製
  • 建立 HTML 結構來處理影片輸入、圖片上傳和控制按鈕等使用者介面元素。

建立應用程式

1. 處理使用者輸入

該應用程式允許使用者在不同的輸入類型之間進行選擇:

  • 網路攝影機:直接從使用者的網路攝影機擷取即時視訊來源。
  • 圖像:允許使用者從其裝置上傳圖像檔案。
  • 影片:允許使用者上傳影片檔案以進行物件偵測。
<div id="inputSelection">
    <label><input type="radio" name="inputType" value="webcam" checked> Webcam</label>
    <label><input type="radio" name="inputType" value="image"> Image</label>
    <label><input type="radio" name="inputType" value="video"> Video</label>
</div>
<input type="file" id="imageInput" accept="image/*" style="display:none;">
<input type="file" id="videoInput" accept="video/*" style="display:none;">
登入後複製

2. 顯示輸入和結果

應用程式使用

<div id="videoContainer">
    <video id="videoElement" autoplay playsinline></video>
    <div id="infoBox" class="infoBox">
        <p><strong>Detected Object:</strong> <span id="objectLabel"></span></p>
        <p><strong>Confidence:</strong> <span id="confidenceScore"></span></p>
    </div>
</div>
<img id="imageDisplay">
<video id="videoDisplay" controls loop></video>
<canvas id="outputCanvas"></canvas>
登入後複製

3. 實作物件檢測邏輯

JavaScript (script.js) 使用 TensorFlow.js 和 COCO-SSD 處理物件偵測邏輯。這涉及:

  • 初始化模型並非同步載入:
  async function loadModel() {
      const model = await cocoSsd.load();
      return model;
  }
登入後複製
  • 對選定的輸入(影片或影像)執行偵測並用結果更新 UI:
  async function detectObjects(input) {
      const model = await loadModel();
      const predictions = await model.detect(input);
      // Update UI with predictions
  }
登入後複製
  • 處理不同的輸入類型(網路攝影機、影像、視訊)並根據使用者操作觸發偵測。

4. 使用者互動和控制

該應用程式包括用於控制物件偵測的按鈕:

  • 開始偵測:根據選取的輸入啟動物件偵測。
  • 停止偵測:暫停或停止偵測過程。
  • 截圖:允許使用者截取目前偵測結果的螢幕截圖。
<div id="controls">
    <button id="startButton">Start Detection</button>
    <button id="stopButton" disabled>Stop Detection</button>
    <button id="captureButton" disabled>Capture Screenshot</button>
</div>
登入後複製

5. 提升使用者體驗

為了提供無縫體驗,該應用程式包含一個載入指示器(

Loading...
),用於在TensorFlow.js 和COCO-SSD 模型載入時通知用戶正在載入。

結論

總之,TensorFlow.js 與 COCO-SSD 的結合為直接在網頁瀏覽器中進行即時物件偵測開闢了令人興奮的可能性。本文示範了建構此類應用程式所涉及的基本元件和步驟,從設定環境到實現物件偵測邏輯和增強使用者互動。開發人員現在可以利用這些技術來創建互動式和響應式 Web 應用程序,從而突破網路機器學習的可能性界限。隨著這些技術的不斷發展,未來將迎來更加複雜和易於存取的人工智慧網路體驗。

這是 Github 儲存庫

以上是使用 TensorFlow.js 和 COCO-SSD 在瀏覽器中利用即時物件偵測的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板