2020年初Arm正式推出支援向量擴充指令集(M-Profile Vector Extension, MVE)的微處理器(或稱單晶片,Microcontroller Uint, MCU)矽智財(Silicon Intellectual Property, SIP) Cortex-M55 及微神經網路處理器(Micro Neural Network Processing Unit) Ethos-U55,正式開啟 MCU AI 時代來臨[1]。但不幸地,Covid-19 疫情伺虐全球,行業停擺,導致直到2022年底才由 ALIF Semiconductor推出第一顆實體晶片 Ensemble 系列(E1/E3/E5/E7)及配套開發板。今年 CES 2024 上更是全面開花,截至目前,已有 ALIF, Himax(奇景), Nuvoton(新唐), Infineon(英飛淩) 推出 Cortex-M55 + Ethos-U55 組合的產品了[2]。若再加上其它家 MCU + Micro NPU ,那麼今年可謂微處理器的 AI 時代降臨。
一般來說,如果只是為了如聲音、運動、化學等感測器信號進行分類或預測的話,大概使用 Arm Cortex-M4F, Cortex-M7 甚至 Cortex-M0+ 等級的 MCU 就夠用了。但如果遇上小尺寸(如96x96或更小)影像分類、物件偵測或者多感測器信號融合分析時,則需要更高速運算的處理器才足以應付,因此 MCU + Micro NPU 正好可以滿足這個缺口。
為了讓大家更了解 MCU 加上 Micro NPU 究竟能幫大家帶來什麼好處,接下來就以矽遞科技(Seeed Studio)和奇景光電(Himax)合作的 Grove Vision AI Module v2 開發板及 Seeed SenseCraft AI (TinyML) 開發平台,帶著大家一起來玩玩微型 AI 電腦視覺應用。
1. 硬體基本硬體規格簡介
首先幫大家介紹一下 Seeed 提供的硬體組合,它由三個部份組成,主板、攝影機模組及無線通訊擴充板(選配),以為示意圖(Fig. 1)及基本規格。
Fig. 1 Seeed Grove Vision AI Module v2 及配套組合。(OmniXRI整理製作, 2024/07/15)
- 核心主板 Grove Vision AI Module v2
- 主晶片 Himax WiseEyes2 HX6538 [3]
- Arm Cortex-M55 (1x @150MHz, 1x @400MHz)
- Arm Ethos-U55 (256 MACs @400MHz)
- 4KB Boot ROM, 2,432KB SRAM
- CSI, I2C, SPI, UART Interface
- PDM Micphone
- microSD Card Slot
- 16MByte Flash
- User LED (Yellow x1)
- Boot/User, Reset Button
- USB to UART Converter (CH343)
- CSI Connector (for Pi Camera Module)
- Seeed Xiao inline Connector (14 pins)
- Seeed Grove Connector (Other I2C Sensors)
- 主晶片 Himax WiseEyes2 HX6538 [3]
- 攝影機模組 Pi Camera OV5647-62
- Resolution: 2592 x 1944 pixels (5MP)
- Pixel Size: 1.4um x 1.4um
- CMOS Size: 1/4 inch
- Videos: 1080p @30fps, 720p @60fps
- Lens: FOV 62 deg.
- Focal Length: 3.4mm
- Focal Ratio: 2.8
- interface: CSI (for Pi3/Pi4)
- 無線通訊擴充板 Seeed ESP32-C3 (選配, 本文未使用到)
- 32bit RISC-V Core @160MHz
- 4MB Flash, 400KB SRAM
- 2.4GHz WiFi, BLE 5.0
- UART, I2C, SPI, GPIO(PWM), ADC
- Reset, Boot Button
- USB Type C Cable (for Download & Debug)
使用前將配套的軟排把核心主板及攝影機模組連結起來,如 Fig. 2 所示。主板 CSI 連接器為翻蓋式,攝影機模組連接器為插拔式,軟排線有分正反面,藍色朝上、金手指接點朝下。由於板上連接器皆為塑膠製品,很脆弱,連結時請小心操作以免損傷。最後再將 USB Type C (不分正反面)插入主板,另一端 Type A 端插入電腦端。
注意:由於開發板皆為裸板,接點請勿接觸到任何金屬,或以潮濕的手接觸,以免造成短路,傷害電腦及開發板。
Fig. 2 Seeed Grove Vision AI Module V2 連結攝影機模組步驟。(OmniXRI整理製作, 2024/07/15)
更完整的規格及安裝說明可參考[4]。
2. 快速開發部署微型AI視覺應用
為了讓大家快速上手,這裡使用由 Seeed 所提供的無碼(No Code) 開發部署平台「SenseCraft AI」[5]。目前可支援四種硬體開發板,包括「reComputer Jetson (Nvidia Jetson Orin)」、「XIAO EPS32S3 Sense」、「Grove - Vision AI V2」及「SenseCAP Watcher」。另外依不同開發板提供數百種預訓練模型可供下載及部署到開發板,同時提供使用者建立自定義的模型和資料,亦可分享到網路。不過這裡受限於有限資源,因此僅支援小型模型(如YOLOV5, YOLOV8, FOMO, MobileNetV2, PFLD, Swift-YOLO等),及少量資料進行遷移學習(Transfer Learning)。
如 Fig. 3 所示,要使用之前,須點擊左上角「Sign In」進行登錄,若尚未註冊帳號者,可輸入電子信箱、欲設定之密碼後,點擊「Sing Up」進行註冊,請記得勾選下方「我已閱讀並同意隱私政策」,下次就可直接登錄了。
進入後,先於畫面左方選擇裝置,因為不是所有模型都能支援所有硬體,這裡選擇「Grove - Vision AI V2」,過濾出可用模型。接著可逐一分頁瀏覽需要的模型,若數量太多,可點選所需任務(Task)如「物件偵測」、「影像分類」、「影像分割」、「姿態估測」及「生成式應用」,或者在左上空白欄位輸出關鍵字進行搜尋特定模型。
待選定所需模型後,點擊進入後,即可看到基本說明,包括模型精度、模型格式、類別及推薦參數等。為方便後續測試,這裡選用「手勢檢測 Gesture Detection」,可辨識「剪刀」、「石頭」、「布」等手勢。
Fig. 3 Seeed SenseCraft AI 裝置及模型選用。(OmniXRI整理製作, 2024/07/15)
當如Fig. 2準備好模組板並將 USB 纜線插入電腦端後,Windows 裝置管理員上就會出現一個虛擬串列埠(Virtual COM),如 Fig. 4 左側所示,而這裡的埠號x (COMx) 每個人看到的可能都不一樣,只需記下即可。若同一部電腦上插了多個開發板,則要自行辨識哪個板子是哪個埠號,以免後續操作錯誤。
如Fig. 3所示,當點擊左上角「部署模型 Deploy Model」後,會出現提示,點擊「連接裝置 Connect Device」,即會出現 Fig. 4 左下提示字串,點擊「確認連線 Confirm」,選擇欲下載到哪個裝置,按下「連線」即會開始部署模型到開發板上,此時要耐心等候數分鐘。
待完成後,即時影像區就會出現攝影機拍攝到的內容,可試著將手勢變換為「剪刀」、「石頭」、「布」等手勢,並觀察是否有正確被辨識到。若辨識率偏低,可試著將置信度(Confidence)及重疊區(IoU)門檻值(Threshold)調低,使其更容易被辨識出來,當然此時誤判的機率也會隨之提高。
另外在辨識的同時,裝置記錄器(Device Logger)也在輸出,而這些字串,亦會同時透過 I2C 傳送出去。若有接上無線通訊模組 ESP32-C3 或其它微處理器時,則此時就能根據這些文字串解析成更複雜的控制命令,如點亮LED,改變馬達轉速等應用。
Fig. 4 Seeed SenseCraft AI 裝置連線及模型部署推論。(OmniXRI整理製作, 2024/07/15)
3. 建立自定義資料集與模型
Seeed SenseCraft AI 除了提供別人訓練好的模型外,亦可自行收集資料並訓練,其操作程序如 Fig. 5 所示。首先點選頁面左側「訓練 Training」或者首頁右上角「訓練新模型 Train new model」,進入工作畫面。
由於這裡只是提供簡單測試用,所以只能輸入一種物件名稱。接著可點擊「快速生成 Quick Generate」利用系統自動生成所需資料集並進行模型訓練。這種方式雖然方便,但只適合常見物件,不適合自定義物件。因此可輸入名稱後,點擊「擷取訓練用影像 Capture Image to Train」,再使用即時影像下方的「擷取 Capture」鍵取得所需影像內容。
這裡以辨識鍵盤上 H 鍵為例,當點擊「擷取」後,畫面會停留等待拖拉一個物件框,如此至少反覆操作十張影像及標註。當然影像數量越多且具有多樣性(如大小、模糊、陰影等)對後續模型訓練結果會越好。接著就可以按下「訓練模型 Train Model」開始訓練,不過這裡會花費很多時間,且影像數量不足或品質不佳時,訓練成果亦會受影響。建議可依官方提供的模型訓練範例 [6],利用 Google Colab 加速訓練。待完成訓練後再上傳模型到雲端平台即可自用或分享給其它人使用。最後將訓練好的模型部署到裝置上,就可像前面下載現成模型一樣地操作即可。
Fig. 5 Seeed SenseCraft AI 建立自定義資料集及訓練模型。(OmniXRI整理製作, 2024/07/15)
小結
以往要使用 MCU 玩 AI 視覺應用是非常困難且麻煩的,此次有了平價的開發板加上雲端開發部署平台,讓想入門的朋友不會望而卻步。本文此次使用的是無程式碼(No Code)的開發及部署,主要目的是讓大家了解建立一個 MCU AI (TinyML) 視覺應用的開發流程,而不是程式撰寫。若後續大家有興趣完成更複雜的應用或產生更高效推論結果,建議可多花點時間研讀一下官方提供的說明文件,相信一定可以玩出更多有趣的應用。
參考文獻
[1] 許哲豪,【vMaker Edge AI專欄 #13】 誰說單晶片沒有神經網路加速器NPU就不能玩微型AI應用?
https://omnixri.blogspot.com/2024/01/vmaker-edge-ai-13-npuai.html
[2] 許哲豪,【vMaker Edge AI專欄 #14】 從CES 2024 看Edge AI及TinyML最新發展趨勢
https://omnixri.blogspot.com/2024/02/vmaker-edge-ai-14-ces-2024-edge-aitinyml.html
[3] Himax, WiseEye2 AI Processor (WE2)
https://www.himax.com.tw/products/wiseeye-ai-sensing/wiseeye2-ai-processor/
[4] Seeed Studio, Grove Vision AI Module V2
https://wiki.seeedstudio.com/grove_vision_ai_v2/
[5] Seeed Studio, SenseCrafe AI
https://sensecraft.seeed.cc/ai/
[6] Seeed Studio, ModelAssistant - Introduction - SenseCraft Ai Model Assistant Overview - Quick Start - Model Training
https://wiki.seeedstudio.com/ModelAssistant_Introduce_Quick_Start/#model-training
延伸閱讀
[A] Seeed Studio, Github - Seeed-Studio / SenseCraft-AI
https://github.com/Seeed-Studio/SenseCraft-AI
[B] Seeed Studio, Github - Seeed-Studio / ModelAssistant
https://github.com/Seeed-Studio/ModelAssistant
[C] Himax, Github - HimaxWiseEyePlus / Seeed_Grove_Vision_AI_Module_V2
https://github.com/HimaxWiseEyePlus/Seeed_Grove_Vision_AI_Module_V2
本文同步發表在【台灣自造者 vMaker】
沒有留言:
張貼留言