• MCU嵌入式AI开发笔记-视频笔记同步更新


    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支持Tin

  • 相关阅读:
    Nuxt3框架局部文件引用外部JS/CSS文件的相关配置方法
    04 多表查询
    剑指Offer II 031. 最近最少使用缓存(LRU)
    Java学习笔记6.3.1 文件操作 - File类
    flink实战--大状态任务调优指南
    103.36.167.X在服务器删除、复制文件的时候会出现卡的情况,是什么原因?
    Java配置22-kafka消费者消费消息慢
    模板的特化
    OpenGL教程(五)
    NorFlash的存储原理
  • 原文地址:https://blog.csdn.net/phlr5/article/details/139755465