TinyML:是否是FPGA在人工智能方面的最佳应用?

news2024/10/7 2:18:15

66f037987fc09777cbf2a8c8fa5bcf80.jpeg

TinyML 也是机器学习的一种,他的特点就是缩小深度学习网络可以在微型硬件中使用,主要应用在智能设备上。

超低功耗嵌入式设备正在“入侵”我们的世界,借助新的嵌入式机器学习框架,它们将进一步推动人工智能驱动的物联网设备的普及。

FPGA一直以低功耗、可重构的特点在各个领域内应用,同时也可以大大增加物联网应用环境,所以在FPGA上应用TinyML是否是FPGA方便的最佳应用?我们接下来分析一下TinyML的特点再来总结。

接下来让我们翻译这个行话:什么是 TinyML?而且,更重要的是 - 它可以(也不能)用于什么?

什么是 TinyML?

机器学习是一个流行词,已经存在了一段时间,有许多有用的应用程序需要理解混沌数据,目前的应用中它很少与硬件相关联。通常,如果一定要与硬件那么通常通过云相关联,而云通常与延迟、耗电和连接速度有关。

38be1c2fd056d6fd6687fe37a5962ea6.png

然而,在设备中应用机器学习并不是什么新鲜事。几年来,我们的大多数手机都内置了某种神经网络。设备音乐识别,以及许多相机模式(如夜视和人像模式)只是依赖嵌入式深度学习的几个例子。这些算法可以识别我们更有可能再次使用的应用程序,并关闭不需要的应用程序来延长手机电池。然而,嵌入式 AI 面临着许多挑战,其中最重要的挑战就是功率和空间。这就是 TinyML 的用武之地。

设备上的传感器数据需要强大的计算能力,这会导致存储容量有限、中央处理器 (CPU) 有限和数据库性能下降等问题。TinyML 通过将人工智能嵌入到小块硬件中,将机器学习带到了“现场”。有了它,就可以利用深度学习算法在设备上训练网络并缩小它们的大小,而无需将数据发送到云端,从而减少分析它的延迟。

d040902043eb85bb1c95eb051b19736d.png

TinyML:了解基础知识

Google 的 TinyML 大师和 TensorFLow Lite 工程负责人 Pete Warden 与 Daniel Situnayake 一起出版了一本书。这本书“TinyML:在 Arduino 和超低功耗微控制器上使用 TensorFlow Lite 进行机器学习”已成为该领域的参考。

302587201370774417de8578dd0ba033.png

最后,TensorFlow Lite是谷歌创建的嵌入式机器学习框架,它有一个专门为微控制器设计的子类别。2019 年,除了 TensorFlow Lite 之外,其他框架开始专注于让深度学习模型更小、更快,并适配嵌入式硬件,包括uTensor和Arm 的 CMSIS-NN。与此同时,许多教程开始出现,内容是关于如何在 AI 驱动的微控制器上使用 TinyML 和类似框架来训练、验证然后通过推理引擎在硬件上部署小型神经网络集。

机器学习通常与优化有关,但 TinyML 不仅仅是与优化有关:一些云应用程序编程接口 (API) 只是排除交互性,并且从功耗角度来看过于受限。最重要的是,这些限制使边缘计算变得更慢、更昂贵且更不可预测。

与前面提到的基于手机上应用的机器学习的不同之处在于,TinyML 使电池或能量收集设备能够运行,而无需因功率限制而手动充电或更换电池。把它想象成一个永远在线的数字信号处理器。这转化为一种运行功率低于 1 毫瓦的设备(夸张描述),因此该设备要么能够使用电池运行多年,要么可以使用能量收集。这也意味着这些设备根本无法通过无线电连接,因为即使是低功率的短距离无线电也会使用数十到数百毫瓦的功率,并且它只允许短时间的功率爆发。这些限制还导致需要能够在限制为数十 KB 的极小内存限制下运行的代码,因此需要将 TinyML 与 raspberry 或手机上的代码区分开来。

TinyML:当前的应用概览

b84cc87201d2d440a415cca495909ce5.png

根据Emerging Spaces 对 Pitchbook的评论,自 2020 年 1 月以来,TinyML 已投资 2600 万美元,其中包括加速器、早期投资者和后期投资者的风险投资。与 AI 和 ML 的其他更成熟的分支(例如数据标签)相比,这相对较小。在趋势中,交易数量与认知计算、下一代安全和 AIOps 等其他热门话题竞争。

81e07c74407018c8dd31a3442902c33c.png e3d9318b2020cb48a0466105ae259755.png

TinyML:工作机制

TinyML 算法的工作机制与传统机器学习模型几乎完全相同,通常在用户计算机或云中完成模型的训练。训练后处理是 TinyML 真正发挥作用之处,通常称为“深度压缩”(deep compression)。

5bf55f26517b5eeb5c388eca54b908fc.png深度压缩示意图。来源: ArXiv 论文

TinyML:展望未来

今年秋天,哈佛大学推出了课程CS249R:微型机器学习,提到“机器学习的爆炸式增长和 TensorFlow (TF) 等平台的易用性使其成为现代计算机科学专业学生不可或缺的学习课题”。

今天,世界上有超过 2500 亿个嵌入式设备在运行,预计每年增长 20%。,这些设备正在收集大量数据,并在云端处理这些数据提出了相当大的挑战。在这 2500 亿台设备中,目前正在生产的大约 30 亿台能够支持目前正在生产的 TensorsFlow Lite。TinyML 可以弥合边缘硬件和设备智能之间的差距。

总结

随着物联网设备的增加,多传感器的融合以及数量处理也是比较大的特点,所以低功耗的FPGA在这方面会大方异彩。

在这方面,FPGA厂商Lattice早就推出了基于超低功耗(iphone手机上曾用的up5k)FPGA的TinyML开发平台,并且开源了声音和人脸识别的开源方案,链接如下:

https://github.com/tinyvision-ai-inc

https://www.latticesemi.com/Products/DevelopmentBoardsAndKits/HimaxHM01B0

随着新智能设备和物联网设备数量的增加,TinyML在低功耗FPGA上的应用有可能在无处不在、更便宜、可扩展且更可预测的边缘嵌入 AI 设备上大量应用,从而改变 ML 的应用范式。

08220cfc5f393ea9479ec621e29335c1.gif

点分享

01904391b38620ca4d0e48001d15794a.gif

点点赞

ab7a28cffd9517a5c72df6408d45d23c.gif

点在看

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

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

相关文章

机器学习:一文从入门到读懂PCA(主成分分析)

深度学习:PCA白化前置知识内积的几何意义基基变换不同基下的向量变换逆矩阵不同基下的空间变换方差协方差协方差矩阵协方差矩阵对角化特征值分解、空间变换主成分分析(PCA)两个原则公式推导求解流程代码实现PCA的优缺点优点缺点前置知识 维度…

【测试沉思录】18.如何测试微信小程序?

作者:雷远缘 编辑:毕小烦 一. 先知道小程序是什么 啥是小程序? “小程序是一种不需要下载安装即可使用的应用,它实现了应用 “触手可及” 的梦想,用户扫一扫或者搜一下即可打开应用。也体现了 “用完即走” 的理念&am…

[附源码]Python计算机毕业设计SSM基于Java的民宿运营管理网站(程序+LW)

环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 Maven管理等…

详解 Spring Boot 项目中的配置文件

目录 1. Spring Boot 项目中配日文件的作用是什么 2. Spring Boot 配置文件的两种格式 3. properties 配置文件 3.1 properties 配置文件的基本语法 3.2 properties 配置文件的分类 3.3 如何读取配置文件 3.4 properties 配置文件的优缺点分析 4. yml 配置文件 4.1 yml …

【JavaSE】初识泛型

大家好!我是保护小周ღ,本期为大家带来的是 Java的泛型,会来大家初步了解什么是泛型,以及泛型的使用,感受一手泛型的思想,面向对象编程太爽了~ 目录 一、泛型是什么? 二、泛型的语法 三、包…

Java给图片增加水印,根据图片大小自适应,右下角/斜角/平铺

Hi,I’m Shendi 最近写自己的文件服务器,上传图片时需要自动增加水印,在这里记录一下 文章目录效果展示读取图片从 byte[] 读取图片获取画板绘制水印根据图片大小自适应水印大小右下角文字水印斜角水印平铺水印图片水印输出图片水印就是在图片…

《剑指 Offer 》—58 - I. 翻转单词顺序

《剑指 Offer 》—58 - I. 翻转单词顺序 注意:本题与151 题相同:https://leetcode-cn.com/problems/reverse-words-in-a-string/ 注意:此题对比原题有改动 文章目录《剑指 Offer 》—58 - I. 翻转单词顺序一、题目内容二、个人答案&#xf…

Git 打patch (打补丁)的使用

patch 的使用 一般是diff ,apply ,format-patch,am 1 生成patch git diff > test.patch 这个是打补丁(test.patch自己取的名字,这个命令可以看出没有指定修改的问题所以默认把所有修改的文件都打patch了,同时还需要注意,这里是本地修改的没有执行add缓存的) 如果想指定某…

FPGA实现图像对比度自动调整,提供2套工程源码和技术支持

目录1.算法原理介绍2.HLS算法实现3.工程1介绍:zynq7100实现4.工程2介绍:Kintex7实现5.上板调试验证6.福利:工程源码获取1.算法原理介绍 使用直方图均衡技术实现 使用直方图均衡技术将原始图像的灰度直方图从比较集中的某个灰度区间变成在全部…

学习axure都要经历哪个阶段,如何快速入门

作为初学Axure同学们,正在学习AxureRP在这个过程中,我们应该经历每个阶段,掌握每个阶段的特点,明确如何在不同阶段学习,这样我们才能快速做到axure快速掌握这个工具。还能根据自己的实际工作需要,掌握自己的…

关系抽取(二)远程监督方法总结

目录 前言 1. 远程监督关系抽取开山之作 1.1 介绍 1.2 训练过程 1.2.1 数据标注方法 1.2.2 训练方法 1.3 测试过程 1.4 思考 1.5 总结 2. PCNN 2.1 介绍 2.2 模型结构 2.2.1 文本特征表示 2.2.2 卷积 2.2.3 分段最大池化 2.2.4 softmax多分类 2.3 多实例学习的…

【elementUI样式】模态框中的el-select下拉框不跟随页面滚动问题

文章目录1.在el-select标签中设置:popper-append-to-body"false"2.样式穿透(比较普遍的写法)模态框中的el-select下拉框不跟随页面滚动问题在使用elementUI写界面的时候,偶然遇到了如下图所示bug当页面滚动的时候,el-se…

JVM之类加载子系统

JVM类加载子系统类的加载过程类加载器双亲委派机制类的加载过程 初始化阶段解读 初始化阶段就是执行构造类加载器<clinit>()的过程 该方法不需要定义&#xff0c;是javac编译器自动收集类中所有类变量的赋值动作和静态代码中的语句合并而来 构造方法中指令按照语句在源文…

学习Retrofit后,你还需要明白这些……

在学习Retrofit后&#xff0c;由于它本身就是OKHttp的封装&#xff0c;面试中也经常会被一起问到&#xff1b;单纯的解析它的源码学习难免会有点无从下手&#xff0c;往往让人抓不住重点&#xff0c;学习效率并不是很高&#xff0c;本文从提出几个问题出发&#xff0c;带着问题…

[附源码]SSM计算机毕业设计校园新闻管理系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

SpringBoot、EasyPoi、Echarts 实现文档导入、出、图表显示 (饼状图、柱状图) 保姆级教程

一、介绍环境 EasyPOI: 现在我们就来介绍下EasyPoi,首先感谢EasyPoi 的开发者​。EasyPoi开源 easypoi 是为了让开发者快速的实现excel&#xff0c;word,pdf的导入导出&#xff0c;基于Apache poi基础上的一个工具包。easypoi教程 Echarts: …

c++ - 第15节 - 二叉树进阶

1. 二叉搜索树 1.1.二叉搜索树概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树: 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值若它的右子树不为空&#xff0c;则右子树上所有节点的值都大于根节…

一次 Netty 代码不健壮导致的大量 CLOSE_WAIT 连接原因分析

背景 我们线上有一个 dubbo 的服务&#xff0c;出现大量的 CLOSE_WAIT 状态的连接&#xff0c;这些 CLOSE_WAIT 的连接出现以后不会消失&#xff0c;这就有点意思了&#xff0c;于是做了一下分析记录如下。 首先从 TCP 的角度看一下 CLOSE_WAIT CLOSE_WAIT 状态出现在被动关闭…

数据分析之金融数据分析

一 前言 金融业是一个持续发展的行业&#xff0c;金融业正在使用数据分析进行金融&#xff0c;以最大程度地减少管理各种金融活动所需的精力和时间。这些公司正在利用数据分析和机器学习原理的力量。这有助于他们发现金融行业各个领域所需的进步&#xff0c;以重塑其业务战略。…

虹科分享 | 网络仿真器 | 预测云中对象存储系统的实际性能

对象存储是一种在云中存储非结构化数据的方法&#xff0c;从理论上讲&#xff0c;它使得以其原始格式存储几乎无限量的数据成为可能。在这种存储架构中&#xff0c;数据被作为对象进行管理&#xff0c;而传统的系统则将数据作为块或分层文件进行处理。对象存储可以在内部使用&a…