各位中秋節快樂~今天月色真美(夏目漱石:嗯?
接續著昨天的內容,今天要來和大家分享究竟 EdgeAI 是如何部署到 MCU 上的。
首先,這邊先比較詳細的定義,這次的 EdgeAI Side-project 實際上放在 MCU 執行的內容只有“推論”(Inference)的部分。
大多在運行一個 Machine Learning 的應用時,會粗分兩個階段,一個是訓練 (Traning),另一個是推理(Inference),而在相比於大多數的 AI 應用都是在本地端進行訓練,然後同時在本地段進行推理,在 MCU 上的 EdgeAI 會先在性能比較好的電腦(或雲端)進行訓練,接著再透過優化過程把訓練好的模型轉為 MCU 可以執行的內容後交給 MCU 進行推理(如下圖),這就有點像是 Cross-compile 一樣。
因此我們可以先簡單細分接下來的幾個步驟分別為:
相信如果有在動手做一些小玩具的人一定都有聽過 STM32 的頂頂大名,相比於另一個也是很有名的 Arduino 開發板,STM32 擁有更高的彈性,更多的產品線選擇,以及更好的開發生態系。
如果有興趣的人可以到 ST 的官網去看到底他們有多少不同的晶片系列,這邊究先省略不談。
這裡想先著重介紹一下 STM32Cube 系列的工具,首先是 STM32CubeMX,一套可以快速上手新晶片的工具,能夠透過強大的 GUI 介面快速設定晶片不同腳位的設定,以及管理不同的安裝包,包括等等會提到的 Cube.AI 程式庫。
當分配好腳位以後,可以快速透過右上角的 GENERATE CODE 產生出程式碼模板,這個模板就會包含好所有先前在 GUI 設置的各種硬體周邊初始化內容,並且加入了 ST 所提供的程式庫(ST-HAL, ST-LL)
這兩個程式庫可以說是 ST 強大生態系的基礎之一,標準化的程式庫讓開發者在使用不同的晶片時能夠減少移植的時間成本,另外兩個不同的程式庫:
接著便要來簡單介紹 ST 令人眼花繚亂的 EdgeAI 相關工具,首先,ST 特別為了 EdgeAI 設立了一個官網,裡面除了有大量不同的工具,甚至還有 ST 官方或第三方合作提供的範例。
而工具類的內容,這邊介紹接下來最高機率用到的兩個內容,分別是:
可以看到 ST 在進行這個 EdgeAI 上不但擁有非常多元的產品線(從 ARM Coretex M4~M7,以及最新的 M33 都有),並且也包含了非常豐富的開發生態工具,尤其是在 EdgeAI 開發相關上,也投入了不少心力,因此接下來決定使用 STM32 作為開發平台進行 SideProject 的實作。
今天的內容就到這邊~明天再來跟各位分享既然選擇了 STM32 作為開發平台,那我會選擇什麼樣的晶片(或開發板)進行開發呢?這個選擇又會帶來什麼樣的影響?且聽下回分解~