基於 TensorFlow.js 的遷移學習圖像分類器


基於 TensorFlow.js 的遷移學習圖像分類器

引 言

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

你將學到什麼?

√ 如何加載預訓練的 MobileNet 模型並對新數據進行預測

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

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

讓我們開始吧!

基於 TensorFlow.js 的遷移學習圖像分類器

準備

你將需要如下準備:

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

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

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

加載 TensorFlow.js 和 MobileNet 模型

在編輯器中打開 index.html 並添加以下內容:

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

接下來,在代碼編輯器中打開/創建 index.js 文件,添加以下代碼:

在瀏覽器中測試 MobileNet 的預測

如果要運行該網頁,你只需要在 Web 瀏覽器中打開

index.html 即可。如果你正在使用雲控制檯,只需刷新預覽頁面。

你應該會在開發者工具的 JavaScipt 控制檯中看到一張狗的照片,這是 MobileNet 的預測結果!注意,這可能需要一點時間來下載模型,請耐心等待!

這個圖像是否被正確分類?

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

通過網絡攝像頭圖像在瀏覽器中執行 MobileNet 預測

現在,讓我們讓它更具交互性和實時性。讓我們設置網絡攝像頭來預測由網絡攝像頭傳輸的圖像。

首先要設置網絡攝像頭的視頻元素。打開 index.html 文件,在

部分中添加如下行,並刪除我們用於加載狗圖像的 標籤。

打開 index.js 文件並將 webcamElement 添加到文件的最頂部。

在同一個 index.js 文件中,在調用 “app()” 函數之前添加網絡攝像頭的設置函數:

現在,在之前添加的 app() 函數中,你可以刪除通過圖像預測的部分,用一個無限循環,通過網絡攝像頭預測代替。

如果你在網頁中打開控制檯,現在你應該會看到 MobileNet 的預測和網絡攝像頭收集到的每一幀圖像。這可能有些荒謬,因為 ImageNet 數據集看起來不太像出現在網絡攝像頭中的圖像。你可以把狗的照片放在你的手機上,再放在筆記本電腦的攝像頭前來測試這一點。

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

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

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

在 index.html 的

標籤的末尾添加 KNN 分類器的導入(你仍然需要 MobileNet,所以不要刪除它的導入):

index.html 視頻部分下面添加三個按鈕。這些按鈕將用於向模型添加訓練圖像。

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

更新 app 函數

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

可選項:擴展示例

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

你學到了什麼

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

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

基於 TensorFlow.js 的遷移學習圖像分類器

為了讓大家儲備技術,由黑胡桃實驗室和 TensorFlow 團隊工程師共同開發的 TensorFlow 速成課程已開放給大家學習!大家務必使用電腦訪問 https://blackwalnut.tech/tfboost/introduce ,頁面底端的通關指南會幫助你學習,當然你也可以參考個人中心的任務列表一步一步前進。如果你最終完成了任務列表的全部任務,就可獲得 TensorFlow Boost 學習認證證書!


分享到:


相關文章: