自訂影像辨識

最後更新日期:2022-06-29 17:29:46

為方便自行製作影像辨識的模型,Google提供了一個所見即所得的互動平台 - Teachable Machine,方便完成自訂的辨識模型。

本文前半部份,以步驟式的操作 Teachable Machine,來實作辨識攝影機拍攝到的「場景背景」、「LEGO積木 - 門」和「LEGO積木 - 窗戶」,並將結果匯出成模型檔案。

後半部份演示將模型檔案,使用於積木程式中,實現您欲完成的影像辨識應用。

Teachable Machine官方網頁畫面

# Teachable Machine是什麼?

最簡單的方式來訓練電腦,辨識您的圖片(影像)、音訊和姿勢。(如上圖描述)
輕鬆快速地建立機器學習模型,而不需要編寫程式碼或具備專業知識,即可將之使用於網站、應用程式或其它地方。

# 實作目標

利用Teachable Machine來辨識樂高玩具的「門」及「窗」,請參考下方影片。

底下提供上方影片中,所使用的辨識模型Model及測試用的圖片檔:(以下動作在樹莓派上進行)

  1. 辨識模型Model檔案(建議存放在/home/pi/Downloads/home/pi/下載(新版本OS路徑) 資料夾中)
  2. 測試用圖片檔案(下載後,解開壓縮使用,如下圖)

    五個門、窗積木

快速測試範例步驟:(以下動作在樹莓派上進行)

  1. 樹莓派連接上Webcam裝置,將Webcam對準樹莓派螢幕。
  2. 下載本範例積木程式 teachable_machine_01.rpb
  3. 開啟積木程式,依照步驟執行代理程式。
  4. 於「積木程式」載入「teachable_machine_01.rpb」檔案。
  5. 依照實際存放位置,調整Model壓縮檔所在路徑。
    載入辨識範例積木

  6. 執行程式,並開啟剛下載的「測試用圖片」任一圖檔,讓Webcam進行辨識。(紅色箭頭為辨識類別綠色箭頭為信心值,可以觀察不同物件的辨識結果。)
  7. 設備放置場景 辨識結果判讀

# 實作步驟

  • 開始圖片專案
  • 給定分類標籤名稱及圖像資料
  • 訓練模型
  • 測試並驗證準確性
  • 匯出模型
  • 儲存專案
  • 使用TM辨識積木
  • 整合電子零件應用

# 開始圖片專案

開啟Teachable Machine,並點擊畫面中的「Get Started」按鈕。

Teachable Machine官方網頁畫面

★ 題外話,此頁面具備多國語系可選擇,請將頁面捲動至最底端,點擊「English」後,可選擇欲更換的語系。

Teachable Machine - 多語系選擇

選擇下圖中的「Image Project」項目。

Teachable Machine - Image Project

選擇下圖中的「Standard image model」項目。

Teachable Machine - Standard image model

# 給定分類標籤名稱及圖像資料

專案起始預設有兩個分類,名稱分別為Class1及Class2,並提供輔助說明視窗。

Image Project預設畫面

此篇要讓電腦學會辨識樂高積木的「門」、「窗戶」兩種物件,還需要考慮非此兩物件或是背景的狀態,所以共需要三個分類標籤,並透過USB Webcam來收集圖片(本文使用的設備是Logitech C170網路攝影機)。

類別:背景(background)

依照下圖順序及說明操作。

擷取background類別圖片1

下圖是Webcam影像擷取畫面,當點擊「Hold to Record」按鈕時,就會拍照作為訓練使用。

擷取background類別圖片2

擷取background類別圖片3

※若背景為固定區域,且光線變化不大時,蒐集的圖片可以較少張,否則建議至少20張以上較佳。

類別:門(door)

重複擷取background的方式,進行「門」的標籤命名及圖片擷取,透過不同的擺放位置,增加辨識門的準確性。

擷取door類別圖片

類別:窗戶(window)

重複上述方法,完成「窗戶」的類別。

擷取window類別圖片

# 訓練模型

點擊下圖中「Train Model」按鈕。

訓練模型1

訓練模型中...

訓練模型2

訓練模型3

訓練中,讓瀏覽器保持在此頁籤,不要切換,並耐心等待片刻。

訓練模型4

# 測試並驗證準確性

測試並驗證準確性1

關閉提示訊息視窗,此時已經在測試驗證階段。下方「Output」區域為辨識結果及準確性,可即時更換Webcam前方的影像,驗證辨識的效果。

測試並驗證準確性2

更換辨識物件,可以看到辨識準確性的變化過程。

測試並驗證準確性3

測試並驗證準確性4

測試並驗證準確性5

※若在反覆驗證後,發現辨識結果不佳,最簡單的調整方式為回到圖片蒐集的步驟,增刪部份圖像來修正準確性。

# 匯出模型

此步驟匯出的model檔案,可提供給稍後介紹的積木程式使用。

點擊「Export Model」按鈕。

匯出模型1

因模型會被應用於樹莓派上,考量其硬體限制,建議依照下圖順序,匯出模型。

  1. 切換至「Tensorflow Lite」頁籤
  2. 選擇「Quantized」項目
  3. 點擊「Download my model」按鈕,下載model檔案

匯出模型2

轉檔過程良久,請稍待片刻。

匯出模型3

檔案下載完成,存放路徑及檔名為「/home/pi/Downloads/converted_tflite_quantized.zip」

匯出模型4

此模型壓縮檔內含兩個檔案,分別為模式辨識特徵及標籤檔案。

匯出模型5

# 儲存專案

點擊左上角「Teachable Machine」按鈕後,可以選擇儲存至雲端Drive,或是本地端的檔案,以供未來異動使用。

儲存專案

# 使用TM辨識積木

Teachable Machine相關程式積木位於「AI影像辨識」→「Teachable Machine」。

Teachable Machine相關程式積木

底下示範如何在程式積木中,使用由Teachable Machine匯出的Model來辨識並獲得辨識結果。
※若對積木使用方式不熟悉,可以先參考「樹莓派基礎」→「積木程式初始化設定」等教學文件。

Teachable Machine使用範例程式

下載本範例積木程式 teachable_machine_01.rpb

程式運作結果如下影片:

場景設置如下:

場景設置01

下圖為Webcam視窗畫面,螢幕左上方黃色字體依序顯示三項資訊:辨識結果(TM訓練時所標記的Label)、信心值(介於 0 ~ 1 之間)及FPS(Frame per second)。

Webcam視窗畫面

下方說明兩個重要的積木功能:
1. 初始化Teachable Machine元件積木

初始化Teachable Machine元件積木

  • 裝置編號:預設為0。(若您連接超過1個USB Webcam,可以使用其他編號。)
  • 視窗解析度:設置上圖顯示的Test視窗大小(寬、高的像素值)。
  • Model壓縮檔所在路徑:此路徑為Model放置於樹莓派的位置及檔名。
  • 顯示Camera畫面:預設會顯示Test視窗,若取消勾選,執行程式時,不會顯示Test視窗。

2. 影像辨識

影像辨識積木

  • 此積木建議放在「迴圈」中,因該積木只會進行一次影像辨識。在完成影像辨識動作後,會回傳True/False值,可以用來判斷是否結束迴圈。
  • 當Test視窗取得焦點時,按下「q」按鍵,此時會回傳False值,進而離開迴圈,並結束程式。

# 整合電子零件應用

此範例結合LED燈,當滿足特定辨識條件時(辨識結果為"window"且信心值 >= 0.8),就點亮LED燈。
※LED燈的線路連接方式,可參考「發光元件」→「LED燈」,有別於該範例,此處LED燈連接的腳位為「11」。

Teachable Machine整合電子零件範例

下載本範例積木程式 teachable_machine_02.rpb

程式運作結果如下影片,後半段影片將"window"側一邊放置,可以發現辨識的信心值在0.8附近震盪,導致LED燈閃爍。

場景設置如下:

場景設置02