iT邦幫忙

2024 iThome 鐵人賽

DAY 3
0
佛心分享-SideProject30

從零開始打造超邊緣AI應用系列 第 3

Day 3 - 所以說那個 EdgeAI 到底要怎麼做呢?

  • 分享至 

  • xImage
  •  

前言

各位中秋節快樂~今天月色真美(夏目漱石:嗯?
接續著昨天的內容,今天要來和大家分享究竟 EdgeAI 是如何部署到 MCU 上的。

EdgeAI 是怎麼產出來的

首先,這邊先比較詳細的定義,這次的 EdgeAI Side-project 實際上放在 MCU 執行的內容只有“推論”(Inference)的部分。
大多在運行一個 Machine Learning 的應用時,會粗分兩個階段,一個是訓練 (Traning),另一個是推理(Inference),而在相比於大多數的 AI 應用都是在本地端進行訓練,然後同時在本地段進行推理,在 MCU 上的 EdgeAI 會先在性能比較好的電腦(或雲端)進行訓練,接著再透過優化過程把訓練好的模型轉為 MCU 可以執行的內容後交給 MCU 進行推理(如下圖),這就有點像是 Cross-compile 一樣。
EdgeAI on MCU
因此我們可以先簡單細分接下來的幾個步驟分別為:

  • 搜集資料
  • 訓練 Model
  • 最佳 Model
  • 部署到目標 MCU 上
    而昨天有提到,接下來我要使用的平台會是 ST 系列的開發板,因此,接下來介紹一下ST強大的開發生態鏈。

STM32

相信如果有在動手做一些小玩具的人一定都有聽過 STM32 的頂頂大名,相比於另一個也是很有名的 Arduino 開發板,STM32 擁有更高的彈性,更多的產品線選擇,以及更好的開發生態系。
如果有興趣的人可以到 ST 的官網去看到底他們有多少不同的晶片系列,這邊究先省略不談。

這裡想先著重介紹一下 STM32Cube 系列的工具,首先是 STM32CubeMX,一套可以快速上手新晶片的工具,能夠透過強大的 GUI 介面快速設定晶片不同腳位的設定,以及管理不同的安裝包,包括等等會提到的 Cube.AI 程式庫。
CubeMX
當分配好腳位以後,可以快速透過右上角的 GENERATE CODE 產生出程式碼模板,這個模板就會包含好所有先前在 GUI 設置的各種硬體周邊初始化內容,並且加入了 ST 所提供的程式庫(ST-HAL, ST-LL)
這兩個程式庫可以說是 ST 強大生態系的基礎之一,標準化的程式庫讓開發者在使用不同的晶片時能夠減少移植的時間成本,另外兩個不同的程式庫:

  • HAL - Hardware Abstraction Layer Library,提供更完善的抽象化,讓週邊設備更容易使用
  • LL - Low Layer Library, 提供更直接,更簡潔的操作,能夠讓效率最高
    也讓開發者有不同的彈性選擇。
    當然,也有一個完全集合所有功能的 STM32CubeIDE,提供了開發者非常完整的集合開發工具。

接著便要來簡單介紹 ST 令人眼花繚亂的 EdgeAI 相關工具,首先,ST 特別為了 EdgeAI 設立了一個官網,裡面除了有大量不同的工具,甚至還有 ST 官方或第三方合作提供的範例。

而工具類的內容,這邊介紹接下來最高機率用到的兩個內容,分別是:

  • ST-Model Zoo
    Model Zoo
    這是 ST 提供的一個 Github Repository,裡面包含了非常多預先訓練的模型,接下來第一週的測試就會先使用裡面的範例模型進行。
  • STM32Cube.AI
    Cube.AI
    這是 ST 提供的包含程式庫,轉換程式(把訓練好的model轉為MCU可執行的內容),驗證以及評估程式工具,接下來有大量的操作都會使用到這個工具來完成。

可以看到 ST 在進行這個 EdgeAI 上不但擁有非常多元的產品線(從 ARM Coretex M4~M7,以及最新的 M33 都有),並且也包含了非常豐富的開發生態工具,尤其是在 EdgeAI 開發相關上,也投入了不少心力,因此接下來決定使用 STM32 作為開發平台進行 SideProject 的實作。

今天的內容就到這邊~明天再來跟各位分享既然選擇了 STM32 作為開發平台,那我會選擇什麼樣的晶片(或開發板)進行開發呢?這個選擇又會帶來什麼樣的影響?且聽下回分解~


上一篇
Day 2 - 為什麼需要 EdgeAI,又可以拿來做什麼?
下一篇
Day 4 - STM32 是一個好吃的東西嗎?
系列文
從零開始打造超邊緣AI應用11
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言