X-CUBE-AI是STM32生態(tài)系統(tǒng)中的AI擴(kuò)展包??勺詣?dòng)轉(zhuǎn)換預(yù)訓(xùn)練的人工智能模型,并在用戶項(xiàng)目中生成STM32優(yōu)化庫(kù)。
最新版的X-CUBE-AI v7.1.0在以下方面進(jìn)行了三大更新:
支持入門級(jí)STM32 MCU
支持最新的AI訓(xùn)練框架
改善用戶體驗(yàn)和性能調(diào)節(jié)。
我們通過(guò)提供更多用戶友好的界面,不斷增強(qiáng)STM32 AI生態(tài)系統(tǒng)的功能,并加強(qiáng)了神經(jīng)網(wǎng)絡(luò)計(jì)算中的更多操作。最重要的是,該擴(kuò)展包由意法半導(dǎo)體免費(fèi)提供。
在介紹X-CUBE-AI v7.1.0的三大更新內(nèi)容之前,我們先回顧一下X-CUBE-AI的主要用途。
什么是X-CUBE-AI擴(kuò)展包
X-CUBE-AI擴(kuò)展包,也稱STM32Cube.AI,裝配優(yōu)化模塊,確保從精度、內(nèi)存占用和電源效率方面為目標(biāo)STM32生成最佳擬合模型。
圖形優(yōu)化器
通過(guò)有利于STM32目標(biāo)硬件架構(gòu)的圖形簡(jiǎn)化和優(yōu)化自動(dòng)提高性能。使用了幾種優(yōu)化技術(shù),如計(jì)算圖重組、算子融合、常數(shù)折疊等。
量化器
X-CUBE-AI擴(kuò)展包支持FP32和Int8預(yù)訓(xùn)練模型。開(kāi)發(fā)人員可以導(dǎo)入量化神經(jīng)網(wǎng)絡(luò)以兼容STM32嵌入式架構(gòu),同時(shí)通過(guò)采用文檔中詳述的訓(xùn)練后量化過(guò)程來(lái)保持性能。在下一個(gè)版本中,還將考慮Int1、Int2和Int3。成功導(dǎo)入模型后,可在桌面和目標(biāo)STM32硬件上驗(yàn)證代碼。
內(nèi)存優(yōu)化器
內(nèi)存優(yōu)化器是一種高級(jí)內(nèi)存管理工具。優(yōu)化內(nèi)存分配以獲得最佳性能,同時(shí)符合嵌入式設(shè)計(jì)的要求??稍趦?nèi)部和外部資源之間實(shí)現(xiàn)內(nèi)存分配的智能平衡,還可以為模型創(chuàng)建專用內(nèi)存。開(kāi)發(fā)人員可以輕松地更新模型。
X-CUBE-AI v7.1.0的三大更新
在最新版本的X-CUBE-AI v7.1.0中,進(jìn)行了三大更新。
支持入門級(jí)STM32 MCU
為了讓您的邊緣設(shè)備在各個(gè)層面都支持AI,我們使X-CUBE-AI v7.1.0實(shí)現(xiàn)了對(duì)STM32 Arm? Cortex?-M0和Arm? Cortex?-M0+的全面支持。從現(xiàn)在起,用戶可以將神經(jīng)網(wǎng)絡(luò)帶至最小的STM32微控制器上。
開(kāi)發(fā)人員不僅可以在以下產(chǎn)品組合中找到用于各種用途的匹配芯片,還可以擁有一款具有AI啟發(fā)性的芯片。STM32的頻譜范圍從超低功耗到高性能系列和微處理器,均包含在內(nèi)。無(wú)線MCU等不同用途也適合AI應(yīng)用。
支持最新的AI框架
最新版本的X-CUBE-AI v7.1.0在Keras和TensorFlow?等廣泛使用的深度學(xué)習(xí)框架中添加了多種功能,并將TFLite runtime升級(jí)至2.7.0,將ONNX升級(jí)至1.9。
Keras通過(guò)Tensorflow?得到支持,支持的算子允許處理針對(duì)移動(dòng)或物聯(lián)網(wǎng)資源受限的運(yùn)行時(shí)環(huán)境的大量經(jīng)典拓?fù)?。例如,SqueezeNet、MobileNet V1或V2、Inception、SSD MobileNet V1等。在X-CUBE-AI v7.1.0中最高可支持TF Keras 2.7.0。
Tensorflow? Lite是在移動(dòng)平臺(tái)上部署神經(jīng)網(wǎng)絡(luò)模型的格式。X-CUBE-AI導(dǎo)入并轉(zhuǎn)換基于flatbuffer技術(shù)的tflite文件。處理多個(gè)算子,包括量化模型和量化感知訓(xùn)練或訓(xùn)練后量化過(guò)程生成的算子。
對(duì)于其他可以導(dǎo)出為ONNX標(biāo)準(zhǔn)格式的框架,如PyTorch?、Microsoft? Cognitive Toolkit、MATLAB?等,X-CUBE-AI同樣支持。
每個(gè)AI框架我們只支持所有可能層和層參數(shù)子集,這取決于網(wǎng)絡(luò)C API的表達(dá)能力和特定工具箱的解析器。
我們提供STM32Cube.AI運(yùn)行時(shí),以便在執(zhí)行AI應(yīng)用程序時(shí)獲得最佳性能。但是,開(kāi)發(fā)人員可以選擇TensorFlow? Lite運(yùn)行時(shí)作為一種替代方案,在多個(gè)項(xiàng)目中發(fā)揮作用。即使可能會(huì)降低性能,因?yàn)檫\(yùn)行時(shí)針對(duì)STM32的優(yōu)化程度較低。
除了深度學(xué)習(xí)框架外,X-CUBE-AI還涵蓋了來(lái)自著名開(kāi)源庫(kù)scikit-learn的機(jī)器學(xué)習(xí)算法,這是一個(gè)完整的Python機(jī)器學(xué)習(xí)框架,如:隨機(jī)森林、支持向量機(jī)(SVM)、k-means聚類和k最近鄰(k-NN)。開(kāi)發(fā)人員可以構(gòu)建大量有監(jiān)督或無(wú)監(jiān)督的機(jī)器學(xué)習(xí)算法,并利用簡(jiǎn)單高效的工具進(jìn)行數(shù)據(jù)分析。
X-CUBE-AI v7.1.0不直接支持來(lái)自scikit-learn框架或XGBoost包的機(jī)器學(xué)習(xí)算法。在完成訓(xùn)練步驟后,這些算法應(yīng)轉(zhuǎn)換為ONNX格式,以便部署和導(dǎo)入。skl2onnx實(shí)用程序通常用于將模型轉(zhuǎn)換為ONNX格式??梢允褂脦в蠴NNX導(dǎo)出器的其他ML框架,但請(qǐng)注意,X-CUBE-AI中ONNX-ML模型的導(dǎo)入主要使用 scikit-learn v0.23.1、skl2onnx v1.10.3和XGBoost v1.5.1進(jìn)行測(cè)試。
改善用戶體驗(yàn)和性能
調(diào)節(jié)X-CUBE-AI v7.1.0引入了多堆支持,開(kāi)發(fā)人員只需單擊即可輕松地將不同內(nèi)容分配到碎片化的內(nèi)存段上。
通過(guò)使用外部?jī)?nèi)存支持,開(kāi)發(fā)人員可以輕松地在不同的內(nèi)存區(qū)域分配權(quán)重。一旦模型存儲(chǔ)在多個(gè)數(shù)組中,便可將部分權(quán)重映射到內(nèi)部閃存,而其余的則映射到外部閃存。該工具使開(kāi)發(fā)人員可以根據(jù)模型要求和應(yīng)用程序內(nèi)存占用使用非連續(xù)閃存區(qū)。
圖形用戶界面還提供了生成代碼中使用的緩沖區(qū)的全面視圖。一旦選擇了模型,開(kāi)發(fā)人員就可以通過(guò)直觀地檢查統(tǒng)計(jì)數(shù)據(jù)來(lái)評(píng)估整體復(fù)雜性和內(nèi)存占用。模型中的每一層都清晰可見(jiàn),開(kāi)發(fā)人員可以輕松識(shí)別關(guān)鍵層。
該工具可幫助開(kāi)發(fā)人員加快速度,使我們能夠在桌面上驗(yàn)證模型,進(jìn)行快速基準(zhǔn)測(cè)試并檢測(cè)目標(biāo)STM32設(shè)備的最終性能。
驗(yàn)證過(guò)程結(jié)束時(shí),對(duì)比表總結(jié)了原始模型和STM32模型之間的準(zhǔn)確性和誤差。X-CUBE-AI還提供了每層的計(jì)算復(fù)雜度報(bào)告,以及運(yùn)行時(shí)測(cè)量的推斷時(shí)間。
X-CUBE-AI只是意法半導(dǎo)體為STM32用戶利用人工智能提供的廣泛生態(tài)系統(tǒng)的一部分。使用X-CUBE-AI可確保高質(zhì)量開(kāi)發(fā)的長(zhǎng)期支持和可靠性。每次推出新的主要版本時(shí),都會(huì)有針對(duì)性地定期更新,確保兼容最新AI框架。
(轉(zhuǎn)載)