ESP32-CAM, IOT物聯網

【ESP32-CAM應用】第二篇:Google Teachable Machine 使用 Arduino IDE – AI智慧影像辨識

本篇使用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”

程式範例下載:需要程式點我

▼購買本篇文章使用的產品:

ESP32-CAM one kit OV2640相機頭 WIFI/藍芽 支援圖像識別/語音處理

LCD1602 I2C / IIC 藍屏|綠屏 LCD液晶螢幕 3.3/5V背光 LCD1602A

LCD1602A 透明外殼支架 壓克力 含螺絲

24AWG 杜邦線 40芯 4Pin 長20Cm 間距2.54 可自定義接腳 公對母-母對母-公對公

 

相關文章