近年來,JavaScript 作為開發機器人應用程式的程式語言獲得了極大的普及。其多功能性、易用性和廣泛的生態系統使其成為建立互動式智慧機器人的絕佳選擇。機器人技術最令人興奮的方面之一是電腦視覺,它使機器人能夠感知和解釋其環境。
在本文中,我們將探討如何使用 JavaScript 來實現電腦視覺和物件辨識任務。我們將深入研究電腦視覺背後的理論,討論相關的 JavaScript 程式庫和框架,並提供具有詳細程式碼片段及其相應輸出的實際範例。
電腦視覺是一個專注於使電腦能夠從數位影像或影片中獲得高級理解的研究領域。它涉及處理視覺數據、提取有意義的資訊以及根據該資訊做出決策。電腦視覺涵蓋影像辨識、物件偵測、場景理解等各種任務。在機器人技術背景下,電腦視覺在使機器人有效感知周圍環境並與其互動方面發揮著至關重要的作用。
得益於強大的函式庫和框架,JavaScript 在電腦視覺領域取得了重大進展。 TensorFlow.js、OpenCV.js 和 Tracking.js 是著名的 JavaScript 工具,允許開發人員直接在 JavaScript 中實作高階電腦視覺演算法。這些庫提供了廣泛的功能,包括影像過濾、特徵提取、物件識別等。此外,JavaScript 與瀏覽器的兼容性使其能夠執行即時處理並與攝影機和視訊來源交互,使其成為機器人應用程式中電腦視覺任務的理想語言。
TensorFlow.js 是 Google 開發的開源 JavaScript 函式庫,旨在在瀏覽器中實現機器學習和深度學習。它提供了一套豐富的工具用於訓練和部署模型,包括對物件辨識任務的支援。 TensorFlow.js 讓開發人員可以利用預訓練模型和遷移學習技術輕鬆執行物件辨識。
為了說明使用 TensorFlow.js 進行物件識別,我們來看一個識別不同水果的範例。第一步是收集水果圖像資料集並相應地標記它們。此資料集將作為模型的訓練資料。 TensorFlow.js 支援遷移學習,其中涉及使用收集的資料集微調 MobileNet 或 ResNet 等預訓練模型。這個過程有助於模型學習識別特定的水果物體。
模型訓練完成後,可以使用 tf.loadLayersModel 函數將其載入到 JavaScript 中。接下來,我們可以使用 getUserMedia API 從使用者的相機捕獲影片並將其顯示在畫布元素上。畫布將用作執行物件檢測的視口。
為了執行物件偵測,我們定義了一個名為 detectorObjects 的函數。此函數連續捕獲視訊來源中的幀,對其進行處理,並預測每個幀中存在的物件。
以下程式碼片段示範了使用 TensorFlow.js 實作物件辨識 -
// Load the model const model = await tf.loadLayersModel('model/model.json'); // Capture video from the camera const video = document.getElementById('video'); const canvas = document.getElementById('canvas'); const context = canvas.getContext('2d'); navigator.mediaDevices.getUserMedia({ video: true }) .then(stream => { video.srcObject = stream; video.play(); detectObjects(); }); // Perform object detection function detectObjects() { context.drawImage(video, 0, 0, 300, 300); const image = tf.browser.fromPixels(canvas); const expandedImage = image.expandDims(0); const predictions = model.predict(expandedImage); // Process predictions predictions.array().then(data => { const maxIndex = data[0].indexOf(Math.max(...data[0])); const classes = ['apple', 'banana', 'orange']; const prediction = classes[maxIndex]; console.log('Detected:', prediction); }); requestAnimationFrame(detectObjects); }
該程式碼從使用者的攝影機擷取視頻,並對視訊來源的每一幀連續執行物件偵測。對於每一幀,程式碼執行以下步驟 -
它將目前影片幀繪製到畫布元素上。
然後使用 tf.browser.fromPixels 將畫布圖像轉換為 TensorFlow.js 張量。
使用 ExpandDims 擴展影像張量以符合模型的輸入形狀。
使用擴展的圖像張量呼叫模型的預測函數以獲得預測。
使用 array() 將預測轉換為 JavaScript 陣列。
透過尋找預測數組中最大值的索引來識別最高預測值。
預先定義的類別數組(例如,['apple'、'banana'、'orange'])用於將索引對應到對應的物件標籤。
使用 console.log('Detected:', Prediction) 將偵測到的物件標籤記錄到控制台。
實際輸出將根據視訊來源中存在的物件和訓練模型的準確性而有所不同。例如,如果視訊來源包含蘋果,則程式碼可能會將「偵測到:蘋果」輸出到控制台。同樣,如果存在香蕉,則輸出可能是“檢測到:香蕉。
總之,JavaScript 憑藉其廣泛的函式庫和框架,為機器人技術中的電腦視覺和物件辨識提供了強大的功能。透過利用 TensorFlow.js 等工具,開發人員可以訓練模型、執行即時物件偵測,並使機器人能夠有效地感知和理解其環境。 JavaScript 的多功能性和瀏覽器相容性使其成為建立智慧和互動式機器人系統的一種有前景的語言。隨著機器人領域的不斷發展,探索 JavaScript 機器人和電腦視覺進一步為創新和發展開闢了令人興奮的可能性。
以上是JavaScript 機器人技術:使用 JavaScript 進行電腦視覺與物件識別的詳細內容。更多資訊請關注PHP中文網其他相關文章!