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款開發板分成三大類依序幫大家介紹,而開發工具、平台、模型優化等就留待下次再幫大家介紹。