網頁

2025年4月1日 星期二

TinyML加持MCU也能開始玩電腦視覺了

 說到使用小型邊緣智能(Edge AI)開發板來完成

影像分類(Image Classification)」或

物件偵測(Object Detection)」,

大概第一個會想到的是樹莓派加Intel神經運算棒(NCS2)或者Nvidia Jetson Nano系列或者Google Coral吧?

但如果想在單晶片(MCU)上玩影像處理甚至TinyML影像辨識有沒有機會呢?

先說結論當然是可以,舉例來說單板微電腦(如Arm Cortex-A系列)就像機車,而單晶片(如Arm Cortex-M系列)就像腳踏車,同樣是提供移動服務,但要讓腳踏車跑得像機車那麼快,可能人會先累垮,甚至跑不贏。

不過如果只是要到500公尺外的超市買東西,那這兩種交通工具差別可能就沒這麼大。因此在使用MCU進行電腦視覺前要先確認好需求,以免有過多的幻想,無法達成工作目標。

接下來的文章將為大家介紹有自帶攝影機模組或有保留擴充界面的MCU TinyML開發板,方便想從事微型電腦視覺AI應用的朋友有更完整的選擇。

1. 在單晶片上運行電腦視覺應用

在電腦視覺中,影像辨識所需耗費的算力是非常龐大的,在加速處理的思路上可分為從硬體及軟體(算法、模型)下手,大致可分為下列幾種作法:

  • 降低影像色彩數及解析度
  • 降低每秒處理影格數(Frames, FPS)
  • 增加晶片工作時脈(Clock, MHz)
  • 增加單位時間平行運算能力(如SIMD, Vector指令集、多核)
  • 選擇複雜度(如層數、寬度、網路結構)較低的模型
  • 對模型進行推論速度、儲存空間、記憶體使用優化(量化、減枝、壓縮、蒸餾等)

在前一篇「MCU攜手NPU讓tinyML邁向新里程碑」中已有幫大家介紹過各種MCU+NPU的硬體加速計算方式,但由於MCU儲存程式碼、模型網路結構、權重參數的FLASH容量及計算過程所需的SRAM記憶體容量非常少,所以第一件事是要把模型縮到塞得進MCU中,才有資格談模型加速運算及維持推論精度,尤其在電腦視覺應用中更是首先必須要解決的問題。

傳統AIoT的應用開發,MCU重點在擷取多種感測器信號及加上通訊將資料傳到雲端,並不直接在MCU上進行AI相關運算,所以工作時脈不用太快,只要數十MHz就足夠,而Flash、SRAM有個數KB到數十KB就夠用了,甚至連像ARM MBED或RTOS這樣的MCU作業系統都不用。

隨著微型攝影機模組(Camera Module)的普及,越來越多的有線、無線網路攝影機(IP Cam)方案被提出,AIoT的應用也開始加入了影像監控的領域。為解決影像基本處理及編解碼,因此單晶片也開始提高工作時脈到數百MHz、增加Flash、SRAM到數百KB到數MB,甚至加入數位信號處理器(Digital Signal Processor, DSP),使得有足夠能力可以運作微型作業系統或MicroPython這類的開發環境。不過此時若想在擷取到的串流影音上進行AI相關應用時,幾乎都還是送回雲端處理。

最近隨著各種微型攝影機模組(如I/O Bus, MIPI, SPI界面)越來越容易取得,支援TinyML技術的硬體逐漸成熟,相關開發工具(如TensorFlow Lite for Microcontroller, CMSIS-NN)和平台(如Edge Impulse, SensiML)也逐漸普及,因此在沒有網路及雲端服務下,在MCU上直接跑微型電腦視覺AI應用也開始變得沒這麼困難。接下來就市售20款開發板分成三大類依序幫大家介紹,而開發工具、平台、模型優化等就留待下次再幫大家介紹。


引自 https://omnixri.medium.com/%E6%9C%89%E4%BA%86tinyml%E5%8A%A0%E6%8C%81mcu%E4%B9%9F%E8%83%BD%E9%96%8B%E5%A7%8B%E7%8E%A9%E9%9B%BB%E8%85%A6%E8%A6%96%E8%A6%BA%E4%BA%86-fd3f02192a39

沒有留言:

張貼留言