Scratch AI 機器學習入門:用 Teachable Machine 做手勢控制遊戲
什麼是機器學習?用小朋友聽得懂的方式解釋
你有沒有想過,手機上的「人臉解鎖」是怎麼認出你的臉的?或者 Google 相簿為什麼能自動把你家的貓咪照片歸在一起?這些背後都用到了一種叫做機器學習(Machine Learning)的技術。
簡單來說,機器學習就像是在教電腦「看圖認東西」。我們人類小時候,爸媽指著狗狗說「這是狗狗」,看了很多次之後我們就學會認狗了。機器學習也是一樣的道理:我們餵給電腦很多張照片,告訴它「這些是貓、這些是狗」,看夠多之後,電腦就能自己分辨了。
聽起來很厲害對不對?但其實你不需要會寫複雜的程式碼,也不需要很厲害的電腦。今天我們要用兩個免費工具 — Google Teachable Machine 和 Scratch,就能做出一個用手勢控制的小遊戲!
認識 Google Teachable Machine
Teachable Machine 是 Google 做的一個免費網站工具,任何人都能用它來訓練自己的 AI 模型。不用安裝軟體,打開瀏覽器就能用。它支援三種訓練類型:
- 圖片辨識:教電腦分辨不同的圖片(例如分辨石頭、剪刀、布)
- 姿勢辨識:教電腦認得不同的身體動作(例如舉手、蹲下)
- 聲音辨識:教電腦聽懂不同的聲音(例如拍手、彈指)
今天我們會用到圖片辨識功能,來訓練一個能認出你手勢的模型。
事前準備
在開始之前,確認你有以下東西:
- 一台有網路攝影機的電腦(筆電內建的就可以)
- Chrome 或 Edge 瀏覽器(建議用 Chrome)
- 一個 Scratch 帳號(到 scratch.mit.edu 免費註冊)
如果你還沒玩過 Scratch,建議先去看看Scratch 接球遊戲教學,熟悉一下基本操作再回來。
第一步:訓練你的 AI 模型
打開 Teachable Machine 的網站(搜尋「Teachable Machine」就能找到),選擇「Image Project」,然後選「Standard image model」。
建立分類
你會看到畫面上有兩個分類(Class)。我們要做手勢控制遊戲,所以需要三個分類:
- Class 1:改名叫「左」— 等一下用來拍你的手往左比的照片
- Class 2:改名叫「右」— 拍你的手往右比的照片
- 按「Add a class」新增 Class 3:改名叫「停」— 拍你雙手放下的照片
收集訓練資料
這個步驟是最好玩的部分!點每個分類下面的「Webcam」按鈕,然後長按錄製按鈕,對著攝影機做出對應的手勢。
小技巧:每個分類至少拍 50 張以上的照片。而且拍的時候要:
- 稍微移動一下位置(不要每張都一模一樣)
- 手的角度可以稍微變化
- 試試不同的光線條件(這樣模型才會更準確)
想像你是一個老師,要教一個完全沒看過「左」和「右」的學生。你給他看的例子越多、越多元,他就學得越好。AI 模型也是一樣的道理!
訓練與測試
三個分類都拍好之後,按下「Train Model」按鈕。等個幾十秒,你的 AI 模型就訓練好了!
訓練完成後,右邊會出現即時預覽。試試做不同的手勢,看看模型能不能正確辨識。如果某個手勢常常被認錯,回去多拍一些照片再重新訓練就好。
第二步:匯出模型
模型測試沒問題後,點選「Export Model」。選擇「Tensorflow.js」分頁,然後點「Upload my model」。上傳完成後,你會得到一串網址,像是 https://teachablemachine.withgoogle.com/models/xxxxx/。
把這串網址複製下來存好,等一下在 Scratch 裡面會用到。
第三步:在 Scratch 中載入 AI 擴充功能
這裡要用到一個特別的 Scratch 版本。原版的 Scratch 不支援 Teachable Machine,但社群開發了擴充功能讓我們可以串接。
前往 Stretch3(搜尋「Stretch3 Scratch」)或使用支援 TM2Scratch 擴充的 Scratch 修改版。開啟後:
- 點左下角的「擴充功能」按鈕
- 找到「TM2Scratch」擴充並加入
- 你會看到新的積木出現在左邊的積木區
接著用「set classification interval」積木設定辨識頻率,再用「set image classification model URL」積木把剛才複製的模型網址貼進去。
第四步:製作手勢控制遊戲
現在來做一個簡單但超酷的遊戲:用手勢控制角色左右移動來接住掉下來的星星!
設定角色
我們需要兩個角色(Sprite):
- 一個接球角色:可以用 Scratch 內建的角色,像是碗或是籃子
- 一個星星角色:用 Scratch 內建的星星就好
遊戲邏輯
接球角色的程式積木這樣組:
- 當綠旗被按下:把角色移到畫面底部中間
- 當「image classification 的結果 = 左」:x 座標改變 -15(往左移動)
- 當「image classification 的結果 = 右」:x 座標改變 15(往右移動)
- 當「image classification 的結果 = 停」:什麼都不做(角色停住)
星星角色的程式:
- 當綠旗被按下:重複執行 — 移到畫面頂端隨機 x 位置,然後慢慢往下滑
- 如果碰到接球角色:播放音效、加分、重新回到頂端
- 如果碰到底部邊緣:扣一條命
如果你做過Scratch 接球遊戲,這個邏輯應該很熟悉。差別只在於我們把鍵盤控制換成了 AI 手勢辨識,是不是很酷?
除錯與優化小技巧
做的過程中可能會遇到一些問題,這裡列出常見的解決方法:
- 辨識不準確:最常見的原因是訓練資料不夠多。每個分類至少要 80-100 張照片,而且要有足夠的變化。
- 角色移動太快或太慢:調整 x 座標改變的數值就好。建議從 10 開始試,再慢慢調整到你覺得順手的速度。
- 攝影機沒有啟動:確認瀏覽器有給攝影機權限。通常網址列旁邊會有一個攝影機圖示可以點。
- 延遲很嚴重:把 classification interval 設大一點(例如 500 毫秒),減少運算負擔。
延伸挑戰
基本遊戲完成之後,可以試試這些進階挑戰:
- 加入第四個手勢(例如「跳」),讓角色可以跳起來
- 加入計分板和關卡系統,星星掉落速度越來越快
- 把圖片辨識改成姿勢辨識,用全身動作來控制角色
- 試試看做一個Scratch 迷宮遊戲,用手勢控制上下左右
如果孩子對 AI 和程式設計產生了興趣,也可以考慮看看學完 Scratch 下一步,了解之後可以怎麼繼續學習。Scratch 是很棒的起點,但程式的世界還有好多好玩的東西等著探索!
另外,如果想讓遊戲角色更生動,可以參考Scratch 動畫角色教學來幫角色加上走路或跳躍的動畫效果。
結語:AI 沒有想像中那麼難
回頭看看今天做的事情:我們訓練了一個能辨識手勢的 AI 模型,還把它串進 Scratch 做成了一個遊戲。整個過程不用寫任何一行「真正的」程式碼,但你已經體驗了機器學習最核心的概念 — 用資料來教電腦學會新能力。
這就是 AI 的基本原理。那些看起來很厲害的人臉辨識、語音助手、自動駕駛,背後的核心概念其實都一樣:收集資料、訓練模型、拿來用。當然真實世界的 AI 複雜得多,但你已經跨出最重要的第一步了。繼續玩、繼續試,說不定下一個改變世界的 AI 就是你做出來的!
繼續閱讀
Scratch 物理模擬遊戲教學:用積木做出重力、彈跳和碰撞偵測
相關文章
你可能也喜歡
探索其他領域的精選好文