隨著新的工具和功能可供我們開(kāi)發(fā)人員在我們的系統(tǒng)中實(shí)施,機(jī)器學(xué)習(xí)讓嵌入式系統(tǒng)行業(yè)嗡嗡作響。 Arm Cortex-M
類型微控制器上的機(jī)器學(xué)習(xí)仍然相對(duì)較新,但有一些非常有趣的工具可供嵌入式開(kāi)發(fā)人員更輕松地將經(jīng)過(guò)訓(xùn)練的模型集成到他們的產(chǎn)品中,一種這樣的工具是 ST
Microelectronics STM32Cube.AI。
STM32Cube.AI 是 STM32CubeMX 的擴(kuò)展包,可在 STM32 Arm(r) Cortex(R)-M
處理器上啟用 AI。 STM32Cube.AI 不為開(kāi)發(fā)人員執(zhí)行培訓(xùn),但允許他們導(dǎo)入經(jīng)過(guò)訓(xùn)練的模型并將其集成到他們的運(yùn)行時(shí)環(huán)境中。你可以將
STM32Cube.AI 視為轉(zhuǎn)換工具,它采用神經(jīng)網(wǎng)絡(luò)模型并生成可在 STM32 微控制器上運(yùn)行的優(yōu)化代碼。
最新的 STM32Cube.AI 版本 6.0 允許開(kāi)發(fā)人員從流行工具導(dǎo)入機(jī)器學(xué)習(xí)模型,例如:
Keras
TensorFlow Lite
ONNX
開(kāi)發(fā)人員甚至可以選擇是使用 STM32Cube.AI 運(yùn)行時(shí)環(huán)境運(yùn)行模型,還是使用 TensorFlow Lite for
Microcontrollers 運(yùn)行時(shí)。
將模型放入嵌入式環(huán)境是很容易的部分。 經(jīng)常困擾嵌入式開(kāi)發(fā)人員的問(wèn)題是他們的機(jī)器學(xué)習(xí)模型是否能在微控制器上成功運(yùn)行。
畢竟,諸如此類的問(wèn)題:
運(yùn)行機(jī)器學(xué)習(xí)模型需要多少個(gè)執(zhí)行周期?
這個(gè)機(jī)器學(xué)習(xí)模型會(huì)占用多少閃存空間?
這個(gè)機(jī)器學(xué)習(xí)模型將占用多少 RAM 空間?
模型在目標(biāo)上是否會(huì)像在訓(xùn)練和驗(yàn)證期間一樣準(zhǔn)確?
STM32Cube.AI 有一個(gè)很棒的分析工具,可以用來(lái)回答很多這樣的問(wèn)題。 例如,我從 TensorFlow Lite
for Microcontrollers 網(wǎng)站訓(xùn)練了一個(gè)超級(jí)簡(jiǎn)單的示例模型,給定 x 值將預(yù)測(cè)正弦波的 y 值。 將模型導(dǎo)入 STM32Mx
后,我能夠分析模型并生成包含以下摘要的報(bào)告:
如你所見(jiàn),摘要為我提供了用于該模型的內(nèi)存大小,例如權(quán)重和激活以及執(zhí)行機(jī)器學(xué)習(xí)模型所需的乘法和累加指令的數(shù)量。(這是一個(gè)超級(jí)簡(jiǎn)單的模型,所以大小以字節(jié)為單位!對(duì)于現(xiàn)實(shí)世界的例子來(lái)說(shuō)不是很現(xiàn)實(shí))。
該報(bào)告還為模型提供了有用的細(xì)分,我們可以在其中看到神經(jīng)網(wǎng)絡(luò)中的每一層:
這些只是 STM32Cube.AI 為準(zhǔn)備進(jìn)入微控制器機(jī)器學(xué)習(xí)世界的嵌入式系統(tǒng)開(kāi)發(fā)人員提供的幾個(gè)小例子。
機(jī)器學(xué)習(xí)當(dāng)然是新事物,而且發(fā)展迅速,但 STM32Cube.AI
是一款免費(fèi)工具,可以幫助嵌入式開(kāi)發(fā)人員輕松地將其機(jī)器學(xué)習(xí)模型轉(zhuǎn)換為在微控制器上運(yùn)行。