MCU嵌入式AI开发笔记-视频笔记同步更新01~07集

MCU嵌入式AI开发笔记
抖音、B站、视频号等站点搜索柔贝特三哥,笔记视频同步更新

01嵌入式AI大的方向

STM32跑神经网络

http://news.eeworld.com.cn/mp/EEWorld/a134877.jspx
为什么可以在STM32上面跑神经网络?简而言之就是使用STM32CubeMX中的X-Cube-AI扩展包将当前比较热门的AI框架进行C代码的转化,以支持在嵌入式设备上使用,目前使用X-Cube-AI需要在STM32CubeMX版本5.0以上,支持转化的模型有Keras、TFlite、ONNX、Lasagne、Caffe、ConvNetJS。Cube-AI把模型转化为一堆数组,而后将这些数组内容解析成模型,和Tensorflow里的模型转数组后使用原理是一样的。

恩智浦MCU的AI工具链NANO.AI。

它主要包含两部分,一部分是将原始算法模型转换成MCU上能够快速运行的数据和库,另一部分包含一个轻量级推理引擎,能做出一个能跑在MCU上、只需几兆Flash甚至几兆SDRAM的方案。
目前,恩智浦已经推出了带有AI功能的MCU产品,MCX N系列是恩智浦集成NPU的第一个产品家族,MCX N94x和MCX N54x MCU系列中集成了恩智浦设计的用于实时推理的专用片上神经处理单元 (NPU)。据悉,与单独使用 CPU内核相比,片上NPU的ML吞吐量最高可提高 30 倍

TinyMaix RT-Thread

https://m.elecfans.com/article/2302927.html
TinyMaix:是矽速科技(Sipeed)利用两个周末的业余时间完成的项目,它是一款专为微控制器设计的轻量级开源机器学习库,面向单片机的超轻量级的神经网络推理库,即TinyML推理库,可以让你在任意单片机上运行轻量级深度学习模型。TinyMaix开源代码链接:https://github.com/sipeed/tinymaix。
TinyMaix作者已经做了一个RT-Thread的软件包r-tinymaix。可以在RT-Thread中工程中加入软件包即可以验证TinyMaix非常赞,可以让一个普普通通的单片机拥有AI能力,让嵌入式AI成本减低

TinyML

https://www.tinyml.org/
https://blog.csdn.net/wfing/article/details/106995562
https://yucheng.blog.csdn.net/article/details/107183870
TinyML 指的是在 mW 功率的微处理器上,实现机器学习的方法、工具和技术。它连接了物联网设备,边缘计算和机器学习。
TinyML 基金会在 2019 年组织了第一届峰会,这届峰会的成果如下:
TinyML 的技术硬件已经进入了实用性的阶段;
算法,网络以及低于 100KB 的 ML 模型,已经取得重大突破;视觉,音频的低功耗需求快速增长。
TinyML 将在以后几年,随着智能化的发展,获得更快的发展。这一领域也有着巨大的机会。

我该如何开始?
硬件: Arduino Nano 33 BLE Sense是用于在边缘部署机器学习模型的建议硬件。它包含一个运行频率为 64MHz 的 32 位 ARM Cortex-M4F 微控制器,具有 1MB 程序存储器和 256KB RAM。该微控制器提供足够的马力来运行 TinyML 模型。Arduino Nano 33 BLE Sense 还包含颜色、亮度、接近度、手势、运动、振动、方向、温度、湿度和压力传感器。它还包含一个数字麦克风和一个低功耗蓝牙 (BLE) 模块。该传感器套件对于大多数应用来说已经足够了。
机器学习框架:只有少数框架可以满足 TinyML 的需求。其中,TensorFlow Lite最受欢迎且拥有最多的社区支持。使用 TensorFlow Lite Micro,我们可以在微控制器上部署模型。
学习资源:由于TinyML是一个新兴领域,目前的学习资料并不多。但也有一些优秀的材料,例如 Pete Warden 和 Daniel Situnayake 的书“TinyML:在 Arduino 和超低功耗上使用 TensorFlow Lite 进行机器学习”、哈佛大学 Vijay Janapa Reddi 的 TinyML 课程以及 Digikey 关于 TinyML 的博客和视频。
这本书所有的项目是依赖于 TensorFlow Lite 在微控制器上的开发框架,所依赖的硬件环境,只有几十 kb 左右的存储空间。
项目
https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/micro
原文链接:https://blog.csdn.net/wfing/article/details/106995562
文章中所有的代码都基于 TensorFlow Micro 上的代码。当然,代码中也包括许多注释,我们会一一的分析代码中的最关键的部分以及为何要这么实现。
TensorFlow Micro
https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/micro
原文链接:https://blog.csdn.net/wfing/article/details/106995562

  1. 项目流程
    实现基于微控制器的 ML 项目开发流程如下所示:
  2. 获得简单数据集
  3. 训练深度学习模型
  4. 评估模型性能
  5. 转换成设备上运行的模型
  6. 将代码转换成二进制文件
  7. 部署二进制文件到微控制器

MCU AI部署技术和方法

作者 李冬冬1,林金龙2
Peter Warden等口1通过7步将TensorFlow I。ite框架深度网络模型部署在MCU上,成功在MCU上实现推理功能。图1是PeterWarden等在MCU上部署深度网络模型的步骤。其中步骤①~③是在服务器和PC上训练和验证深度模型;步骤④将已经验证源程序集成到工程中,生成可以在MCU上运行的二进制程序。
Bharath Sudharsan等提m资源受限的神经网络(Resource Constrained Edge.Neu—
ral Networks RCE—NN)01j设计流程.将在MCU上部署深度网络模型的过程分为5步:①构建并训练模型,确定模型大小、负载、操作和量化方式;②在可接受的精度损失前提下。进行模型转换和量化。降低模型大小,节省内存.降低计算需求;③将模型的量化版本转换为c语言数组,并将数组与应用主程序融合;④
构建二进制可执行程序文件;⑤将构建的二进制可执行程序文件写入MCU的Flash上,完成模型部署。
在ST[11方案中。将在MCU上部署深度网络模型的过程分为5步:获取数据、清洗数据和构建深度网络模型、面向MCU进行模型转换和优化、对转换和优化后的模型进行再训练和分析、利用开发工具将模型转换成C源程序并生成二进制文件。Renesas“将过程分为4步:利用深度学习框架构建和训练模型、模型转换、模型验证,以及在MCU上实现推理
在RCE—NN“方案中.第1步对应于图1中的步骤①~③。第2步与网1中的步骤④相对应。第3~5步与图1中的步骤⑤~⑦的内容相同。在ST卅方案中。第1~4步与图1中的步骤①~④相同,第5步实现图1中步骤⑤~⑦的功能。在Renesas[_”方案中,第1步对应于图1中的步骤①~③.第2和3步对应于图l中的步骤④,第4步对应于图l中的步骤⑤~⑦。
可见。不同MCU AI部署方案的过程和工作内容基本相同。可以概括为三步:训练验证模型、模型转换、生成二进制程序并部署。

CMSIS-NN与TensorFlow Lite

Arm在中间做了一个标准化的接口优化。上面直接去对接算法,下面去对接具体的硬件。这就把AI机器学习当做是一个以前的通讯库,或者是API来用,就可以了。图4是具体应用的流程。CMSIS-NN在ortex-M
上来实现的软件库 , 是 在2018年1月发布的,是开源的 , 你可以看到所有源代码,因此不会存在安全、自主可控的困惑。
片分别是Cortex-M4和Cortex-M33的芯片 , 在 做 CIFAR-10 时 ,TensorFlow Lite(注:Google
提供的嵌入式版本的CNN模型)用约120 ms才能完成某个识别;CMSIS-NN只需要20 ms左右。CMSIS-NN一直在更新,基本上每个季度有优化版。-《Arm MCU在边缘AI落地的方法鲁 冰 (《电子产品世界》编辑)》

02 TinyML学习

官网学习

https://www.tinyml.org/
https://www.tinyml.org/news/tinyml-deployment-working-group-white-paper
有一个开源项目
https://github.com/edgeimpulse/firmware-syntiant-tinyml
看了半天也没看到有用的学习资料,之后有一片文档:
《TinyML in 2024: Machine Learning at the Edge》https://research.aimultiple.com/tinyml/
提到了How to implement TinyML?
There are a couple of machine learning frameworks that support TinyML applications. These are:
也就是TensorFlow Lite支持TinyML,所以重点要研究TensorFlow Lite
●https://www.tensorflow.org/lite
●https://pytorc

  • 17
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
当面试MCU嵌入式软件的岗位时,以下是一些可能的面试题及其答案: 1. 什么是MCU嵌入式软件? MCU嵌入式软件是指在微控制器单片机上运行的软件,用于控制和管理硬件设备的操作。它通常包括底层驱动程序、中间件和应用程序。 2. 请介绍一下你在嵌入式软件开发方面的经验。 回答时可以提及你在嵌入式软件开发方面的项目经验、使用的编程语言和开发工具,以及你在解决实际问题和优化性能方面的能力。 3. 你熟悉的MCU架构有哪些? 回答时可以提及常见的MCU架构,如ARM Cortex-M系列、PIC、AVR等,并说明你对这些架构的了解程度和使用经验。 4. 请介绍一下你在嵌入式软件开发中常用的编程语言。 回答时可以提及C语言作为嵌入式开发的主要语言,以及其他可能使用的语言如汇编语言、C++等,并说明你对这些语言的熟悉程度和使用经验。 5. 你在嵌入式软件开发中遇到过哪些挑战,如何解决的? 回答时可以提及你在处理实时性要求、资源限制、功耗优化等方面遇到的挑战,并说明你采取的解决方案和取得的成果。 6. 请介绍一下你在嵌入式软件开发中常用的调试工具和技术。 回答时可以提及使用调试器、逻辑分析仪、示波器等硬件工具,以及使用断点、日志输出、仿真器等软件技术进行调试。 7. 你在嵌入式软件开发中如何进行单元测试和成测试? 回答时可以提及使用单元测试框架、模拟器、仿真器等工具进行单元测试,以及使用成测试平台和硬件实验室进行成测试。 8. 请介绍一下你对软件优化和性能调优的理解和经验。 回答时可以提及你对代码优化、算法优化、资源管理和功耗优化等方面的理解和实践经验。 9. 你在嵌入式软件开发中如何处理实时性要求? 回答时可以提及使用中断、定时器、任务调度器等技术来满足实时性要求,并说明你在处理实时任务和中断冲突方面的经验。 10. 请介绍一下你对软件工程和软件开发流程的理解。 回答时可以提及你对需求分析、设计、编码、测试和维护等软件开发流程的理解,以及你在项目中遵循的软件工程原则和实践。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柔贝特三哥

你的鼓励是我坚持创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值