MCU嵌入式AI开发笔记
抖音、B站、视频号等站点搜索柔贝特三哥,笔记视频同步更新
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上能够快速运行的数据和库,另一部分包含一个轻量级推理引擎,能做出一个能跑在MCU上、只需几兆Flash甚至几兆SDRAM的方案。
目前,恩智浦已经推出了带有AI功能的MCU产品,MCX N系列是恩智浦集成NPU的第一个产品家族,MCX N94x和MCX N54x MCU系列中集成了恩智浦设计的用于实时推理的专用片上神经处理单元 (NPU)。据悉,与单独使用 CPU内核相比,片上NPU的ML吞吐量最高可提高 30 倍
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成本减低
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,林金龙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部署方案的过程和工作内容基本相同。可以概括为三步:训练验证模型、模型转换、生成二进制程序并部署。
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落地的方法鲁 冰 (《电子产品世界》编辑)》
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支持Tin