iT邦幫忙

2022 iThome 鐵人賽

DAY 28
2

Teachable Machine 是 Google 所推出的無程式碼機器學習平台,只需要簡單的步驟,就能夠在瀏覽器上訓練模型,透過訓練的模型辨識圖片、聲音或是姿勢,這篇教學將會介紹如何使用 Teachable Machine。

原文參考:使用 Teachable Machine

使用 Teachable Machine

什麼是 Teachable Machine?

Teachable Machine 是 Google 所推出的無程式碼機器學習平台,更簡單來說,Teachable Machine 是一個網頁工具,只需要打開瀏覽器,就能在不需要專業知識和撰寫程式碼的情況下,輕鬆的為網站和應用程式訓練機器學習模型。

前往 Teachable Machine:https://teachablemachine.withgoogle.com/

Python 教學 - 使用 Teachable Machine

Teachable Machine 目前提供了「圖片、聲音和姿勢」共三種訓練模型,只要經過「蒐集和訓練」的步驟,就能夠建立自己的模型,由於 Teachable Machine 背後應用了開源的機器學習函式庫 Tensorflow.js,因此可以將訓練好的模型以 Tensorflow.js、Keras、或 Tensorflow Lite 格式輸出,在任何的網頁或是應用程式中呼叫使用。

注意,Python 只能使用圖片專案所訓練的模型。

Python 教學 - 使用 Teachable Machine

建立分類,訓練模型

開啟 Teachable Machine 網站後,點擊「開始使用」開始訓練模型的新專案 ( 最下方可以切換語系為繁體中文 )。

Python 教學 - 使用 Teachable Machine

點擊 「圖片專案」,選擇「標準圖片模型」,就可以進入圖片模型訓練流程。

Python 教學 - 使用 Teachable Machine

訓練流程主要有三個步驟,「添加分類內容」、「訓練模型」和「預覽訓練結果」。。

Python 教學 - 使用 Teachable Machine

  • 添加分類內容

    每個分類的內容可以透過攝影鏡頭 Webcam 或上傳 Upload 的方式增加圖片,最少需要有兩個分類,點擊下方 Add a class 的按鈕可以增加分類,下圖的範例的分類使用 oxxo ( 畫面中有人 ) 以及維他命 ( 畫面中有維他命的罐子 ) 兩種。

    Python 教學 - 使用 Teachable Machine

  • 訓練模型

    分類建立完成後,點擊「訓練模型」,就會開始進行圖片模型的訓練,出現「模型已訓練完成」的文字表示訓練完成。

    Python 教學 - 使用 Teachable Machine

  • 預覽訓練結果

    訓練完成後,就能從預覽模型的視窗裡,測試自己訓練的模型準確度。

    Python 教學 - 使用 Teachable Machine

在 Python 中使用模型

點擊右上方的「匯出模型」,選擇 Tensorflow,勾選 Keras,就能下載 Keras.h5 模型供 Python 使用。

Python 教學 - 使用 Teachable Machine

下載模型並壓縮,將 keras_model.h5 放到和 Python 程式同樣的路徑下,就可以開始編輯 Python 程式。

Python 教學 - 使用 Teachable Machine

在 Anaconda Jupyter 安裝好 Tensorflow 和 OpenCV 後,執行下方的程式碼,就可以看到透過 OpenCV 播放攝影鏡頭的影片,並判斷現在出現的影像是什麼分類。

參考:Jupyter 安裝 Tensorflow

import tensorflow as tf
import cv2
import numpy as np

model = tf.keras.models.load_model('keras_model.h5', compile=False)   # 載入 model
data = np.ndarray(shape=(1, 224, 224, 3), dtype=np.float32)           # 設定資料陣列

cap = cv2.VideoCapture(0)         # 設定攝影機鏡頭
if not cap.isOpened():
    print("Cannot open camera")
    exit()
while True:
    ret, frame = cap.read()       # 讀取攝影機影像
    if not ret:
        print("Cannot receive frame")
        break
    img = cv2.resize(frame , (398, 224))   # 改變尺寸
    img = img[0:224, 80:304]               # 裁切為正方形,符合 model 大小
    image_array = np.asarray(img)          # 去除換行符號和結尾空白,產生文字陣列
    normalized_image_array = (image_array.astype(np.float32) / 127.0) - 1  # 轉換成預測陣列
    data[0] = normalized_image_array
    prediction = model.predict(data)       # 預測結果
    a,b= prediction[0]                     # 取得預測結果
    if a>0.9:
        print('oxxo')
    if b>0.9:
        print('維他命')
    cv2.imshow('oxxostudio', img)
    if cv2.waitKey(500) == ord('q'):
        break     # 按下 q 鍵停止
cap.release()
cv2.destroyAllWindows()

Python 教學 - 使用 Teachable Machine

更多 Python 教學

大家好,我是 OXXO,是個即將邁入中年的斜槓青年,我已經寫了超過 400 篇 Python 的教學,有興趣可以參考下方連結呦~ ^_^


上一篇
( Day 27 ) Jupyter 安裝 Tensorflow
下一篇
( Day 29 ) 辨識剪刀、石頭、布
系列文
Python x AI 影像辨識好好玩32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言