本篇使用ESP32 one(Camera)與Teachable Machine結合運用
什麼是Teachable Machine?
Teachable Machine是Google推出的免費AI開源平台,可讓無程式設計經驗的人快速入門,讓機器有學習的能力,透過視訊鏡頭打造AI影像辨識(Artificial Intelligence Image Recognition)。
使用起來非常簡單,三個步驟就能完成:取樣(Sampling)、訓練(Training)、結果(Result),另外也結合如:Arduino、Raspberry、Esp32-CAM…等等,可額外開發及功能的擴展。
我們來看看Google推出Teachable Machine的宣傳影片:
ESP32 ONE(Camera)硬體介紹
ESP32 ONE KIT 是一款ESP32+CAMERA的多功能開發板,板上集合了Camera、
SD Card、Digital MicroPhone、更方便的是使用CP2102的USB驅動晶片,方便一鍵下載燒錄程式。
另外一項好處,當不需要使用板上Camera、SD Card、Digital MicroPhone…等等功能時,可將腳位Release出來當作一般Esp32開發版來使用。
Esp32 One Kit Used Pins Table
依照Table,開發時方便選用腳位
- DVP(Camera): 共使用14Pins
- SPI(SDCARD): 共使用7Pins
- I2S(Digital MicroPhone): 共使用3Pins
- 本篇LCD1602 I2C螢幕選用 IO0(SDA),IO21(SCL)。
再開始之前先幫我們的Arduino IDE上增加ESP32 Board
Arduino IDE ESP32環境安裝
複製此連結:https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json
Note: 從 Arduino IDE 版本 1.6.4 開始,Arduino允許使用 Boards Manager 安裝第三方平台資料庫。 適用於 Windows、macOS 和 Linux 的資料庫。
使用 Boards Manager 開始安裝過程,請執行以下步驟:
- 安裝1.8 或更高版本的當前Arduino IDE。 當前版本位於 arduino.cc 網站。
- 啟動 Arduino 並打開偏好設定(Preferences)窗口。
- 在 “額外的開發板管理員網址” 將複製好的網址貼上,若您有多個 URL,並用逗號分隔它們。
從“工具”> 開發版 Menu打開 “開發板管理員” ,輸入並安裝esp32 平台(本篇使用2.0.2版本)。
安裝完畢後,本篇開發板選擇使用 ESP32 ONE KIT,參數按照下方圖片設定。
(1)選擇開發板 “ESP32 Dev Module ”
(2)參數設定請參照紅色框的設定設定
Partition Scheme::”Huge APP(3MB No OTA/1MB SPIFFS)”
PSRAM–>”Enabled”
開啟程式範例 ”檔案” > “ESP32” > “Camera” > “CameraWebServer”
設定 Esp32 one Camera Configuration
- 註解 //#define CAMERA_MODEL_WROVER_KIT。
- 開啟 CAMERA_MODEL_ESP_EYE。
- 自行設定WIFI網路(ssid、password)。
- 上傳程式。
透過HTTP與ESP32連結
- 上傳完畢後,開啟序列埠監控視窗,並將鮑率設為”115200”
- 可以看到得到IP為”192.168.0.115”。
- 將自行得到的IP複製起來並貼於網路瀏覽器。
ESP32影像串流連結
這時顯示出與ESP32連結後的網頁,按下”Start Stream”,畫面動態顯示,代表影像串流已連結成功。
擷取照片(取樣用)
點選右上角”Save”,照片將自動擷取並下載至電腦端Download資料夾內
• 取樣(Sampling): 同一個物件照片張數越多,精准度越高。
Note: Teachable Machine 最少辨識為兩個物件(2 Class), 請擷取至少兩組物件。
Teachable Machine環境使用
點擊進入Google Teachable Machine網頁,進入網頁後點選”Get Started”
Image learning 影像識別 請選擇 “Image Project”>“Standard Image model”
下方紅框為取樣(Sampling),本篇使用2組物件來做深度學習影像辨識,想增加物件可透過“Add a class”
紅框圈起來為取樣(Sampling)的方式:
- Webcam: 透過電腦內建相機或是外部USB Webcam來取樣照片。
- Upload: 從電腦資料夾或Google Drive上傳照片。
各別上傳Class 1、Class 2物件的照片作為取樣用。
上傳完畢後將識別的物件改名稱。
點擊Train Model,等待幾秒後完成訓練。
點擊Export Model。
彈出新視窗,點擊Upload my model,並等待數秒後產生Share Link,將連結複製下來稍後會用到。
上傳新程式與Teachable Machine連結
點擊開啟esp32_one_TM.ino,如先前修改設定相同。
設定 Esp32 one Camera Configuration
- 設置為 CAMERA_MODEL_ESP_EYE。
- 自行設定WIFI網路(ssid、password)。
- 上傳程式。
程式檔案下載,請至文章結尾處下載!!
上傳完畢後,開啟序列埠監控視窗,並將鮑率設為”115200”,可以看到得到IP為”192.168.0.115”,將得到的IP複製起來並貼於網路瀏覽器上。
1. 將Teachable Machine產生的Share Link複製到網頁上Model Path內。
2. 按下Start Recognition
3. 可以看到影像串流出現,我們把相機移向辨識物件。
結果(Result)
可以看到相機移向Moai或Bear,下方辨識率約為0.9999約為99.99%。
NOTE: Arduino ide上的序列埠監控視窗也可以顯示辨識結果。
擴充LCD1602 將結果輸出於螢幕上(硬體接線)
增加Include資料庫和定義LCD1602
初始化並顯示於螢幕上
WIFI連線完成將得到的IP顯示於螢幕上
螢幕顯示影像辨識結果的字串,修改完成後將程式上傳
將視訊鏡頭移向辨識物件,辨識結果輸出至螢幕”Bear” or “Moai”
程式範例下載:需要程式點我
▼購買本篇文章使用的產品: