差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

后一修订版
前一修订版
tinyml [2022/03/01 14:32]
gongyusu 创建
tinyml [2022/03/22 18:24] (当前版本)
gongyusu
行 1: 行 1:
-## TinyML+## TinyML对RP2040的支持 
 +微型机器学习Tiny Machine Learning (TinyML) 是机器学习的一个研究领域,专注于在超低功耗的微控制器设备上开发和部署机器学习模型。TinyML使机器学习可以在在安全、低延迟、低功耗和低带宽的边缘设备上运行。正如哈佛大学博士Matthew Stewart所说,tinyML 是一个新兴的学科,它能够在资源受限的微控制器上实现低资源消耗、低功耗的机器学习算法。 
 + 
 +TinyML 重要性 
 +为什么 TinyML 如此重要?一个重要的原因是它很小! 
 + 
 +TinyML涉及的微控制器体积小且能效高,电池一次就能供电数年。同时这些微控制器比尺寸大的计算机和服务器更加实惠,低成本优势十分适合个人和小型企业进行部署应用。 
 + 
 +因此,低能耗高效能以及低成本的独特组合也意味着 TinyML非常适合嵌入式计算应用程序中的大规模应用,让人工智能变得随处可见成为了可能。 
 + 
 +“AI让边缘更智能,边缘让AI无处不在“。边缘AI能够在硬件设备上进行本地处理的AI算法,可以在没有网络连接的情况下处理数据。 
 + 
 +TinyML 是边缘人工智能的一个子集,它具有边缘计算的诸多优势: 
 +  * 可进行实时本地计算,降低延迟 
 +  * 降低远程通信要求,降低带宽成本 
 +  * 卓越的可靠性,即使在网络连接中断时也能持续 
 +  * 通过更少的传输和本地数据存储提高安全性 
 + 
 +### TinyML 软件 – 框架和平台 
 +虽然 TinyML 的专用硬件正迎头赶上,但目前大多数实施都严重依赖软件来优化机器学习模型。以下是一些软件框架和平台: 
 + 
 +#### 1. TensorFlow Lite Micro 
 +TensorFlow是谷歌的开源机器学习框架,能够帮助用户快速搭建低功耗、微小的硬件环境进行深度学习运算。TensorFlow Lite Micro 是 TensorFlow Lite 针对 AIOT 的轻量级 AI 引擎,用于在微控制器和其他资源受限的设备上运行机器学习模型。端云链接从 TencentOS Tiny 开始。 
 + 
 +TFLite Micro 允许您轻松地将常规 TensorFlow 模型压缩到仅几 KB,并附带大量示例模型,例如Hello World或Magic Wand,以展示各种 TinyML 基础知识和功能。 
 + 
 +#### 2. Edge Impulse 
 +Edge Impulse是一个专门针对 TinyML 应用程序开发的平台。凭借易于使用的基于Web的界面,Edge Impulse可以说是任何人收集数据、训练模型并最终将其部署到微控制器上的最简单的解决方案。最重要的是,它对开发人员免费。 
 + 
 +使用Edge Impulse开发TinyML还允许您利用他们的边缘优化神经 (EON) 编译器,与用于微控制器的 TFLite 相比,它可以运行内存减少 25-55% 和存储空间减少 35% 的神经网络——这是需要考虑的重要一点! 
 + 
 +与 TFLite Micro 一样,Edge Impulse 支持大量微控制器和开发板,还包括 Arduino Nano 33 BLE Sense 和 Wio Terminal。支持的设备可以在几分钟内轻松记录和上传数据集。 
 + 
 +#### 3. OpenMV 
 +OpenMV是另一个 TinyML 开发平台,主要专注于计算机视觉应用。这包括应用于任何类型的图像或视频的机器学习,如对象识别或图像分类。该平台围绕 OpenMV Cam H7 构建,这是一个在 ARM Cortex M7 处理器上运行的微控制器板,并且是 Micropython 可编程的。 
 + 
 +此外,OpenMV 提供了一个跨平台的 IDE,它具有强大的代码编辑器、调试终端和带有直方图显示的帧缓冲查看器——所有这些都是在 TinyML 中开发计算机视觉应用程序的关键组件! 
 + 
 + 
 + 
 +TinyML - 微型机器学习被广泛定义为机器学习技术和应用的一个快速发展的领域,包括硬件、算法和软件,能够在极低功耗下(通常在mW范围或以下)执行设备上的传感器数据分析,因此,可以实现各种始终在线的用例,并针对电池驱动的设备。 
 + 
 +机器学习(ML)是一个动态而强大的计算机科学领域,它几乎渗透到我们与之互动的每一个数字事物,无论是社交媒体、手机、汽车,甚至是家用电器。 
 +尽管如此,还有很多ML想去的地方,但却很难到达。这是因为许多最先进的机器学习模型需要大量的计算资源和功耗来执行推理,这是运行ML模型并对其输入数据进行预测的行为。 
 +对高性能计算资源的需求将许多ML应用程序限制在云上,在云上可以随时使用数据中心级别的计算。 
 +为了允许ML扩展其应用范围,并开启进程中的应用新时代,我们必须找到在更小、资源更受限的设备上促进ML推理的方法。这种追求导致了被称为微型机器学习或TinyML (TinyML基金会的商标术语,已成为该技术的同义词)的领域。 
 + 
 +[[https://​www.edgeimpulse.com|Edge Impulse]]于2022年3月1日,正值树莓派诞生10周年之日,正式宣布TinyML对树莓派Pico、RP2040的支持[[https://​www.edgeimpulse.com/​blog/​announcing-official-support-for-the-raspberry-pi-pico-rp2040|TinyML对树莓派Pico、RP2040的支持]],这样在强大的RP2040处理器上每个人都可以创建自己的自定义机器学习解决方案,从收集数据到在设备上运行推理。 
 ### 1. 如何使用? ### 1. 如何使用?
 +要开始使用树莓派RP2040和Edge Impulse,你需要:​
 +  * Raspberry Pi 2040微控制器:​ 预构建的固件和Edge Impulse Studio导出的二进制是为Raspberry Pi Pico量身定制的,但只需几个简单的步骤,您就可以收集数据,并与其他基于RP2040的板运行您的模型,如Arduino Nano RP2040 Connect。
 +  * (可选)如果你正在使用树莓派Pico,可以通过我们的嵌入式系统学习板,使它更容易连接外部传感器的数据收集/​推断。
  
-### 2. 支持功能+这个开发板Edge Impulse固件是开源的,托管在GitHub上 - [[https://​github.com/​edgeimpulse/​firmware-pi-rp2040|Edge Impulse firmware for Raspberry Pi RP2040]]。
  
-### 3未来计划+### 2支持应用: 
 +TinyML的典型应用包括:​ 
 +  * 关键字识别 
 +  * 物体识别与分类 
 +  * 手势识别 
 +  * 音频检测 
 +  * 机器监控
  
-### 4. 参考资料 +TinyML应用程序日常生活中的一个例子是谷歌和Android设备中使用的音频唤醒词检测模型。图2显示了一个尾迹字检测组件的示例。为了“打开”,当他们听到“OK谷歌”,Android设备使用了一个运行在DSP上14kB语音检测ML模型。其他许多虚拟助理也是如此
-  - {{:​tinyml_talks_eben_upton_210304.pdf|Pico/​RP2040上运行TinyMLPPT}}+
  
 +### 3. TinyML软件:​TensorFlow
 +在很多方面,TinyML背后的工具和概念背后的软件是它最重要的特性。
 +一般来说,TinyML开发中最流行和内置的生态系统是用于微控制器的TensorFlow Lite (TF Lite Micro)。TinyML在TF Lite Micro上的通用工作流如下图4所示。
 +TF Lite Micro是专门为资源受限的设备上的ML任务而设计的,其中mcu是重点。
 +一个基于python的环境,TF Lite Micro充满了内置的库和工具包:​
 +  * 数据采集
 +  * 预处理
 +  * 模型架构
 +  * 培训
 +  * 评价
 +  * 优化
 +  * 量化
 +
 +TinyML的好处: ​
 +TinyML的主要好处是它的可移植性。在廉价的微控制器上运行,使用小电池和低功耗意味着,使用TinyML,人们可以轻松地将ML集成到几乎任何廉价的东西中。
 +除此之外,TinyML还具有增加安全性的好处,这是由于计算的局部特性。在美国,数据不需要发送到云端。在物联网等应用程序中处理个人数据时,这一点非常重要。
 +
 +### 4. 参考资料
 +  * {{:​tinyml_talks_eben_upton_210304.pdf|在Pico/​RP2040上运行TinyML的PPT}}
 +  * [[https://​www.tinyml.org/​|TinyML官方网站]]
 +  * [[https://​www.allaboutcircuits.com/​technical-articles/​what-is-tinyml/​|What Is TinyML?]]