HUB 8735 Ultra 全方位開發指南-影像辨識篇

在掌握了基礎的環境設定與影像串流後,本篇文章將帶領各位進入 HUB 8735 Ultra 的核心領域:邊緣 AI 運算雲端整合

在掌握了基礎的環境設定與影像串流後,本篇文章將帶領各位進入 HUB 8735 Ultra 的核心領域:邊緣 AI 運算雲端整合。我們將學習如何使用內建的 NPU 進行人臉與物件辨識,並結合 Line Bot 打造互動式應用。

一、內建人臉辨識 (RTSP Face Recognition)

8735 Ultra 提供了基於 RTSP 協定的人臉辨識範例,可直接在開發板上完成註冊與辨識。

開啟範例與設定

  1. 開啟範例:AmebaNN > RTSPFaceRecognition
  1. 修改程式碼中的 Wi-Fi 設定 (SSID 與 Password)。

⚠️ 注意事項:
預設情況下,臉部辨識的註冊資料僅儲存於 RAM (記憶體) 中,重開機後會消失。若需永久保存,需執行備份指令。

註冊臉部

1.還沒註冊時,所有臉部都是未知(UNKNOWN)

2.在序列視窗空白處輸入   REG=英文名字       (註冊時僅能有一個臉部)

3.註冊後等約5秒即可出現辨識結果


操作指令 (透過 Serial Monitor)

程式執行後,可透過序列埠輸入以下指令進行操作:

  • REG=Name:將當前畫面中的人臉註冊為 “Name” (例如 REG=Eric)。
  • DEL=Name:刪除指定名稱的人臉資料。
  • RESET:清除所有已註冊的人臉。
  • BACKUP:將目前的臉部資料庫備份到 Flash 記憶體 (斷電不消失)。
  • RESTORE:從 Flash 載入備份的資料庫。

如何清除 Flash 中的人臉資料?

若需徹底清空記憶體,可至 IDE 上方選單:Erase All Flash Memory > Erase only,再進行燒錄。

二、伺服馬達與閘門控制

人臉辨識常用於門禁系統,這需要結合伺服馬達 (Servo) 來控制閘門開關。

硬體接線 (以 SG90 為例)

  • PWM 腳位: 8735 Ultra 支援的 PWM 腳位包含 Pin 11, 12, 13, 18-24 [4]。
  • SG90 接線:
    • 棕色線 → GND
    • 紅色線 → 3.3V
    • 橘色線 → 訊號腳 (如 Pin 20)

範例程式碼下載: Google Doc 連結

人臉辨識閘門範例

結合上述的人臉辨識與 Servo 控制,可實作「刷臉開門」功能。
範例程式碼下載: Google Doc 連結

認識的亮綠燈(IO 23)
不認識的亮紅燈(IO 24)

人臉辨識閘門結果

請注意沒有看螢幕的情況下AI辨識還在進行中

1. 影像辨識遠端設定

從MQTT觀察辨識結果:https://docs.google.com/document/d/1HLCk93CJI9CCoqZJOS7-V4B_3XChlzBDzx3cMCGwO60/edit?tab=t.0

在程式碼中,請記下您設定的 MQTT Topic (主題),例如:alice/class205/image

2. Node-RED 流程設計 (接收端)

Node-RED 的處理邏輯非常直觀,我們需要建立一條流程,將接收到的二進位 Buffer 轉為 Base64 字串,最後餵給網頁顯示。

詳細設定步驟

步驟 1:加入 MQTT In 節點
  • 拖拉 mqtt in 節點到工作區。
  • Server: 設定為與開發板相同的 Broker (例如 mqttgo.io)。
  • Topic: 輸入開發板發送影像的主題 (例如 alice/class205/image)。
  • Output: 選擇 a Buffer (確保輸出格式為二進位緩衝區)。
步驟 2:加入 Base64 轉換節點
  • 搜尋並拖拉 base64 節點 (通常位於 Parser 分類下)。
  • 將 MQTT In 的輸出連接至 Base64 的輸入。
  • Action: 選擇 Encode (將 Buffer 編碼為 Base64 字串)。
  • 此步驟是為了讓 HTML 標籤能夠讀取圖片資料。
步驟 3:加入 Dashboard Template 節點
  • 確保您已安裝 node-red-dashboard 套件。
  • 拖拉 template 節點 (位於 Dashboard 分類下)。
  • 將 Base64 的輸出連接至 Template 的輸入。
  • 在 Template 內容中填入以下 HTML 代碼:
<div style="text-align:center;">
    <h3>AI 即時監控畫面</h3>
    <img height="50%" width="100%" 
         src="data:image/jpeg;base64,{{msg.payload}}" 
         style="max-width: 640px; border: 2px solid #f8c600; border-radius: 5px;" />
</div>

💡 語法解析:
src="data:image/jpeg;base64,{{msg.payload}}"
這段語法告訴瀏覽器圖片來源是 Base64 編碼的資料。{{msg.payload}} 是 Node-RED 傳入的轉換後字串。

3. 成果展示

完成上述連接後,點擊 Node-RED 右上角的 Deploy 按鈕。接著開啟 Dashboard 頁面 (通常為 http://localhost:1880/ui)。

當 8735 Ultra 開始傳輸影像時,您應該就能在儀表板上看到即時更新的監控畫面與 AI 辨識結果框選了。

三、YOLO 物件偵測應用

HUB 8735 Ultra 內建 NPU,支援執行 YOLO (You Only Look Once) 模型,可快速辨識畫面中的物體。

支援模型與物件

  • 模型: 支援 YOLOv3 tiny, YOLOv4 tiny, YOLOv7 tiny 。
  • 資料集: 使用 COCO Dataset 訓練,可辨識 80 種常見物件 (如人、車、貓、狗、手機、筆電等)。

認識的物件是由COCO資料集訓練而得,網址:COCO – Common Objects in Context

COCO生活中常見的物件,一共有80個,交通工具,生活用品,動物…等等

YOLOv3 model: DEFAULT_YOLOV3TINY, CUSTOMIZED_YOLOV3TINY

YOLOv4 model: DEFAULT_YOLOV4TINY, CUSTOMIZED_YOLOV4TINY

YOLOv7 model: DEFAULT_YOLOV7TINY, CUSTOMIZED_YOLOV7TINY

Valid Face Detection model: DEFAULT_SCRFD, CUSTOMIZED_SCRFD

使用 Callback 取得辨識結果

  1. 開啟範例:AmebaNN > ObjectDetectionCallback 。
  1. 此範例會在發現物件時產生回呼 (Callback),您可以在程式碼中獲取物件名稱與座標。
  2. 搭配 VLC 播放器開啟 RTSP 串流,可看到即時的辨識框選畫面 。

實作1:人數計算並寫在左上角

參考解答:

https://docs.google.com/document/d/1YjDd6xrdTn78URe_6CZHiU_jdMwQdv1NYzG8YQFi46k/edit?tab=t.0

實作2:依據人數控制燈號

利用 YOLO 偵測到的「人 (person)」數量來觸發 IO 動作。例如:

  • 當人數 <= 5 時:亮綠燈
  • 當人數 > 5 時:亮紅燈

邏輯解析: 透過解析 PostProcess 的回傳資料,計算 class 為 “person” 的數量,再控制 LED 腳位。

參考解答:

https://twgo.io/eiqnd

實作3:有人出現時就傳MQTT紀錄

範例程式下載:https://twgo.io/ahasy

關閉VLC,偵測到人,一樣會傳MQTT

代表YOLO辨識是在晶片中的邊緣運算

四、Line Bot 雲端機器人串接

透過 Line Messaging API,讓開發板化身為 Line 機器人,主動發送通知或貼圖。

Step 1: 申請服務

  1. 進入 Line Developers Console
  1. 建立一個 Provider (類似公司/組織名稱) 。
  1. 建立一個 Channel,類型選擇 Messaging API 。
  1. 填寫帳號資訊 (名稱、地區、公司) 並完成建立 。

Line official

https://tw.linebiz.com/login

  1. 完成後按最下面管理畫面

Step 2: 開啟聊天與 API 功能 (關鍵步驟)

  1. 在 Line Developers 頁面點選「Line Official Account Manager」進入官方帳號管理後台。
  1. 點選上方選單的「聊天」,會跳出視窗提示「聊天功能目前關閉中」,請點選「前往回應設定頁面」
  1. 在回應設定中:
  1. 將「聊天」開啟。
  2. 將「Webhook」開啟。
  1. 回到 Line Developers Console,點選「啟用 Messaging API 」
  1. 點選對應的公司(provider)
  1. 隱私權服務條款 留空白
  1. 連動確認
  1. 建立完畢,不須更動
  1. 回到開發者平台,重新整理

Step 3: 取得金鑰資料

為了讓程式能控制機器人,我們需要取得以下三組關鍵資料 :

  1. Channel Secret (位於 Basic settings 分頁)。
  1. User ID (位於 Basic settings 分頁)。
  1. Channel Access Token (long-lived) (位於 Messaging API 分頁,需點擊 Issue 產生)。

Step 4: 發送貼圖測試

若要發送貼圖,需查詢 Line 的 Package ID 與 Sticker ID。

  • 查詢列表: Sticker List 。
  • 例如:Package ID 446, Sticker ID 1988 (熊大貼圖)。

測試程式下載: Line 通知測試範例 。

五、自定義模型訓練

除了內建的 COCO 模型,8735 Ultra 也支援載入自己訓練的 YOLO 模型,讓開發板能辨識特定的物件 (例如特定產品瑕疵、標誌等)。

詳細訓練過程與轉檔教學,請參考專屬頁面:twgo.io/robot

電子報更新

請在下方輸入你的電子郵件地址並訂閱我們的電子報

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *