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