ST 意法半导体人工智能(AI)X-CUBE-AI 扩展包入门指南

news2024/11/25 22:59:51

引言

本用户手册指导了基于 IDE 逐步构建用于 STM32 微处理器的完整人工智能(AI)项目,自动转换预训练好的神经网络(NN)并集成所生成的优化库。本手册还介绍了 X-CUBE-AI 扩展包,该扩展包与 STM32CubeMX 工具完全集成。本用户手册还介绍了可选插件式 AI 测试应用程序或者用于 AI 系统性能和验证的实用工具。

本文档的第一部分是快速生成 STM32 AI 项目的实践性学习。采用一个 NUCLEO-F746ZG 开发套件和公开的几个用于深度学习(DL)的模型作为实践范例。任何 STM32 开发套件或者基于 STM32F3、STM32F4、STM32L4STM32L4+、STM32F7、STM32H7 或 STM32WB 系列微控制器的客户板也可在稍作修改后使用。

本文档的第二部分详细说明了 X-CUBE-AI 自动生成的 NN 库,以及嵌入式客户端推理 API。这里还介绍了使用 X-CUBE-AI 实现AI 性能和验证,以及各种 DL 工具箱中使用的功能。


1 概述

X-CUBE-AI 扩展包专门用于基于 STM32 Arm® Cortex®-M 的 MCU 上运行的 AI 项目。

当前版本用户手册中的描述基于:
• X-CUBE-AI r3.3.0
• 嵌入式推理客户端 API 1.0.0
用于本文档中各示例的预训练 Keras DL 模型包括:
• https://github.com/Shahnawax/HAR-CNN-Keras:在 Keras 中利用 CNN 实现人类活动识别
• https://github.com/Shahnawax/KWS-ANN-KERAS:KWS-ANN-KERAS - 关键词识别
提示 Arm 是 Arm Limited(或其子公司)在美国和/或其他地区的注册商标。

1.1 STM32Cube™是什么?

STM32Cube™源自意法半导体,旨在通过减少开发工作量、时间和成本,明显提高设计人员的生产率。

STM32Cube™涵盖整个 STM32 产品系列。

STM32Cube™包括:
• 一套用户友好的软件开发工具,覆盖从构想到实现的整个项目开发过程,其中包括:
– STM32CubeMX 图形软件配置工具 STM32CubeMX,可通过图形向导自动生成初始化 C 代码。
– STM32CubeProgrammer(STM32CubeProg),图形版本和命令行版本中可用的编程工具。
– STM32CubeMonitor-Power(STM32CubeMonPwr),测量并帮助优化 MCU 功耗的监控工具。

• STM32Cube™ MCU 包,针对于每个微控制器系列的综合嵌入式软件平台(例如,STM32F4 系列的STM32CubeF4),它包括:
– STM32Cube™硬件抽象层(HAL),确保在 STM32 各个产品之间实现最大限度的可移植性。
– STM32Cube™底层 API,通过硬件提供高度用户控制,确保最佳性能和内存开销
– 一套一致的中间件,比如 RTOS、USB、TCP/IP 和图形。
– 配备完整外设和应用示例的全部嵌入式软件实用工具


1.2 X-CUBE-AI 如何补充 STM32Cube™?

X-CUBE-AI 通过提供在计算和存储器(RAM 和闪存)方面均已优化的自动神经网络库生成器扩展STM32CubeMX,该生成器将预训练的神经网络从最常用的 DL 框架(如 Caffe、Keras、Lasagne 和 ConvnetJS)转换为自动集成到最终用户项目的库。项目自动完成设置,准备好在 STM32 微控制器上进行编译和执行。X-CUBE-AI 还为项目创建添加特定 MCU 过滤,从而选择符合用户 NN 特定标准要求(如 RAM 或闪存大小)的正确设备,进而扩展 STM32CubeMX。

X-CUBE-AI 工具可生成三种项目:
• STM32 MCU 上运行的系统性能项目,可精确测量 NN 推理 CPU 负载和存储器使用情况
• 验证项目,在桌面 PC 和 STM32 Arm® Cortex®-M 的 MCU 嵌入式环境下递增地验证 NN 在随机或用户测试数
据激励下返回的结果。
• 应用模板项目,可构建包括多网络支持的应用程序


1.3 X-CUBE-AI 内核引擎

X-CUBE-AI 内核引擎,如图 1 和图 2 所示,是 X-CUBE-AI 扩展包的一部分,之后将在第 1.3 节 介绍。它提供一个自动且先进的 NN 映射工具,利用有限并受约束的硬件资源为嵌入式系统的预训练神经网络(DL 模型)生成并部署优化且稳定的 C 模型。生成的 STM32 NN 库(专用和通用部分)可直接集成到 IDE 项目或者基于 makefile 的构建系统。

还可导出定义明确且特定的推理客户端 API(参考第 8 节 嵌入式推理客户端 API),用于开发客户端基于AI 的应用程序。支持各种用于深入学习的框架(DL 工具箱)和层(参考第 12 节 支持的深度学习工具箱和层深度学习)。



配备一个简单的配置接口。使用预训练的 DL 模型文件时,仅需要较少的参数:
• 名称:表示生成的 C 模型的名称(默认值为“network”)
• 压缩:表示用于减小权重/偏差参数大小的压缩系数(参考第 6.1 节 图形流和存储器布局优化器)
• STM32 系列:选择优化的 NN 内核运行时库

图 2,总结了上传的 DL 模型和目标子系统运行时的主要支持功能。

 



• 仅支持简单的张量输入和简单的张量输出
– 4 维形状:批、高度、宽度、通道(参考第 8.1 节 输入和输出 x-D 张量布局)
– 仅浮点类型

• 仅支持 32 位浮点生成的 C 模型
– 生成过程块(参考第 6.1 节 图形流和存储器布局优化器)
– 通过结构保证预训练模型的精度


1.4 STM32CubeMX 扩展

STM32CubeMX 是用于 STM32 微处理器的软件配置工具。单击一下,它即可利用图形向导(如引脚分配冲突处理器、时钟树设置助手等)为 STM32 创建完整的 IDE 项目,包括生成用于设备和平台设置(引脚、时钟树、外设和中间件)的 C 初始化代码。
 




从用户的角度来看,集成 X-CUBE-AI 扩展包可以视为添加 IP 或中间件 SW 组件。基于 X-CUBE-AI 内核,提供了以下主要功能:
• 利用可选特定 AI 过滤器移除内存不足的设备,扩展 MCU 过滤器选择器。如启用,将直接滤除没有 Arm®Cortex®-M4 或-M7 内核的 STM32 设备。
• 提供完整的 AI UI 配置向导,可上传多个 DL 模型。包括在桌面 PC 和目标上对生成的 C 代码进行的验证过程。
• 扩展 IDE 项目生成器,辅助生成优化 STM32 NN 库并将其集成到选定 STM32 Arm® Cortex®-M 内核与 IDE。
• 可选插件式应用程序可生成完整的即用型 AI 测试应用程序项目,包括生成的 NN 库。用户必须已将其导入到首选 IDE 内,才能生成固件映像并进行刷写。最终用户无需附加代码或修改。


1.5 缩写、缩略语和定义

表 1 详细列出了本文档中所用的特定缩略词和缩写词。
 




1.6 先决条件

必须安装以下软件包(参考第 2 节 安装 X-CUBE-AI):
• STM32CubeMX 5.0.1 或更高版本
• 附加软件包 - STM32CubeMX AI 3.3.0 包

必须安装用于 STM32 的一个以下工具链或 IDE:
• TrueSTUDIO® 适用于 STM32 v9.0.1 或更高版本的 TrueSTUDIO®(atollic.com/truestudio)
• IAR Embedded Workbench™ IDE - ARM v8.x or v7.x(www.iar.com/iar-embeddedworkbench)
• µVision® V5.25.2.0 - Keil® MDK-ARM 专业版(www.keil.com)
• System Workbench for STM32(SW4STM32)
• GNU Arm Embedded Toolchain(developer.arm.com/open-source/gnu-toolchain/gnu-rm)

可以使用 STM32CubeMX 支持的所有操作系统:
• Windows® 10 和 Windows® 7
• Ubuntu® 18.4 和 Ubuntu® 16.4(或衍生版本)

提示 • macOS®(x64)(已在 OS X® El Capitan 和 Sierra 上测试)


1.7 Ubuntu®是 Canonical Ltd.的注册商标

macOS®和 OS X®是苹果公司在美国及其他国家注册的商标。


授权

X-CUBE-AI 根据 Mix Ultimate Liberty+OSS+3rd-party V1 软件许可协议(SLA0048)交付。

 

登录大大通,了解更多详情,解锁1500+完整应用方案,更有大联大700+FAE在线答疑解惑!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1580322.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分类预测 | Matlab实现CPO-LSSVM冠豪猪算法优化最小二乘支持向量机数据分类预测

分类预测 | Matlab实现CPO-LSSVM冠豪猪算法优化最小二乘支持向量机数据分类预测 目录 分类预测 | Matlab实现CPO-LSSVM冠豪猪算法优化最小二乘支持向量机数据分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现CPO-LSSVM冠豪猪算法优化最小二乘支持向量…

【经典算法】LeetCode 5: 最长回文子串(Java/C/Python3实现含注释说明,Medium)

目录 题目描述思路及实现方式一:动态规划法思路代码实现Java版本C语言版本Python3版本 复杂度分析 方式二:中心扩展法思路代码实现Java版本C语言版本Python3版本 复杂度分析 总结相似题目 标签(题目类型):回文串、动态规划 题目描述 给定一…

OpenHarmony实战:瑞芯微RK3568移植案例

本文章是基于瑞芯微RK3568芯片的DAYU200开发板,进行标准系统相关功能的移植,主要包括产品配置添加,内核启动、升级,音频ADM化,Camera,TP,LCD,WIFI,BT,vibrato…

利用电动车进电梯检测系统识别电动车入楼行为,算法上实现的难点与方案

目前,我国电动自行车保有量已超过3.5亿辆。有限的充电场所难以满足日益增长的充电需求。许多人选择将电动车通过电梯带进家中充电。因此,火灾事故时有发生。数据显示,与电动车有关的起火事故占火灾总比35%。电梯空间狭小密闭,电动…

备战蓝桥杯(日益更新)(刷题)

备战蓝桥杯(日益更新)(刷题) 文章目录 备战蓝桥杯(日益更新)(刷题)前言:一、二分:1. acwing503 借教室:(二分 差分)2. ac…

计算机硬件组成

计算机硬件组成 基本组成核心组件连接方式与总线架构与技术特殊组件总结脑图 基本组成 CPU: 执行指令和进行数据处理内存: 存储程序和数据,分为RAM和ROM主板: 连接所有硬件的平台,传输电子信号输入设备: 如键盘、鼠标等输出设备: 如显示器、打印机等 核…

Taro框架中的H5 模板基本搭建

1.H5 模板框架的搭建 一个h5 的基本框架的搭建 基础template 阿乐/H5 Taro 的基础模板

OpenHarmony实战:轻量系统STM32F407芯片移植案例

介绍基于STM32F407IGT6芯片在拓维信息Niobe407开发板上移植OpenHarmony LiteOS-M轻量系统,提供交通、工业领域开发板解决方案。 移植架构采用Board与SoC分离方案,使用arm gcc工具链Newlib C库,实现了lwip、littlefs、hdf等子系统及组件的适配…

论文学习D2UNet:用于地震图像超分辨率重建的双解码器U-Net

标题::Dual Decoder U-Net for Seismic Image Super-Resolution Reconstruction ——D2UNet:用于地震图像超分辨率重建的双解码器U-Net 期刊:IEEE Transactions on Geoscience and Remote Sensing 摘要:从U-Net派生…

【Linux】进程的状态(运行、阻塞、挂起)详解,揭开孤儿进程和僵尸进程的面纱,一篇文章万字讲透!!!!进程的学习②

目录 1.进程排队 时间片 时间片的分配 结构体内存对齐 偏移量补充 对齐规则 为什么会有对齐 2.操作系统学科层面对进程状态的理解 2.1进程的状态理解 ①我们说所谓的状态就是一个整型变量,是task_struct中的一个整型变量 ②.状态决定了接下来的动作 2.2运行状态 2.…

R语言绘图 | 散点小提琴图

原文链接:R语言绘图 | 散点小提琴图 本期教程 写在前面 本期的图形来自发表在Nature期刊中的文章,这样的基础图形在日常分析中使用频率较高。 获得本期教程数据及代码,后台回复关键词:20240405 绘图 设置路径 setwd("You…

【数据结构】顺序表的动态分配(步骤代码详解)

🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:数据结构 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进…

算法设计与分析实验报告c++java实现(矩阵链连乘、投资问题、完全背包问题、旅行商问题、数字三角形)

一、 实验目的 1.加深学生对算法设计方法的基本思想、基本步骤、基本方法的理解与掌握; 2.提高学生利用课堂所学知识解决实际问题的能力; 3.提高学生综合应用所学知识解决实际问题的能力。 二、实验任务 用动态规…

防火墙操作!

当小编在Linux服务器上部署好程序以后,但是输入URL出现下述情况,原来是防火墙的原因!! 下面是一些防火墙操作! 为保证系统安全,服务器的防火墙不建议关闭!! 但是,我们可…

idea(2023.1.3)配置全局Maven环境

问题来源一: 1、每次在下载依赖时,会遇到这样的报错信息,报错信息如下显示:sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid cert;百度结果是:通常表示IntelliJ IDEA …

第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组A-E题(go、java实现)

第十四届蓝桥杯大赛软件赛省赛C/C 大学 B 组 A题:日期统计B题:01串的熵C题:冶炼金属D题:飞机降落E题:接龙数列 A题:日期统计 直接遍历2023年每一天,看数组中是否有符合的 java的coding如下&…

【Shell】各种条件语句的使用——test语句、if语句、case语句

Shell条件语句的使用 条件语句 Shell条件语句的使用条件测试的语法字符串测试表达式整数二元比较操作符逻辑操作符 if的条件语句的语法if的嵌套case语句语法 条件测试的语法 语法1&#xff1a;test <测试表达式> 利用test命令进行条件测试表达式的方法。test命令与<测…

【操作系统】段描述符、全局描述符表和选择子

一、保护模式的内存寻址过程 与实模式不同的是&#xff0c;保护模式下内存段不再是简单地用段寄存器加载一下段基址然后乘以16位结合偏移地址得出实际要访问的内存地址&#xff0c;而是通过选择子在全局描述符表中找到对应的段描述符&#xff0c;CPU从段描述符中提取段基址&…

vscode 重命名很慢或失败 vscode renames are slow

网上问题&#xff0c; 插件问题&#xff08;我遇见的排除&#xff0c;不是&#xff09;被其他程序占用问题&#xff0c;&#xff08;我这边是这个&#xff09; 解决方案&#xff1a; 打开【资源管理器】&#xff0c;使用火绒 或其他软件&#xff0c;查看文件夹 or 文件 被哪个…

2024.4.9-day12-CSS 常用样式属性和字体图标

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 作业 作业 <!DOCTYPE html> <html lang"zh-CN"><he…