自訂影像辨識
為方便自行製作影像辨識的模型,Google提供了一個所見即所得的互動平台 - Teachable Machine,方便完成自訂的辨識模型。
本文前半部份,以步驟式的操作 Teachable Machine,來實作辨識攝影機拍攝到的「場景背景」、「LEGO積木 - 門」和「LEGO積木 - 窗戶」,並將結果匯出成模型檔案。
後半部份演示將模型檔案,使用於積木程式中,實現您欲完成的影像辨識應用。
# Teachable Machine是什麼?
最簡單的方式來訓練電腦,辨識您的圖片(影像)、音訊和姿勢。(如上圖描述)
輕鬆快速地建立機器學習模型,而不需要編寫程式碼或具備專業知識,即可將之使用於網站、應用程式或其它地方。
# 實作目標
利用Teachable Machine來辨識樂高玩具的「門」及「窗」,請參考下方影片。
底下提供上方影片中,所使用的辨識模型Model及測試用的圖片檔:(以下動作在樹莓派上進行)
快速測試範例步驟:(以下動作在樹莓派上進行)
- 樹莓派連接上Webcam裝置,將Webcam對準樹莓派螢幕。
- 下載本範例積木程式 teachable_machine_01.rpb。
- 開啟積木程式,依照步驟執行代理程式。
- 於「積木程式」載入「teachable_machine_01.rpb」檔案。
- 執行程式,並開啟剛下載的「測試用圖片」任一圖檔,讓Webcam進行辨識。(紅色箭頭為辨識類別、綠色箭頭為信心值,可以觀察不同物件的辨識結果。)
依照實際存放位置,調整Model壓縮檔所在路徑。
# 實作步驟
- 開始圖片專案
- 給定分類標籤名稱及圖像資料
- 訓練模型
- 測試並驗證準確性
- 匯出模型
- 儲存專案
- 使用TM辨識積木
- 整合電子零件應用
# 開始圖片專案
開啟Teachable Machine,並點擊畫面中的「Get Started」按鈕。
★ 題外話,此頁面具備多國語系可選擇,請將頁面捲動至最底端,點擊「English」後,可選擇欲更換的語系。
選擇下圖中的「Image Project」項目。
選擇下圖中的「Standard image model」項目。
# 給定分類標籤名稱及圖像資料
專案起始預設有兩個分類,名稱分別為Class1及Class2,並提供輔助說明視窗。
此篇要讓電腦學會辨識樂高積木的「門」、「窗戶」兩種物件,還需要考慮非此兩物件或是背景的狀態,所以共需要三個分類標籤,並透過USB Webcam來收集圖片(本文使用的設備是Logitech C170網路攝影機)。
類別:背景(background)
依照下圖順序及說明操作。
下圖是Webcam影像擷取畫面,當點擊「Hold to Record」按鈕時,就會拍照作為訓練使用。
※若背景為固定區域,且光線變化不大時,蒐集的圖片可以較少張,否則建議至少20張以上較佳。
類別:門(door)
重複擷取background的方式,進行「門」的標籤命名及圖片擷取,透過不同的擺放位置,增加辨識門的準確性。
類別:窗戶(window)
重複上述方法,完成「窗戶」的類別。
# 訓練模型
點擊下圖中「Train Model」按鈕。
訓練模型中...
訓練中,讓瀏覽器保持在此頁籤,不要切換,並耐心等待片刻。
# 測試並驗證準確性
關閉提示訊息視窗,此時已經在測試驗證階段。下方「Output」區域為辨識結果及準確性,可即時更換Webcam前方的影像,驗證辨識的效果。
更換辨識物件,可以看到辨識準確性的變化過程。
※若在反覆驗證後,發現辨識結果不佳,最簡單的調整方式為回到圖片蒐集的步驟,增刪部份圖像來修正準確性。
# 匯出模型
此步驟匯出的model檔案,可提供給稍後介紹的積木程式使用。
點擊「Export Model」按鈕。
因模型會被應用於樹莓派上,考量其硬體限制,建議依照下圖順序,匯出模型。
- 切換至「Tensorflow Lite」頁籤
- 選擇「Quantized」項目
- 點擊「Download my model」按鈕,下載model檔案
轉檔過程良久,請稍待片刻。
檔案下載完成,存放路徑及檔名為「/home/pi/Downloads/converted_tflite_quantized.zip」。
此模型壓縮檔內含兩個檔案,分別為模式辨識特徵及標籤檔案。
# 儲存專案
點擊左上角「Teachable Machine」按鈕後,可以選擇儲存至雲端Drive,或是本地端的檔案,以供未來異動使用。
# 使用TM辨識積木
Teachable Machine相關程式積木位於「AI影像辨識」→「Teachable Machine」。
底下示範如何在程式積木中,使用由Teachable Machine匯出的Model來辨識並獲得辨識結果。
※若對積木使用方式不熟悉,可以先參考「樹莓派基礎」→「積木程式初始化設定」等教學文件。
下載本範例積木程式 teachable_machine_01.rpb。
程式運作結果如下影片:
場景設置如下:
下圖為Webcam視窗畫面,螢幕左上方黃色字體依序顯示三項資訊:辨識結果(TM訓練時所標記的Label)、信心值(介於 0 ~ 1 之間)及FPS(Frame per second)。
下方說明兩個重要的積木功能:
1. 初始化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_02.rpb。
程式運作結果如下影片,後半段影片將"window"側一邊放置,可以發現辨識的信心值在0.8附近震盪,導致LED燈閃爍。
場景設置如下: