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