首頁>技術>

引 言

在本文中,你將學習如何建立一個簡單的“可學習機器”。這是一個自定義的影象分類器,你將使用 TensorFlow.js 這個強大而靈活的 Javascript 機器學習庫,在瀏覽器中即時訓練。首先,你將載入並執行一個名為 MobileNet 的流行的預訓練模型來在瀏覽器中進行影象分類。然後,你將使用“遷移學習”技術,這項技術將使用預訓練好的 MobileNet 模型為你的應用定製以及引導訓練。

你將學到什麼?

√ 如何載入預訓練的 MobileNet 模型並對新資料進行預測

√ 如何通過網路攝像頭進行預測

√ 如何使用 MobileNet 模型的內部啟用值,在一套由網路攝像頭動態定義的新類上做遷移學習

讓我們開始吧!

準備

你將需要如下準備:

1.Chrome 或其他現代瀏覽器的最新版本。

2.一個文字編輯器,可以在你的機器上本地執行,也可以通過 Codepen 或 Glitch 等在 Web 上執行。

3.了解 HTML、CSS、JavaScripe 和 Chrome 開發者工具(或你首選瀏覽器的開發者工具)。

載入 TensorFlow.js 和 MobileNet 模型

在編輯器中開啟 index.html 並新增以下內容:

在瀏覽器中設定 MobileNet 用於預測

接下來,在程式碼編輯器中開啟/建立 index.js 檔案,新增以下程式碼:

在瀏覽器中測試 MobileNet 的預測

如果要執行該網頁,你只需要在 Web 瀏覽器中開啟 index.html 即可。如果你正在使用雲控制檯,只需重新整理預覽頁面。

這個影象是否被正確分類?

值得注意的是,這也適用於手機!

通過網路攝像頭影象在瀏覽器中執行 MobileNet 預測

現在,讓我們讓它更具互動性和實時性。讓我們設定網路攝像頭來預測由網路攝像頭傳輸的影象。

首先要設定網路攝像頭的視訊元素。開啟 index.html 檔案,在 <body> 部分中新增如下行,並刪除我們用於載入狗影象的 <img> 標籤。

開啟 index.js 檔案並將 webcamElement 新增到檔案的最頂部。

在同一個 index.js 檔案中,在呼叫 “app()” 函式之前新增網路攝像頭的設定函式:

如果你在網頁中開啟控制檯,現在你應該會看到 MobileNet 的預測和網路攝像頭收集到的每一幀影象。這可能有些荒謬,因為 ImageNet 資料集看起來不太像出現在網路攝像頭中的影象。你可以把狗的照片放在你的手機上,再放在膝上型電腦的攝像頭前來測試這一點。

在 MobileNet 預測的基礎上新增一個自定義的分類器

現在,讓我們把它變得更加實用。我們使用網路攝像頭動態建立一個自定義的 3 物件的分類器。我們將通過 MobileNet 進行分類,但這次我們將使用特定網路攝像頭影象在模型的內部表示(啟用值)來進行分類。

我們將使用一個叫做 "K-Nearest Neighbors Classifier" 的模組,他將有效的讓我們把攝像頭採集的影象(實際上是 MobileNet 中的啟用值)分成不同的類別,當用戶要求做出預測時,我們只需選擇擁有與待預測影象最相似的啟用值的類即可。

在 index.html 的 <head> 標籤的末尾新增 KNN 分類器的匯入(你仍然需要 MobileNet,所以不要刪除它的匯入):

在 index.js 的頂部,建立一個分類器

更新 app 函式

現在,當你載入 index.html 頁面時,你可以使用常用物件或面部表情/手勢為這三個類中的每一個類捕獲影象。每次單擊其中一個 "Add" 按鈕,就會向該類新增一個影象作為訓練例項。當你這樣做的時候,模型會繼續預測網路攝像頭的影象,並實時顯示結果。

可選項:擴充套件示例

現在嘗試新增另一個代表沒有動作的類!

你學到了什麼

你使用 Tensorflow.js 實現了一個簡單的機器學習 Web 應用程式。你載入並使用了一個預訓練過的 MobileNet 模型來對來自網路攝像頭中的影象進行分類然後自定義了模型,將影象分類為三個自定義的類別。

原文連結:https://codelabs.developers.google.com/codelabs/tensorflowjs-teachablemachine-codelab/#0

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Spring容器是什麼?