RT-AK 之 STM32 插件快速上手(附源码)


本项目为 RT-AK 的一个实战 DEMO

致力于做一个保姆级教程。

本教程 RT-AK 适配目标平台:STM32

0. RT-AK 简介

目前该项目为 RT-AK 的示例 Demo,基于 ART-PI 硬件平台和 Mnist 数据集。

  • RT-AK: RT-Thread AI ToolkitRT-Thread AI 套件。

  • Github:

    https://github.com/RT-Thread/RT-AK

RT-AKRT-Thread 团队为 RT-Thread 实时操作系统所开发的 AI 套件,能够一键将 AI 模型部署到 RT-Thread 项目中,让用户可以 在统一的 API 之上进行业务代码开发,又能在目标平台上获极致优化的性能,从而更简单方便地开发端侧 AI 应用程序。

RT-AK 支持下,仅需要一行命令,python aitools.py --model xxx...,即可将 AI 模型部署到 RT-Thread 系统中:

详细的命令请查阅:[如何运行 aitools.py](# step1 运行 rt_ai_tools/aitools.py)


我们将致力于降低嵌入式 AI 落地的难度和门槛

1. 准备工作

  • Windows 10
  • Python >= 3.7

准备以下四份重要重要重要的材料:

IndexPrepareExample
1硬件以及 BSPART-PI BSP
2神经网络模型./rt_ai_tools/Model/keras_mnist.h5
3STM32 AI 插件X-CUBE-AI 下载解压,下文有介绍
4RT-AKRT-AK 代码克隆到本地

1.1 X-CUBE-AI 介绍

  • 下载地址:https://www.st.com/zh/embedded-software/x-cube-ai.html

  • 版本:V5.2.0

    TO DO LIST: 最新的版本是 V6.0.0,目前使用的是 V5.2.0,稍后的 RT-AK 将会更新

X-CUBE-AISTM32Cube.AI 生态系统的 STM32Cube 扩展软件包的一部分,能够自动转换预训练的神经网络。

X-CUBE-AI

下载界面

1.2 X-CUBE-AI 解压

下载后的文件夹界面

其中:

  • stm32ai-windows-5.2.0.zip 是我们所需要,该文件夹里面存放的是 X-CUBE-AI 模型转换软件: stm32ai
  • STMxxx.packSTM32Cube.AI 的静态库文件,无需解压,已经存在,位于 ./RT-AK/rt_ai_tools/platforms/stm32/X-CUBE-AI.5.2.0

解压 stm32ai-windows-5.2.0.zip

在这里我将其解压到:D:\Program Files (x86)\stm32ai-windows-5.2.0 ,可以在该路径下看见有一个 windows 文件夹。

记下该路径,重要重要重要

STM32: X-CUBE-AI 解压路径

1.3 ART-PI BSP

  1. 先打开 RT-Thread Studio

  2. 新建 ART-PI BSP

    如果在开发版的地方,没有找到 STM32H750-RT-ART-PI,请查阅:

    https://github.com/RT-Thread-Studio/sdk-bsp-stm32h750-realthread-artpi/blob/master/documents/UM5002-RT-Thread%20ART-Pi%20%E5%BC%80%E5%8F%91%E6%89%8B%E5%86%8C.md

RT-Thread Studio 新建 ART-PI

2. 执行步骤

step1 运行 rt_ai_tools/aitools.py

代码将会自动使用 STM32Cube.AI 的模型转换工具,获得一个集成了 AI 的 BSP

对,就是这么硬核,一步肝到位!

内部的流程请看源码或者 plugin_stm32 仓库下的 readme 文档

运行命令

进入 edge-ai/RTAK/tools 路径,运行 aitools.py

image-20210412194422222

# 运行命令
python aitools.py --project=<your_project_path> --model=<your_model_path> --platform=stm32 --ext_tools=<your_x-cube-ai_path> --clear

# 示例
python aitools.py --project="D:\RT-ThreadStudio\workspace\test" --model="./Models/keras_mnist.h5" --platform=stm32 --ext_tools="D:\Program Files (x86)\stm32ai-windows-5.2.0\windows" --clear

运行到该步骤操作已经结束,后续是补充说明。

image-20210414174056329

运行命令其他参数补充说明

# 指定转换模型的名称,--model_name 默认为 network
python aitools.py --project=<your_project_path> --model=<your_model_path>  --model_name=<model_name>  --platform=stm32 --ext_tools=<your_x-cube-ai_path>

# 保存运行 stm32ai 线程过程中产生的文件,--clear 默认为空
# 如果存在,则将会删除 `stm32ai` 运行时产生的工作文件夹,即`--stm_out`
python aitools.py --project=<your_project_path> --model=<your_model_path> --platform=stm32 --ext_tools=<your_x-cube-ai_path>

# 指定保存运行日志, --log 默认为空
python aitools.py --project=<your_project_path> --model=<your_model_path> --log=./log.log --platform=stm32 --ext_tools=<your_x-cube-ai_path>

# 指定保存的文件夹名称,--stm_out 默认是当天时间,比如 './20210223'
python aitools.py --project=<your_project_path> --model=<your_model_path> --platform=stm32 --ext_tools=<your_x-cube-ai_path> --stm_out <new_dir>

# 指定生成的 c-model 名,--c_model_name 默认是network
python aitools.py --project=<your_project_path> --model=<your_model_path> --platform=stm32 --ext_tools=<your_x-cube-ai_path> --c_model_name=<new_model_name>

运行参数详细说明

  • 主函数参数部分
ParameterDescription
--loglog 日志存放路径,默认是空,如果有,则将保存log日志文件,例如:./log.log
--projectOS+BSP 项目工程文件夹,默认为空,需要用户指定
--model神经网络模型文件路径,默认为 ./Models/keras_mnist.h5
--model_name神经网络模型转换后新的模型名,默认是 network
--rt_ai_libRT-Thread 官方提供的 RT-AK Lib ,默认是 ../rt_ai_lib
--platform指定硬件平台信息,目前支持:stm32k210,默认是 example
  • STM32 平台插件参数部分
ParameterDescription
--ext_toolsX-CUBE-AI 存放路径,模型转换工具,内有 stm32ai 可执行软件,需要用户指定
--cube_aiX-CUBE-AI 运行所需的静态库,默认为./platforms/stm32/X-CUBE-AI.5.2.0
--rt_ai_example存放rt_ai_<model_name>_model.c 示例文件,默认是 ./platforms/stm32/docs
--stm_out经过 stm32ai 线程处理之后产生的中间文件夹路径,默认是当天的时间戳命名
--workspacestm32ai 运行时产生的临时工作区,默认是./stm32ai_ws
--val_data默认为空,即使用内部自生成的随机数据集,允许用户自定义测试数据集,
--compress表示将应用的全局压缩因子,仅应用在全连接层,可选 “1|4|8”,默认值:1
--batches指示生成了多少随机数据样本,默认是10
--mode“analyze|validate” 模式(可选)+”generate“模式(必须有),1表示选中,在{'001', '011', '101', '111'}中选一个,默认是 001
–networkDocuments 中的模板文件的模型名,默认是 mnist
–enable_rt_libproject/rtconfgi.h 中打开宏定义,默认是 RT_AI_USE_CUBE
–clear是否需要删除 stm32ai 生成的中间文件夹 stm_out ,默认为False

step2 编译和烧录

本教程仅展示 RT-Thread Studio 编译,另外还支持以下几种编译方式:

  • Keil
  • 基于 RT-Thread EnvScons
  • 不基于 RT-Thread EnvScons

RT-Thread Studio 编译和烧录

RT-Thread Studio 中,找到项目工程,右键,

更新软件包 + 刷新工程

然后编译(),

最后烧录加显示。

编译成功

这时候你就已经成功获得了一个集成了 AIRT-Thread 的新的 ART-Pi BSP

就可以RT-Thread 系统上做应用开发啦。

示例应用代码提供

我们提供了一份运行模型推理的示例代码 mnist_app.c:

http://117.143.63.254:9012/www/RT-AK/mnist_app.zip:

  1. 下载解压,放置到 <BSP>/applications 路径下

image-20210409192729527

  1. 选中 RT-Thread Studio 中的 项目工程,右击刷新

image-20210409193019579

  1. 编译烧录,
  2. 输入命令:mnsit_app

image-20210409192638719


3. 完整的示例工程

完整的示例工程仓库地址:

下载即可食用

https://github.com/EdgeAIWithRTT/Project3-Mnist_Cube_RTT/tree/master/Mnist_RTT

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: x-cube-mcsdk-ful 5.4.4 是针对物联网设备的软件开发工具包(SDK)。该SDK由STMicroelectronics公司开发,用于帮助开发人员快速构建物联网设备应用程序。 x-cube-mcsdk-ful 5.4.4 提供了丰富的功能和特性,以支持物联网设备的连接、通信和数据管理。它包含了多种协议和协议栈,如MQTT、CoAP、HTTP等,能够满足不同物联网应用场景的需求。 该SDK还提供了丰富的API和例程,使开发人员可以快速集成和使用不同的传感器、执行器和网络接口。通过这些API和例程,开发人员可以轻松地访问和控制物联网设备的各种功能。 此外,x-cube-mcsdk-ful 5.4.4 还提供了云端连接和数据管理的功能。它与云平台集成并支持云端数据存储、远程升级和配置管理等功能。开发人员可以通过SDK提供的接口和功能,将设备数据传输到云端,并实现远程监控和控制。 总而言之,x-cube-mcsdk-ful 5.4.4 是一种功能强大的物联网设备开发工具包,提供了丰富的功能和特性,帮助开发人员快速构建物联网应用程序,并与云平台进行连接和数据管理。 ### 回答2: x-cube-mcsdk-ful 5.4.4是针对STMicroelectronics的X-CUBE-MCSDK软件套件的版本5.4.4。该软件套件用于开发具有驱动和控制功能的嵌入式系统,此软件套件主要面向电机控制应用。 X-CUBE-MCSDK是一个全面的软件套件,为用户提供了从电机驱动器和控制器硬件平台到现场总线通信和图形用户界面的各种软件组件。通过使用这个软件套件,用户可以快速开发电机控制应用,并且可以轻松地适应各种不同的硬件平台和环境。 在版本5.4.4中,X-CUBE-MCSDK引入了一些新的功能和改进。这些改进可以进一步提高电机驱动和控制的性能和效率。另外,版本5.4.4还修复了一些已知的问题和错误,以增强软件的稳定性和可靠性。 通过使用x-cube-mcsdk-ful 5.4.4,开发人员可以更轻松地实现高性能的电机控制应用。这个软件套件提供了许多有用的工具和函数,可以帮助开发人员实现电机驱动和控制的各种功能。此外,该软件套件还提供了详细的文档和示例代码,以帮助开发人员更好地理解和使用软件。 总之,x-cube-mcsdk-ful 5.4.4是一个功能强大的软件套件,适用于开发各种电机控制应用。它提供了丰富的功能和工具,能够帮助开发人员快速、高效地实现电机驱动和控制的各种需求。 ### 回答3: x-cube-mcsdk-ful 5.4.4是一个软件开发工具,它提供了一套用于开发物联网应用程序的框架和工具。这个版本号为5.4.4表示这是该工具的第五个大版本,其中的4指的是小的更新版本号。该工具允许开发人员轻松地创建与云端连接的物联网设备,并使用云服务进行数据传输和控制。 在x-cube-mcsdk-ful 5.4.4中,开发人员可以使用各种编程语言和硬件平台,如ARM和STM32系列微控制器。该工具提供了一系列丰富的功能,包括设备注册、数据采集和传输、云服务接口等。 通过x-cube-mcsdk-ful 5.4.4,开发人员可以实现各种物联网应用场景,如智能家居、工业自动化和智能城市。其强大的功能和易于使用的界面使开发人员能够更加高效地开发和调试物联网设备。 x-cube-mcsdk-ful 5.4.4还提供了周到的技术支持和文档说明,开发人员可以随时查阅以解决问题和获取支持。这使开发人员能够更好地理解该工具的使用方法和功能,从而更加轻松地进行物联网应用程序的开发。 总的来说,x-cube-mcsdk-ful 5.4.4是一个强大而灵活的物联网开发工具,它为开发人员提供了丰富的功能和简化的开发流程,使他们能够更加高效地开发物联网应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值