嵌入式部署机器学习模型---TinyML

我们目前生活在一个被机器学习模型包围的世界。在一天中,您使用这些模型的次数比您意识到的要多。诸如浏览社交媒体、拍照、查看天气等日常任务都依赖于机器学习模型。您甚至可能会看到此博客,因为机器学习模型向您推荐了此博客。

我们都知道训练这些模型的计算成本很高。但大多数时候,在这些模型上运行推理的计算成本也很高。我们使用机器学习服务的速度,我们需要足够快的计算系统来处理它。因此,大多数模型都运行在具有 CPU 和 GPU 集群(在某些情况下甚至是 TPU)的大型数据中心上。

大并不总是更好

当您拍照时,您希望机器学习的魔力立即发生。您不想等待图像发送到正在处理图像并再次发送回的数据中心。在这种情况下,您希望机器学习模型在本地运行。

当您说“Alexa”或“好的,Google”时,您希望设备立即响应您。等待设备将您的语音发送到对其进行处理的服务器,并检索信息。这需要时间并削弱用户体验。同样,在这种情况下,您希望机器学习模型在本地运行。

什么是 TinyML

TinyML 是机器学习和嵌入式系统的一个研究领域,它探索可以在微控制器等小型低功耗设备上运行的模型类型。它可以在边缘设备上实现低延迟、低功耗和低带宽模型推理。标准消费类 CPU 的功耗在 65 瓦到 85 瓦之间,标准消费类 GPU 的功耗在 200 瓦到 500 瓦之间,而典型的微控制器的功耗约为毫瓦或微瓦。这大约减少了一千倍的功耗。这种低功耗使得TinyML 设备可以在不插电的情况下使用电池运行数周、数月,在某些情况下甚至数年,同时在边缘运行 ML 应用程序。

机器学习的未来是微小而光明的

TinyML 的优点

  1. 低延迟:由于模型在边缘运行,因此无需将数据发送到服务器即可运行推理。这减少了输出的延迟。
  2. 低功耗:正如我们之前讨论的,微控制器的功耗非常低。这使得它们能够在不充电的情况下运行很长时间。
  3. 低带宽:由于数据不必不断发送到服务器,因此使用的互联网带宽较少。
  4. 隐私:由于模型在边缘运行,因此您的数据不会存储在任何服务器中。

TinyML的应用

通过总结和分析低功耗设备边缘的数据,TinyML 提供了许多独特的解决方案。尽管 TinyML 是一个新兴领域,但它已在生产中使用多年。“OK Google”、“Alexa”、“Hey Siri”唤醒词是 TinyML 的一个示例。在这里,设备始终处于开启状态,并正在分析您的声音以检测唤醒词。我将在这里添加一些 TinyML 的更多应用。

  1. 工业预测维护:机器很容易出现故障。在低功耗设备上使用 TinyML,可以持续监控机器并提前预测故障。这种预测性维护可以显着节省成本。澳大利亚初创公司 Ping Services 推出了一款物联网设备,该设备通过磁性连接到涡轮机外部并分析边缘的详细数据来自动监控风力涡轮机。该设备甚至可以在潜在问题发生之前向当局发出警报。
  2. 医疗保健: Solar Scare Mosquito 项目使用 TinyML 来遏制登革热、疟疾、寨卡病毒、基孔肯雅热等蚊媒疾病的传播。它的工作原理是检测蚊子的繁殖条件并搅动水以防止蚊子繁殖。它依靠太阳能运行,因此可以无限期地运行。
  3. 农业: Nuru 应用程序可帮助农民通过使用 TensorFlow Lite 在设备上运行机器学习模型拍摄照片来检测植物中的疾病。由于它可以在设备上运行,因此不需要互联网连接。这对于偏远农民来说是一个至关重要的要求,因为他们可能没有适当的互联网连接。
  4. 海洋生物保护:基于机器学习的智能设备用于实时监控西雅图和温哥华周围水道中的鲸鱼,以避免在繁忙的航道上发生鲸鱼袭击。

我该如何开始?

  1. 硬件: Arduino Nano 33 BLE Sense是用于在边缘部署机器学习模型的建议硬件。它包含一个运行频率为 64MHz 的 32 位 ARM Cortex-M4F 微控制器,具有 1MB 程序存储器和 256KB RAM。该微控制器提供足够的马力来运行 TinyML 模型。Arduino Nano 33 BLE Sense 还包含颜色、亮度、接近度、手势、运动、振动、方向、温度、湿度和压力传感器。它还包含一个数字麦克风和一个低功耗蓝牙 (BLE) 模块。该传感器套件对于大多数应用来说已经足够了。
  2. 机器学习框架:只有少数框架可以满足 TinyML 的需求。其中,TensorFlow Lite最受欢迎且拥有最多的社区支持。使用 TensorFlow Lite Micro,我们可以在微控制器上部署模型。
  3. 学习资源:由于TinyML是一个新兴领域,目前的学习资料并不多。但也有一些优秀的材料,例如 Pete Warden 和 Daniel Situnayake 的书“TinyML:在 Arduino 和超低功耗上使用 TensorFlow Lite 进行机器学习”、哈佛大学 Vijay Janapa Reddi 的 TinyML 课程以及 Digikey 关于 TinyML 的博客和视频。

结论

微控制器无处不在,它们收集大量数据。借助 TinyML,我们可以利用这些数据来构建更好的产品

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/62776.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux工具

一、yum yum可以看作一个客户端(应用商店)、应用程序,它如何知道去哪里下载软件? yum也是一个指令/程序,可以找到它的安装路径。 在list中可以看到yum能安装的所有软件,通过管道找到想要的,yum …

时序预测 | MATLAB实现Attention-GRU时间序列预测(注意力机制融合门控循环单元,TPA-GRU)

时序预测 | MATLAB实现Attention-GRU时间序列预测----注意力机制融合门控循环单元,即TPA-GRU,时间注意力机制结合门控循环单元 目录 时序预测 | MATLAB实现Attention-GRU时间序列预测----注意力机制融合门控循环单元,即TPA-GRU,时…

nvm安装后,安装并切换版本,node报错

1、下载 下载地址 https://github.com/coreybutler/nvm-windows/releases 这个版本是 v1.1.11,不喜欢的话,自己选版本 下载setup.exe,安装 2、安装 安装时候 安装路径可以自选,但是涉及到指向的路径,最好让它自己选&…

深入探索C语言自定义类型:打造你的编程世界

一、什么是自定义类型 C语言提供了丰富的内置类型,常见的有int, char, float, double, 以及各种指针。 除此之外,我们还能自己创建一些类型,这些类型称为自定义类型,如数组,结构体,枚举类型和联合体类型。 …

【TCP】四次挥手(最强详解!!通俗易懂!!)

目录 想要了解三次握手的话可以参考我的另外一篇博客 首先来了解一下FIN和ACK FIN ACK 接着我们再来具体的了解TCP四次挥手过程 转换为最最通俗理解方法: 想要了解三次握手的话可以参考我的另外一篇博客 【TCP】三次握手(最强详解!!通俗…

C++之std::distance应用实例(一百八十八)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

MySQL 8 数据清洗总结

MySQL 8 数据清洗三要素: 库表拷贝和数据备份数据清洗SQL数据清洗必杀技-存储过程 前提:数据库关联库表初始化和基础数据初始化: -- usc.t_project definitionCREATE TABLE t_project (id varchar(64) NOT NULL COMMENT 主键,tid varchar(…

以物联网为核心的智慧工地云平台:聚集智能技术,实现建筑工地智慧管理

智慧工地云平台源码,智慧工地项目监管平台源码,智慧工地可视化数据大屏源码 智慧工地云平台是将云计算、大数据、物联网、移动技术和智能设备等信息化技术手段,聚集在建筑工地施工管理现场,围绕人员、机械、物料、环境等关键要素&…

Docker Compose 安装使用 教程

Docker Compose 1.1 简介 Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的 快速编排 。从功能上看,跟 OpenStack 中的 Heat 十分类似。 其代码目前在 https://github.com/docker/compose 上开源。 Compose 定位是 「定义和运行多个…

Revit SDK:AutoJoin 自动合并体量

前言 Revit 有一套完整的几何造型能力,每一个体量都是一个GenericForm,这些体量可以通过拉伸、扫掠等创建。这个例子介绍如何将他们合并成一个体量。 内容 合并体量的关键接口: // Autodesk.Revit.DB.Document public GeomCombination Com…

Java String类(1)

String类的重要性 我们之前在C语言中已经涉及到字符串了,但是在C语言中要表示字符串只能使用字符数组或者字符指针,可以使用标准库提供的字符串系列函数完成大部分操作,但是这种将数据和操作数据的方法分离开的方式不符合面向对象的思想&…

任务执行和调度----Spring线程池/Quartz

定时任务 在服务器中可能会有定时任务,但是不知道分布式系统下次会访问哪一个服务器,所以服务器中的任务就是相同的,这样会导致浪费。使用Quartz可以解决这个问题。 JDK线程池 RunWith(SpringRunner.class) SpringBootTest ContextConfi…

vue3项目导入异常Error: @vitejs/PLUGIN-vue requires vue (>=3.2.13)

vue3项目导入异常 1、异常提示如下: failed TO LOAD config FROM D:\ws-projects\vite.co nfig.js error WHEN STARTING dev SERVER: Error: vitejs/PLUGIN-vue requires vue (>3.2.13) OR vue/compiler-sfc TO be pre sent IN the dependency tree.2、解决办法…

excel怎么设置任意选一个单元格纵横竖横都有颜色

有时excel表格内容过多的时候,我们通过excel设置任意选一个单元格纵横,竖横背景颜色,这样会更加具有辨识度。设置方式截图如下 设置成功后,预览的效果图

Remmina在ubuntu22.04中无法连接Windows

Remmina在ubuntu22.04中无法连接Windows 问题 提示为&#xff1a; 无法通过TLS到RDP服务器… 分析 原因是Remmina需要使用openssl通过RDP加密与Windows计算机连接&#xff0c;而ubuntu22.04系统中OpenSSL版本为3.0&#xff0c;Openssl3 将 tls<1.2 和 sha1 的默认安全级别…

如何使用Unity制作一个国际象棋

LinnoChess1.0 该项目旨在做一些Unity小游戏项目开发来练练手 如果有更新建议请私信RWLinno 项目地址&#xff1a;https://github.com/RWLinno/LinnoChess 目前效果 能够正常下棋&#xff1b;能够编辑棋盘&#xff1b;能够SL棋局&#xff1b;能够记录棋谱&#xff1b;能够显…

Unity MonoBehaviour事件函数的生命周期

Unity运行时候的默认的几个函数的执行顺序&#xff1a; 首先是Awake&#xff0c;OnEnable&#xff0c;Start等&#xff0c;后面是FixUpdate Update 最后是OnDisable、OnDestroy

LNMT架构

所谓的LNMT架构 指的就是Linux操作系统上部署Nginx web服务器、MySQL数据库服务器、Tomcat中间件服务器 L linux N nginx M mysql T tomcat 单机部署 1&#xff0c;安装 apache-tomcat 2&#xff0c;移动目录 3&#xff0c;复制第二个tomcat 4&#xff0c;…

2、结构型设计模式

结构型设计模式 目录 结构型设计模式1. 代理模式1.1 概述1.2 结构1.3 静态代理1&#xff09;抽象主题类 SellTickets2&#xff09;真实主题类 TrainStation3&#xff09;代理类 ProxyPoint4&#xff09;客户端类 1.4 JDK 动态代理1&#xff09;代理工厂类&#xff1a;ProxyFact…

【Terraform学习】Terraform模块基础操作(Terraform模块)

本站以分享各种运维经验和运维所需要的技能为主 《python》&#xff1a;python零基础入门学习 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8》暂未更新 《docker学习》暂未更新 《ceph学习》ceph日常问题解…