來源:Digi-Key 作者: Jacob Beningo 機器學習,特別是 TinyML 有可能徹底改變嵌入式系統的設計和構建方式。從傳統上來講,這些系統采用了基于開發者對系統經驗的程序算法。機器學習帶來了不同的方法,其中系統算法基于對現實世界的觀察和數據。如果環境數據發生了變化,那么機器學習模型可以迅速利用數據重新學習。人工編碼的解決方案則需要重寫。 本文將探討由 STMicroelectronics STM32 微控制器系列支持的嵌入式系統的機器學習平臺和工具。 STM32 微控制器系列的機器學習支持 機器學習可以成為嵌入式系統開發者的強大工具。然而,開發者往往認為機器學習算法需要太多的處理能力,或者算法太大,以至于無法適應典型的微控制器,F實中,所選微控制器將更多地取決于希望通過機器學習做什么,而不是特定微控制器如何支持機器學習。 例如,圖 1 顯示了一系列支持機器學習的 STM32 微控制器系列。這些微控制器范圍從 STM32F0 到 STM32F7,前者運行頻率為 48 MHz,具有高達 256 KB 的閃存和 32 KB 的 RAM,后者運行頻率為 216 MHz、具有高達 2 MB 的閃存和 512 KB 的 RAM。 ![]() 圖 1:使用 STM32Cube.AI 和 NanoEdge 開發工具的 STM32 微控制器支持機器學習。(圖片來源:STMicroelectronics) 正如我們所了解的,有相當多的微控制器可以支持機器學習。真正的問題是,機器學習平臺必須能順利地支持廣泛的開發者。例如,對于嵌入式軟件團隊來說,擁有一名機器學習專家并不常見。相反,嵌入式軟件開發者被迫在他們的傳統技能之外還需精通機器學習。因此,需要一個平臺來支持有或沒有機器學習專家的團隊。STM32 機器學習生態系統的工具鏈有助于解決這個問題。 為沒有機器學習專家的嵌入式團隊提供幫助 可以肯定的是,設計和訓練機器學習算法似乎是一項艱巨的任務。開發者需要能夠獲取數據、設計模型、訓練模型,然后確保模型足以適合優化并將其部署到嵌入式系統中。 傳統上,機器學習模型是通過 TensorFlow Lite、PyTorch、Matlab 或其他工具創建的。這些工具往往遠超出嵌入式軟件開發者的舒適區或經驗。掌握這些工具并得到準確的結果不僅耗費時間,而且成本也很高。 STM32 機器學習生態系統包括一個被稱作 NanoEdge 的工具(圖 2),能幫助沒有機器學習專業知識或經驗的開發者在其設備上訓練、部署機器學習應用。 例如,開發者可以輕松地創建機器學習庫,用于諸如異常檢測、異常值檢測、分類和回歸等應用。然后,可以在 STM32 微控制器上部署這些庫。 ![]() 圖 2:NanoEdge 可以引導開發者完成整個機器學習的開發過程。(圖片來源:STMicroelectronics) 擁有 機器學習專家的嵌入式團隊怎么辦? 當一個開發團隊能夠求助機器學習專家時,他們將獲得更多工具來開發 STM32 微控制器的機器學習模型。例如,當有了專業知識時,開發團隊可以使用 TensorFlow Lite、PyTorch、Matlab 或其他一些工具來建模。經常出現的問題是,這些工具會產生未經優化的庫。這種庫在微控制器上的運行效率不高。 在 STM32 系列中,開發者可以利用 STM32Cube.AI 插件導入機器學習模型,并對其進行優化,以便在 STM32 微控制器上高效運行。該工具允許開發者在目標微控制器上運行、調整其機器學習模型。首先,開發者可以將其模型導入工具鏈,如圖 3 所示。然后,他們可以轉換模型,分析網絡,然后進行驗證。一旦完成這些工作,開發者就可在 STM32CubeIDE 內生成代碼,圍繞模型創建機器學習框架,以簡化嵌入式軟件開發。 ![]() 圖 3:正弦波發生器機器學習模型被導入 STM32CubeIDE.AI。(圖片來源:Beningo Embedded Group) 嵌入式軟件開發者必須向機器學習模型提供適當的輸入,以及檢查結果代碼。可以對結果進行操作,也可以對結果進行平均化或以任何對應用有意義的方式進行操作。圖 4 顯示了運行和檢查模型結果的簡單應用循環。 ![]() 圖 4:主循環圍繞機器學習模型。(圖片來源:Beningo Embedded Group) 結語 在 TinyML 的推動下,機器學習正以適當的方式融入嵌入式應用。為了獲得成功,開發者需要利用一個平臺。雖然看起來平臺選項幾乎每天都在出現,但 STM32 生態系統為開發者提供了一個簡單且可擴展的解決方案路徑。 在這個生態系統中,具有機器學習經驗的開發者可以利用其傳統工具,并使用 STM32CubeIDE.AI 插件來優化、調整解決方案。對于沒有機器學習專業知識的團隊,可以通過 NanoEdge 來簡化機器學習庫的開發,并快速、經濟地啟動和運行解決方案。 |