Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Arduino 机器学习实战入门(上)

Arduino 机器学习实战入门(上)

作者头像
AiTechYun
发布于 2019-11-07 06:53:39
发布于 2019-11-07 06:53:39
3.6K0
举报
文章被收录于专栏:ATYUN订阅号ATYUN订阅号

编辑 | sunlei

这是来自Arduino团队的Sandeep Mistry和Dominic Pajak的一篇客座文章。

Arduino的任务是让机器学习变得简单,任何人都可以使用。在过去的几个月里,我们一直在与Tensorflow Lite团队合作,并很高兴向您展示我们的合作成果:将Tensorflow Lite Micro应用于Arduino Nano 33 BLE Sense。在本文中,我们将向您展示如何安装和运行几个新的TensorFlow Lite微示例,这些示例现在可以在Arduino库管理器中找到。

下面的第一个教程将向您展示如何在Arduino板上安装一个神经网络来识别简单的语音命令。

示例1:运行预训练的micro_speech推断示例。

接下来,我们将介绍一个更深入的教程,您可以使用它在Colab中使用TensorFlow为Arduino训练自己的自定义手势识别模型。本材料是根据Sandeep Mistry和Don Coleman举办的一个实践研讨会编写的,现在已经在网上更新了。

例2:训练自己的手势分类模型。

如果你以前有过Arduino的经验,你可以在几个小时内完成这些教程。如果你对微控制器还不太熟悉,可能需要更长的时间。

我们很高兴与大家分享一些最初的例子和教程,并看看您将从这里构建什么。我们开始吧!

注:以下项目是基于TensorFlow Lite的微控制器,目前正在TensorFlow repo中进行实验。这还是一个新兴的领域!

微控制器和TinyML

微控制器,如Arduino板上使用的微控制器,是低成本、单芯片、独立的计算机系统。它们是隐藏在数十亿日常用品中的隐形电脑,如可穿戴设备、无人机、3D打印机、玩具、电饭煲、智能插头、电动滑板车、洗衣机。连接这些设备的趋势是所谓物联网的一部分。

Arduino是一个开源平台和社区,致力于让每个人都可以访问微控制器应用程序开发。我们使用的主板有一个Arm Cortex-M4微控制器,运行频率为64MHz,有1MB的闪存和256KB的RAM。与云、PC或移动设备相比,这是很小的,但以微控制器标准来看是合理的。

Arduino Nano 33 BLE感应板比一根口香糖还小

可能有一些实际原因需要在微控制器上挤压ML,包括:

  • 功能-希望智能设备在本地快速运行(独立于互联网)。
  • 成本-用简单、低成本的硬件实现这一点。
  • 隐私-不想在外部共享所有传感器数据。
  • 效率-更小的设备形状系数,能量收集或更长的电池寿命。

有一个最终目标,我们正在朝着这个目标努力,这是非常重要的:

机器学习可以让没有嵌入式开发背景的开发人员访问微控制器。

在机器学习方面,您可以使用一些技术将神经网络模型放入内存受限的设备(如微控制器)中。其中一个关键步骤是将权重从浮点量化为8位整数。这也有助于使推断更快地计算,并且更适用于较低的时钟速率设备。

TinyML是一个新兴的领域,还有很多工作要做——但令人兴奋的是,还有一个巨大的未开发的应用空间。数以亿计的微控制器和各种各样的传感器结合在一起,在未来可能会带来一些非常有创意和价值的微型ML应用。

开始之前你需要做什么

Arduino Nano 33 BLE感应板

连接Arduino板和台式机的微型USB电缆

要对板进行编程,可以使用Arduino Web编辑器或安装Arduino IDE。我们将在下一节详细介绍如何设置这些

Arduino Nano 33 BLE Sense有多种板载传感器,这意味着它有可能用于一些很酷的微型ML应用程序:

  • 语音-数字麦克风
  • 运动- 9轴IMU(加速度计、陀螺仪、磁力仪)
  • 环境-温度、湿度和压力
  • 光-亮度,颜色和物体接近度

与经典的Arduino Uno不同的是,它将一个微控制器与板载传感器结合在一起,这意味着你可以在不需要额外的硬件或线路的情况下解决许多用例。该电路板也足够小,可以在可穿戴设备等终端应用中使用。顾名思义,它具有蓝牙LE连接性,因此您可以将数据(或推断结果)发送到笔记本电脑、移动应用程序或其他BLE板和外围设备。

小贴士:U盘上的传感器

通过USB连接BLE感知板是一种简单的方法,可以捕获数据并将多个传感器添加到单板计算机中,而不需要额外的线路或硬件——例如,这是对树莓派的一个很好的补充。

Tensorflow Lite微控制器示例

现在,TensorFlow Lite for微控制器的推理示例已经打包并通过Arduino库管理器提供,这样就可以在Arduino上包含并运行它们。在本节中,我们将向您展示如何运行它们。例如:

  • micro_speech—使用板载麦克风的语音识别
  • magic_wand——使用内置IMU的手势识别功能
  • person_detection—使用外部ArduCam相机进行人物检测

有关示例的更多背景知识,可以查看TensorFlow存储库中的源代码。这些示例中的模型之前都经过了培训。下面的教程向您展示了如何在Arduino上部署和运行它们。在下一节中,我们将讨论培训。

如何使用Arduino创建Web编辑器运行示例

一旦你使用USB数据线将Arduino Nano 33 BLE Sense连接到台式机,你就可以通过Arduino Create web编辑器在面板上编译和运行以下TensorFlow示例:

从Arduino_TensorFlowLite库编译一个示例

聚焦语音识别实例:micro_speech

Arduino板的第一步是让LED闪光。在这里,我们将通过使用Tensorflow Lite Micro识别语音关键字来实现。它有一个简单的词汇“是”和“否”。请记住,这种型号是在一个只有256kb内存的微控制器上本地运行的,所以不要期望商业上的“语音助手”级别的准确性-它没有互联网连接,可用的本地RAM大约是2000x。

注意,电路板也可以用电池供电。由于Arduino可以连接到电机、执行器等,这为语音控制项目提供了潜力。

运行micro_speech示例

如何使用Arduino IDE运行示例

或者,您可以使用ArduinoIDE应用程序尝试相同的推理示例。

首先,按照下一节中的说明设置Arduino IDE。

在ArduinoIDE中,您将通过ArduinoIDE中的文件>示例>Arduino_TensorFlowlite菜单查看示例。

选择一个示例,将打开示意图。要编译、上传和运行板上的例子,并点击箭头图标:

对于喜欢命令行的高级用户,还有arduino-cli。

为Arduino训练Tensorflow Lite微观模型

Arduino BLE 33 Nano Sense上的手势分类,输出表情符号

接下来,我们将使用ML使Arduino板能够识别手势。我们将从Arduino Nano 33 BLE感知板中获取运动数据,将其导入TensorFlow中以训练模型,并将得到的分类器部署到该板上。本教程的灵感来源于查理·杰拉德(Charlie Gerard)使用Arduino和Tensorflow.js制作的《街头霸王》(Street Fighter)。在Charlie的例子中,电路板将所有的传感器数据从Arduino传输到另一台机器上,而这台机器将用Tensorflow.js对手势进行分类。我们更进一步,通过在Arduino板上执行手势分类来“TinyML-ify”它。在我们的示例中,由于我们使用的Arduino Nano 33 BLE感知板具有更强大的Arm Cortex-M4处理器和一个内置的IMU,这使得实现起来更容易。

我们已经修改了下面的教程,所以不需要额外的硬件——采样开始于检测板的移动。本教程的原始版本添加了一个实验板和一个硬件按钮来按下以触发采样。如果你想进入一个小硬件,你可以遵循这个版本。关于这一部分我们明天继续分析。

原文链接:

https://medium.com/tensorflow/how-to-get-started-with-machine-learning-on-arduino-7daf95b4157

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ATYUN订阅号 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
水果图像识别:基于 Arduino 和 TensorFlow Lite Micro
特邀博文 / Dominic Pajak 和 Sandeep Mistry,来自 Arduino 团队
CV君
2020/11/23
2.2K0
水果图像识别:基于 Arduino 和 TensorFlow Lite Micro
Arduino 机器学习实战入门(下)
按照以下步骤设置Arduino IDE应用程序,该应用程序用于将推理模型上载到您的电路板,并在下一节中从电路板下载培训数据。因为我们需要在Arduino IDE中下载和安装特定的板和库,所以比使用Arduino Create web editor要多几个步骤。
AiTechYun
2019/11/07
3.2K0
设置TinyML实验Arduino环境
最近在学习edx的HarvardX TinyML 3 - deploying TinyML。这个在线课程大大降低了TinyML的学习曲线的陡峭度,可以作为《TinyML: Machine Learning with TensorFlow Lite on Arduino and Ultra-Low-Power Microcontrollers》的有益补充。原书是TensorFlow-Lite-Micro相关设计的提纲挈领,但是成书到发行期间,TFLM一直也在发展中,书中的代码到实践时候就有差异;《TinyML》也没有把实践部署讲的很透彻,个人认为在于TFLM采用工业化的pipeline解决依赖(不同硬件平台的编译、库、工具链的依赖);《TinyML》在阐述硬件平台移植相关章节,没有把工具链从官方的工业pipeline完整的剥离出来,也导致了光看书无法复现。为什么敢这么说?徒手把TFLM移植到nrf52840的淘宝开发板上,书忽略了nrf平台工具链的构建,以及如何和tf编译系统联动的设计。工作原因没有精力继续TinyML的爱好了。Harvard在线课程给了个契机继续,毕竟看视频比看code和实操要省力好多。
flavorfan
2021/03/21
1.7K0
设置TinyML实验Arduino环境
TinyML实践-1:What & Why TinyML?
机器/深度学习已经如火如荼,各种炫目的效果呈现不穷,笔者也复现一些如stackoverflow assistence、头像动漫化等,但大都需要强大算力,“终端(手机)+云服务器”是基本结构。去年关注到Google TFLite Micro(TFLM)及技术,可以将Tensorflow 模型部署到嵌入式的端末设备(比如arm cortex M4 64M)。恰好手头有一个农业物联网项目,利用嵌入式设备识别牲畜的活动状态,应用了这一个技术。这段时间项目间隙,记录下开发过程的一些心得体会。
flavorfan
2020/12/07
2.6K1
TinyML实践-1:What & Why TinyML?
TinyML简介及应用
机器学习模型在日常生活中发挥着重要作用。 在典型的一天中,您很可能会与某些机器学习模型进行交互,因为它们几乎渗透到我们与之交互的所有数字产品中; 例如,社交媒体服务、虚拟个人助理、搜索引擎和电子邮件托管服务的垃圾邮件过滤。
yuezht
2023/04/20
1.7K0
TinyML-6:移植到nrf52840淘宝开发板(带源码)
技术到了最后,都是要在实际生活中实践,才有活力;而不是曲高和寡,光是鼓吹技术多牛逼,没有切实改变生活,提高体验,产生经济价值,那样的技术都是耍流氓。
flavorfan
2021/01/24
2.3K12
TinyML-6:移植到nrf52840淘宝开发板(带源码)
边缘AI新方法TinyML,超低功耗,存储占用KB计,在边缘设备上进行机器学习
本文关于微型机器学习系列文章的第一篇,旨在向读者介绍微型机器学习的概念及其未来的潜力。后续文章将深入讨论特定应用、实现和相关教程。
机器之心
2020/11/04
8781
边缘AI新方法TinyML,超低功耗,存储占用KB计,在边缘设备上进行机器学习
这位斯坦福PhD新生的论文被引数:接近4万
机器之心报道 编辑:泽南、陈萍 什么也阻止不了我去学习。 春天到了,斯坦福大学计算机科学系又迎来了一批博士新生。 该校的 CS 专业每年会收到上千份申请,招收约 80 名新人,其中一半会进入专注于人工智能研究的斯坦福人工智能实验室 SAIL。 对于这所美国名校而言,每个人都是百里挑一的精英。但仍让人始料未及的是,今年新生行列中出现了这样一个人,Google Scholar 统计显示,他的论文被引用数量竟已接近 4 万: 一个刚入学的新生,论文被引数比斯坦福很多助理教授还要高很多,这就不禁让人产生疑问,大
机器之心
2022/03/29
4730
FPGA开发板剁手,学生狗省钱大法丨吐血资源
博主Joel Williams在他的主页中分享了一篇购买便宜的FPGA开发板的攻略,量子位编译本文。
量子位
2018/08/08
2.2K0
盘点国外互联网最受欢迎的6个Jetson NANO项目
过去,人工智能(AI)由于训练AI模型需要大量的处理能力而被委托给强大的计算机。因此,AI应用在规模上受到限制。在创建较小的AI项目时,存在一些解决方法,但大多数情况下,精度和速度与计算能力和价格相互矛盾。
GPUS Lady
2023/05/30
2.8K0
盘点国外互联网最受欢迎的6个Jetson NANO项目
边缘智能:嵌入式系统中的神经网络应用开发实战
嵌入式系统已经成为我们生活中不可或缺的一部分,从智能手机到家用电器,几乎每个设备都搭载了嵌入式技术。随着人工智能的快速发展,将神经网络应用于嵌入式设备上变得越来越普遍。本文将深入探讨嵌入式人工智能的现状,以及神经网络在边缘设备上的应用。
一键难忘
2023/12/11
1.4K0
GitHub上用于微控制器的TensorFlow Lite
这是TensorFlow Lite的实验端口,针对微控制器和其他只有千字节内存的设备。它不需要任何操作系统支持,任何标准的C或C ++库或动态内存分配,因此它的设计甚至可以移植到“裸机”系统。核心运行时在Cortex M3上适合16KB,并且有足够的运算符来运行语音关键字检测模型,总共占用22KB。
不脱发的程序猿
2021/01/20
5650
【云+社区年度征文】TinyML实践-2:How TinyML Works?
对于Tensorflow最大需求是能够在桌面系统中训练并运行模型,这种需求影响了很多设计决策,例如为了更低的延迟和更多的功能而增加可执行文件的大小。云端服务器上,RAM以GB为衡量单位,存储空间以TB为单位,几百兆字节的二进制文件通常不是问题。
flavorfan
2020/12/07
1.8K0
【云+社区年度征文】TinyML实践-2:How TinyML Works?
AIoT应用创新大赛-基于TencentOS Tiny 的会议室使用小助手
诸如会议室等隐私场所,不能通过单纯的安装监控进行管理,实际管理中却又想得知是否有人在使用。为解决此类问题,会议室使用小助手横空出世。
烫烫烫烫烫烫锟斤拷
2022/02/07
1.6K0
AIoT应用创新大赛-基于TencentOS Tiny 的会议室使用小助手
机器人控制器编程实践指导书旧版-实践七 无线通信(网络)
适用于UNO/2560/DUE/ESP8266/ESP32,2021年之前使用版本。
zhangrelay
2022/09/21
1.2K0
机器人控制器编程实践指导书旧版-实践七 无线通信(网络)
机器人控制器编程实践指导书旧版-实践六 LCD液晶显示(点阵)
适用于UNO/2560/DUE/ESP8266/ESP32,2021年之前使用版本。
zhangrelay
2022/09/21
1.2K0
机器人控制器编程实践指导书旧版-实践六 LCD液晶显示(点阵)
10个轻松上手制作的Arduino项目,嵌友来试试!
创建Arduino项目可以给您带来很大的满足感,但很多时候初学者不知道从哪里开始。启动创建项目时需要考虑很多事情,如果您没有制作的经验,那可能会令人困惑。正是因为这个原因,我们为初学者收集到10个任何人都可以做的Arduino项目!
刘盼
2018/07/26
4.1K0
10个轻松上手制作的Arduino项目,嵌友来试试!
终端遇到AI:TinyML如何拓展端侧人工智能和LPWAN的“新疆界”
TinyML无疑大大拓展了机器学习和嵌入式应用的疆界。自此,机器学习不再囿于云端超级计算机,而是可以被隐藏于众多小到可以忽略的电子零件中;嵌入式应用也不再局限于简单的信号处理,而是可以“看懂”“听懂”“感受到”周围的世界。
ZETA开发者
2021/03/09
6540
未来,你或许会“咬牙切齿”地操纵手机
而在最终的用户测试阶段里,TeethTap成功识别了11位参与者的1382个牙齿动作中的1256个,平均准确度达90.9%。
量子位
2021/06/17
8350
手背变绘板!智能手表上也能画画做笔记,最大误差仅为6%
屏幕太小、打字不方便可能是智能手表最大bug。不过,最近有研究人员开发了一款“神器”,让你的手表分分钟替代手机!
大数据文摘
2020/09/17
7250
手背变绘板!智能手表上也能画画做笔记,最大误差仅为6%
推荐阅读
相关推荐
水果图像识别:基于 Arduino 和 TensorFlow Lite Micro
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档