深度学习入门:使用CMSIS-NN在微控制器上部署模型的完整指南与Python Jupyter实践

CMSIS_NN:卷积神经网络 Introduction 物联网已经深入到我们生活的方方面面,例如穿戴式医疗设备、智能家居。大部分的物联网设备会将采集到的数据上传至云端,由后台进行数据处理和分析,再将结果返回给微处理器。然而这种云端处理数据的方式不适用于一些对实时性要求高的物联网边缘设备,通过ARM Cortex-M系列处理器内核进行Machine Learning成为了技术发展的需要,CMSIS-NN就是解决方法之一。机器学习运用到嵌入式系统中有以下的优点[1]: 实时性决策 增加数据的安全性和可靠性 无需依赖互联网 减少带宽 C 阅读详情

1. 引言

随着深度学习技术的日益成熟,其应用领域也在不断扩展。从大型数据中心到边缘设备,深度学习模型已经渗透到我们日常生活的各个方面。特别是在嵌入式领域,如微控制器,深度学习的应用为各种设备带来了前所未有的智能化能力。

但是,微控制器的计算能力和存储空间都相对有限,如何在这样的设备上运行深度学习模型成为了一个挑战。CMSIS-NN就是为此而生的一个库,它为ARM Cortex-M系列微控制器提供了一套高效的神经网络API。

在本文中,我们将详细介绍如何使用CMSIS-NN在微控制器上运行深度学习模型,并通过Python和Jupyter为您展示整个流程。

2. CMSIS-NN 简介

CMSIS-NN是ARM为Cortex-M系列微控制器设计的神经网络库。它旨在提供一套高效、轻量级的神经网络API,使得开发者可以在资源受限的微控制器上运行深度学习模型。CMSIS-NN优化了各种常见的神经网络层,如卷积层、全连接层等,确保它们在微控制器上的运行效率。

3. 准备工作

在开始之前,我们需要确保已经安装了以下工具和库:

  • Python环境
  • Jupyter Notebook
  • TensorFlow (用于模型训练和转换)
  • CMSIS-NN库
3.1 安装必要的库

在Python环境中,我们可以使用pip来安装所需的库:

!pip install jupyter tensorflow
3.2 获取CMSIS-NN库

您可以从ARM的官方GitHub仓库中克隆CMSIS-NN库:

git clone https://github.com/ARM-software/CMSIS_5.git

这将会下载CMSIS-NN以及其他CMSIS组件。为了本教程,我们主要关注CMSIS_5/CMSIS/NN目录。

4. 使用Python和Jupyter训练一个简单的模型

在开始使用CMSIS-NN之前,我们首先需要一个深度学习模型。为了简化,我们将使用TensorFlow来训练一个简单的模型,该模型可以识别手写数字(基于MNIST数据集)。

4.1 加载数据集

首先,我们需要加载MNIST数据集。幸运的是,TensorFlow提供了一个简单的API来做到这一点:

import tensorflow as tf

# 加载MNIST数据集
mnist = tf.keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

# 归一化图片数据
train_images = train_images / 255.0
test_images = test_images / 255.0
4.2 定义和训练模型

接下来,我们将定义一个简单的神经网络模型,并使用MNIST数据集进行训练:

# 定义模型
model = tf.keras.Sequential([<
TinyML框架选型与嵌入式AI部署实战指南 机器学习模型部署正从云端向边缘设备延伸,催生了TinyML(微型机器学习)这一关键技术领域。其核心原理在于通过模型剪枝、量化等技术,将轻量化后的神经网络部署到资源受限的微控制器上运行。这项技术的价值在于实现了低延迟、高隐私性的本地智能推理,并显著降低了功耗与成本。其应用场景广泛覆盖工业预测性维护、语音唤醒、视觉检测等物联网与边缘计算领域。本文聚焦于TinyML的工程实践,深入解析了TensorFlow Lite Micro和Edge Impulse等主流框架,并提供了从模型优化到硬件选型的完整部署指南,特别 阅读详情

相关推荐

ML-KWS-for-MCU开源审计:从TinyML到MCU关键词识别的工程实践

边缘AI的核心理念,是将机器学习能力下沉到资源受限的终端设备。在微控制器(MCU)上实现关键词识别,正是这一理念最具代表性的落地场景。传统语音识别依赖云端算力,而TinyML技术通过模型压缩、特征提取优化和轻量级推理框架,让设备在本地即可完成唤醒词检测。本文从工程架构和源码实现出发,系统剖析ARM开源的ML-KWS-for-MCU项目,解读其DS-CNN模型设计、MFCC特征提取、CMSIS-NN算子调用以及后处理状态机等关键环节,并结合实际部署中的编译问题、性能调优和移植流程,为嵌入式开发者提供一份可参考

weixin_33834910的博客 537

嵌入式单片机上移植CMSIS-NN神经网络库的方法

本文详细介绍了将CMSIS-NN v6.0.0神经网络库移植到瑞萨RA8单片机(VisionBoard开发板)的过程。CMSIS-NN是专为Cortex-M处理器优化的神经网络计算库,能最大化性能并最小化内存占用。文章从创建RT-Thread项目开始,逐步讲解添加CMSIS-NN源码、修改配置文件、解决编译问题等关键步骤,并重点说明了如何修改测试脚本使其支持RT-Thread平台。最后还提供了单元测试方法和常见问题的解决方案,为在MCU上实现AI算法提供了实用指南。

嵌入式技术开发 373

Arm Cortex-M 高效神经网络计算

本文源自ARM CMSIS-NN项目的一篇论文”CMSIS-NN: Efficient Neural Network Kernels for Arm Cortex-M CPUs”。CMSIS-NN是一种高效的内核,用于将最大化性能和最小化内存占用的神经网络应用于Arm Cortex-M处理器上。基于CMSIS-NN核的神经网络在推理运行时间上提高4.6倍,在能效上提高4.9倍......

abcxy2161的博客 2183

【信息科学与工程学】【控制科学】第十二篇 微型计算机控制技术01

更精确的经典模型:I1在第5周期WB结束,I2最早可在第6周期进入EX,但I2在ID阶段就需要R1,因此I2的ID需在第6周期,而I1的WB在第5周期,所以I2的ID可以紧接在第6周期,但中间仍有一个stall(因为I1的EX结果要等到MEM之后才能转发给ID?有优先级继承后,Task_L被提升优先级,不会被Task_M抢占,阻塞时间缩短为Task_L剩余执行时间(9ms),仍可能超过10ms,但可通过调整任务周期或使用中断处理缓解。电感L=10μH,输出电容C=100μF,ESR=5mΩ。

weixin_49199313的博客 8588

CMSIS-NN部署全流程:Python预处理与Jupyter验证指南

CMSIS-NN是ARM面向Cortex-M微控制器的轻量级C语言神经网络推理库,其核心价值在于超低内存占用与无OS依赖,广泛应用于STM32、GD32、RP2040等资源受限边缘设备。但因其不支持动态量化与运行时算子调度,所有模型适配必须前置到Python端完成——包括int8量化参数校准、ONNX算子兼容性验证、权重C数组生成及QEMU仿真比对。技术本质是构建确定性输入:用PyTorch/TensorFlow训练后,通过torch.fx追踪、ONNX Runtime一致性校验、NumPy内存模拟等手段,

weixin_28684825的博客 175

如何使用 CMSIS-NN 在微控制器上运行深度学习模型_python_Jupyter _代码_相关文件_下载

CMSIS NN Lib 示例 arm_nnexample_cifar10 用于 Cortex-M4 和 Cortex-M7。 该示例针对 uVision Simulator 以及 STM32F407 DISCOVERY 板进行了配置。 script文件夹 #define IMG_DATA {...}它包含一个 Python Jupyter 笔记本,用于使用新的自定义图像生成 数据。 有关更多信息,请阅读教程。 请注意,微控制器项目是使用在 Windows 上运行的 Keil MDK-ARM 构建的,如果您还没有安装 IDE,您可以在此处找到安装的副本和说明。 更多详情、使用方法,请下载后阅读README.md文件

fdtd(时域有限差分)仿真

基础入门阶段采用 Step by step 的教学方式带着做具体的案例,在案例中学习 FDTD 应用的。的痛难点,将 FDTD 仿真引入实验当中,通过软件可视化处理有效直观的展示仿真的流程,与实验数。图像传感器,OLED 和液晶,表面计量,表面等离子体,石墨烯,太阳能电池,集成光子组件,超材。料,衍射光学和光子晶体。波,场极化,磁场,周期性结构,半球功率积分等设计解决方案,提供时域有限差分分析函数,时域。子光学传感器、热电子光探测器的光学特性研究、光学微腔宽带吸收器等多个方向的研究方法。

y2715163545的博客 5404

产品需求从场景,初始需求IR,产品需求 OR,设计需求DR,设计规格DS的具体案例说明,以扫地机产品为例

摘要: 以扫地机器人"宠物粪便避障"功能为例,说明从用户场景到产品落地的完整需求转化路径。初始需求(IR)源于养宠家庭痛点,要求100%避障并自动告警;产品需求(OR)转化为≥98%识别准确率等量化指标;设计需求(DR)拆解为感知、决策、执行三大技术模块;最终形成传感器选型(如索尼IMX678)、芯片规格(高通QCS6490)等设计规格(DS)。通过实验室模拟和用户测试验证,该功能使产品溢价30%,养宠家庭购买占比达52%,实现技术与商业价值的统一。

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 749

orange软件:入门使用

orange做数据分析契机实验手册目录orange软件部分界面展示小试牛刀:数据导入和展示小试牛刀:散点图绘制总结 契机 今天在上大数据时代实验课,作为一名软件工程专业的大三学生,在上这节公选课之前就决定这节课做完这个学期所有的实验报告,可以说“有亿点”不屑;尤其当老师说Python很麻烦的时候,我更是震惊了,因为我接触过这么多编程语言,Python真的很友好了,很傻瓜,但是当老师打开实验手册的时候,我真香了!!!下面先来看看手册的目录: 实验手册目录 为什么会真香呢,因为目录里这些有好多机器学习算法!

weixin_45880844的博客 1万+

Python 爬虫实战:抓取应届生求职网校招岗位信息,助力学子就业

应届生求职网作为国内知名的招聘平台,汇聚了大量企业的校招岗位信息。了解这些岗位信息,对于应届毕业生制定求职策略、企业制定招聘计划以及相关就业市场分析等都具有重要意义。因此,本文将深入探讨如何运用 Python 爬虫技术从应届生求职网平台抓取校招岗位信息,为应届毕业生提供有益的就业信息支持。本文深入探究了利用 Python 爬虫技术从应届生求职网平台抓取校招岗位信息的全流程。从前期的环境搭建、模拟登录,到核心的数据抓取、存储,再到后续的数据分析与可视化,都详细展开讲解并提供代码支持。

u014481728的博客 1297

Claude Code 分布式并行开发最佳实践:1中枢+10Worker跨多Git仓库全流程落地

本文介绍了一套基于Claude Code和Git Worktree的分布式并行开发方案,解决多仓库、微服务开发中的核心痛点。方案采用"1个决策中枢+10个并行Worker"架构,中枢负责任务拆解和调度,每个Worker绑定独立仓库实现完全隔离开发。关键优势包括:任务并行效率提升10倍、跨仓库依赖自动编排、版本统一管理、零第三方依赖。文章详细提供了环境准备、架构设计、中枢搭建和初始化脚本等全流程落地指南,特别适合多仓库协同的全栈开发场景。

AI天才研究院 231

VTK GPU 加速渲染技术

/ 创建颜色工具// 创建立方体数据// 创建OpenGL映射器(注意使用vtkOpenGLPolyDataMapper而不是常规的vtkPolyDataMapper)// 启用VBO(顶点缓冲对象)// 声明几何体是静态的以获得最佳性能// 创建actor// 创建渲染器、渲染窗口和交互器renderWindow->SetWindowName("VTK自定义着色器示例");// 添加actor到渲染器。

深之JohnChen的专栏 1230

新系统申请软件著作权详细操作说明

今年八月底版权中心系统升级,新系统相对好用一些,至少不用再拿IE访问了,但是多了一项实名认证。下面介绍新系统的操作流程。 目录注册、登录和实名认证注册登录实名认证软件登记申请申请表填写鉴别材料身份证明文件权利归属证明文件其他材料提交材料变更登记 注册、登录和实名认证 首先访问版权中心系统:https://register.ccopyright.com.cn/login.html,如果老系统有账号直接登录即可,没有的话需要注册。 注册 点击注册按钮进入注册。 根据实际情况选择个人或单位,每个个人或单位只能在

Programming Talk 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: 深入探索RTPS/DDS协议:为嵌入式设备打造的可移植C++实现指南
下一篇: uLua:在AVR 8位微控制器上运行的高效Lua编译器与迭代器详细指南
普通网友
博客等级 码龄6年 2万+粉丝 1222原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

m0_57781768

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

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

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

打赏作者

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

抵扣说明:

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

余额充值