0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Arduino Nano 33 BLE Sense的色度计和近接感测器传感器来分类对象

Tensorflowers 来源:TensorFlow 作者:TensorFlow 2020-11-18 17:21 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Arduino 肩负着让任何人均可轻松使用机器学习的使命。去年前,我们宣布TensorFlow Lite Micro 可以在 Arduino 库管理器中使用。这样便可使用一些现成的炫酷 ML 示例,例如语音识别、简单的机器视觉,甚至是端到端手势识别训练教程。

在本文中,我们将带您了解一个更为简单的端到端教程:使用 TensorFlow Lite Micro 库,以及Arduino Nano 33 BLE Sense的色度计和近接感测器传感器来分类对象。为此,我们将在开发板上运行一个小型神经网络

运行 TensorFlow Lite Micro 的 Arduino BLE 33 Nano Sense

Tiny ML 的理念是在设备上用较少的资源(更小巧的外形、更少的能耗和更低成本的芯片)完成更多的工作。若与传感器在同一块开发板上运行推理,无论是对隐私还是电池续航时间都大有裨益,且意味着无需连网即可完成推理。

我们在电路板上安装了近接感应器,这意味着我们可以即时读取开发板前方对象的深度,而无需使用摄像头,也无需通过机器视觉来确定某个对象是否为目标对象。

在本教程中,当对象足够近时,我们可以对颜色进行采样,此时的板载 RGB 传感器可以看作是一个 1 像素的彩色摄像头。虽然此方法存在一定限制,但却让我们只需使用少量资源便可快速分类对象。请注意,实际上您可以在设备端运行完整的基于 CNN 的视觉模型。这块特殊的 Arduino 开发板配有一个板载色度计,因此我们认为以此方式开始演示不仅有趣,还极具指导意义。

基于 CNN 的视觉模型
http://cs231n.github.io/convolutional-networks/

我们将展示一个简单但完整的端到端 TinyML 应用,无需深厚的 ML 或嵌入式背景就可以快速实现。此处所涉内容包括数据采集、训练和分类器部署。我们介绍的是一个演示应用,您可连接一个外部摄像头,在此基础上进行改进和完善。我们希望您能了解我们提供的工具能够实现什么,这里只是为您提供了一个起点。

您需要具备的条件

Arduino BLE 33 Nano Sense

一根 Micro USB 线

装有 Web 浏览器的桌面设备/笔记本电脑

几个具有不同颜色的对象

Arduino 开发板简介

我们所使用的 Arduino BLE 33 Nano Sense 开发板配备 Arm Cortex-M4 微控制器,该控制器运行着 mbedOS,并具备多个板载传感器,包括数字麦克风、加速度计、陀螺仪,以及温度、湿度、压力、光线、颜色和近接感应器。

虽然该微控制器按照云或移动标准来看非常微小,但其功能非常强大,足以运行 TensorFlow Lite Micro 模型并对来自板载传感器的传感器数据进行分类。

设置 Arduino Create 网页编辑器

在本教程中,我们将使用 Arduino Create 网页编辑器,一款基于云端的 Arduino 开发板编程工具。您需要注册一个免费帐户来使用,然后安装一个插件允许浏览器通过 USB 线与 Arduino 开发板进行通信

您可以按照入门指南的说明进行快速设置,这些说明将引导您完成以下操作:

下载并安装插件

登录或注册免费帐号

入门指南
https://create.arduino.cc/getting-started/plugin?page=1

(请注意,您也可以使用 Arduino IDE 桌面应用,相关设置说明可以在之前的教程中找到)

拍摄训练数据

现在,我们将采集用于在 TensorFlow 中训练模型所需的数据。首先,选择几种颜色不同的对象。在这里,我们将使用水果,但您可以使用任何您喜欢的其他对象。

设置 Arduino,以便采集数据

接下来,我们将使用 Arduino Create 对 Arduino 开发板进行编程,让其运行 object_color_capture.ino 应用,该应用可以采集附近对象的颜色数据样本。开发板会通过 USB 线将颜色数据以 CSV 日志形式发送至您的桌面设备。

如需将 object_color_capture.ino 应用加载到 Arduino 开发板,请执行以下操作:

通过 USB 线将开发板连接到笔记本电脑或 PC

Arduino 开发板需连接 Micro USB 公口

点击此链接,在 Arduino Create 中打开 object_color_capture.ino。

链接
https://create.arduino.cc/editor/TensorFlowExamples/ca761558-13ed-4190-baee-89ced06147c3/preview

您的浏览器将打开 Arduino Create 网页应用(参见上方的 GIF 图)

点按“OPEN IN WEB EDITOR”(在网页编辑器中打开)

对于现有用户,此按钮将被标记为“ADD TO MY SKETCHBOOK”(添加至我的 Sketchbook)

点击 Upload & Save(上传并保存)

此操作需要等待一会儿才能完成

您会看到开发板上的黄灯在闪烁,说明其正在“接受编程”

打开串口 Monitor(监视器)

此操作会打开网页应用左侧的Monitor面板

现在,当对象在开发板顶部附近时,您将会在此处看到 CSV 格式的颜色数据

将每个对象的数据采集至 CSV 文件中

我们会针对每一个要分类的对象采集一些颜色数据。我们只针对每个类快速采集一个示例,这样做显然无法训练通用模型,但我们仍然可以通过手头的对象来快速验证概念!

例如,我们正在对一个苹果进行采样:

使用顶部的白色小按钮重置开发板。

除非您想对手指采样,否则请确保其远离传感器!

Arduino Create 中的Monitor将提示“Serial Port Unavailable”(串行端口不可用),提示时间为一分钟

然后,您应该会看到串口监视器的顶部出现 Red,Green,Blue 字样

将开发板的正面朝向苹果。

开发板只有在检测到有对象靠近传感器且照明充足(开灯或靠近窗户)时,才会执行采样

在对象表面来回移动开发板,采集颜色变化

您会看到 RGB 颜色值以逗号分隔的数据形式显示在串口监视器中。

采集对象的样本(持续几秒钟)

从Monitor复制此日志数据,并将其粘贴到文本编辑器中

提示:取消勾选底部 AUTOSCROLL(自动滚动)对应的复选框,即可停止文字移动

将文件另存为apple.csv

使用顶部的白色小按钮重置开发板。


重复执行上述操作,以采集其他对象并保存日志信息(例如 banana.csv、orange.csv)。

注意:每个 .csv 文件的第一行均应显示为:Red,Green,Blue

如果您未在顶部看到此内容,则只需将其复制并粘贴到代码行的上方。

训练模型

现在,我们将借助 colab,使用您在上一节中采集的数据来训练 ML 模型。

首先,在 colab 中打开 Jupyter Notebook

按照 colab 中的说明操作

上传您的 *.csv 文件

解析并准备数据

使用 Keras 训练模型

输出 TensorFlowLite Micro 模型

下载此模型以在 Arduino 上运行分类器

colab
https://colab.research.google.com/github/arduino/ArduinoTensorFlowLiteTutorials/blob/master/FruitToEmoji/FruitToEmoji.ipynb

完成上述步骤后,您应该已经下载了可以在 Arduino 开发板上运行对象分类的 model.h 文件!

Colab 会引导您将 .csv 文件拖放入文件窗口,结果如上图所示

Colab 会对 Arduino 开发板采集的标准化颜色样本进行绘制

TFLM 模型编写到 Arduino 开发板

最后,我们会对上一阶段训练得到的模型进行编译,然后使用 Arduino Create 将其上传至 Arduino 开发板。

打开 Classify_Object_Color.ino

Classify_Object_Color.ino
https://create.arduino.cc/editor/TensorFlowExamples/8508c70f-5155-4e3b-b982-c5f6bd36ea5c/preview

您的浏览器将打开 Arduino Create 网页应用:

点击OPEN IN WEB EDITOR(在网页编辑器中打开)按钮

使用Import File to Sketch(将文件导入 Sketch)导入从 colab 下载的 model.h 文件:

导入从 colab 下载的 model.h 文件

model.h 标签页应如上所示

编译并将应用上传至 Arduino 开发板

此操作需要等待一会儿才能完成

完成后,您将在Monitor中看到以下消息:

将 Arduino 的 RGB 传感器放在您训练的对象旁边

您将在Monitor中看到分类结果输出:

Arduino Create Monitor 中的分类器输出

您也可以编辑 object_color_classifier.ino sketch 以输出颜文字来替代名字(我们在代码注释中保留了 unicode!),您可以关闭 Arduino Create 所在的网页浏览器标签页,重置开发板并输入 cat /cu/usb.modem[n],在 Mac OS X 或 Linux 终端中查看这些表情符号。

从 Arduino 串口输出到 linux 终端并使用 ANSI 突出显示的结果,以及 unicode 表情符号

结论

至此,我们了解了一个在 Arduino 上运行的机器学习的快速端到端的演示。这个框架也可用于对不同传感器进行采样,以及训练更为复杂的模型。对于按颜色分类对象的任务,我们还可以在更多条件下采集更多示例样本,以泛化该模型。

在未来的研究当中,我们还会探索如何运行设备端 CNN。与此同时,我们希望于您而言,这将会是一个有趣而精彩的项目。请尽情体验 TinyML 带来的乐趣吧!

责任编辑:lq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2573

    文章

    54371

    浏览量

    786074
  • 神经网络
    +关注

    关注

    42

    文章

    4827

    浏览量

    106797
  • 机器学习
    +关注

    关注

    66

    文章

    8541

    浏览量

    136233

原文标题:社区分享 | 使用 Arduino 和 TensorFlow Lite Micro 快速识别水果

文章出处:【微信号:tensorflowers,微信公众号:Tensorflowers】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    传感器大全分类

    传感器大全分类
    发表于 09-04 16:56 1次下载

    MEMS惯性传感器​都有哪些种类?MEMS惯性传感器有哪些特点

    MEMS惯性传感器都有哪些种类?MEMS惯性传感器有哪些特点,下面火丰精密小编为你讲解一下: MEMS惯性传感器包括MEMS陀螺仪及MEMS加速度,其
    的头像 发表于 08-26 17:39 744次阅读
    MEMS惯性<b class='flag-5'>传感器</b>​都有哪些种类?MEMS惯性<b class='flag-5'>传感器</b>有哪些特点

    清华博士团队的自供电振动传感器初创企业振电智,获千万天使轮融资

    振电智是一家新型传感器技术和能量采集平台研发商,近日宣布获得千万人民币天使轮融资,投资方麟阁创投、水木清华校友种子基金。 8月13日消息,传感器技术公司「振电智
    的头像 发表于 08-18 17:38 1199次阅读
    清华博士团队的自供电振动<b class='flag-5'>传感器</b>初创企业振电智<b class='flag-5'>感</b>,获<b class='flag-5'>近</b>千万天使轮融资

    从温度到AI感知中枢:解码传感器分类的“感官革命”

    革命”。作为物理世界与数字世界的桥梁,传感器早已突破“测量工具”的单一标签,进化成支撑智能时代的“超级感官”。 一、传感器的“基因图谱”:分类背后的技术密码 传感器家族的庞大程度远超想
    的头像 发表于 04-30 08:33 1902次阅读

    水深传感器分类及工作原理

    水深传感器在众多领域发挥着关键作用,如水利监测、海洋研究、工业生产以及环保工作等,它们能够精准地测量水体深度,为相关决策提供重要数据支持。目前市面上常见的水深传感器主要有压力水位、雷达水位
    的头像 发表于 04-28 17:32 1237次阅读
    水深<b class='flag-5'>传感器</b><b class='flag-5'>分类</b>及工作原理

    MEMS声敏传感器分类与应用

    等多个领域展现出了广阔的应用前景。本文将带您深入了解MEMS声敏传感器分类与应用,探索这个微型化声音世界的奥秘。   一、MEMS声敏传感器分类 MEMS声敏
    的头像 发表于 04-17 16:50 1129次阅读

    红外传感器技术分类:热释电、热电堆与微测辐射热详解

    上一篇文章讲了红外传感器的工作原理及应用,红外传感器利用入射红外辐射引起传感器的温度变化,进而使某些物理参数变化进行目标探测。红外传感器
    的头像 发表于 03-18 17:00 1258次阅读
    红外<b class='flag-5'>传感器</b>技术<b class='flag-5'>分类</b>:热释电、热电堆与微测辐射热<b class='flag-5'>计</b>详解

    气体传感器工作原理及分类

    分类,带领读者走进这一高科技领域。 一、气体传感器的工作原理 气体传感器的工作原理基于多种物理和化学效应,主要包括半导体原理、催化燃烧原理、热导原理、电化学原理、红外原理和PID光离子原理等。 半导体原理:半导体
    的头像 发表于 02-23 17:52 2087次阅读

    惯性传感器分类和应用

    惯性传感器是一种利用物体惯性效应测量加速度、角速度等运动参数的传感器。随着微机电系统(MEMS)技术的快速发展,惯性传感器已经广泛应用于汽车、航空航天、消费电子、工业自动化等多个领域
    的头像 发表于 02-03 14:20 5082次阅读

    接近传感器原理与分类

    。本文将深入探讨接近传感器的原理、分类、应用以及选型技巧。 接近传感器原理 接近传感器的工作原理基于不同的物理现象,主要包括电磁感应、电容变化、光电效应、超声波反射和微波探测等。其中,
    的头像 发表于 01-21 16:46 1431次阅读
    接近<b class='flag-5'>传感器</b>原理与<b class='flag-5'>分类</b>

    位移传感器的工作原理详解

    的类型 位移传感器有多种类型,包括但不限于: 电位式位移传感器 :通过改变电位的电阻测量位移。 电感式位移
    的头像 发表于 01-19 09:45 3182次阅读

    如何校准位移传感器

    校准方法之前,了解不同类型的位移传感器是必要的。常见的位移传感器包括: 电位式位移传感器 :通过测量电阻的变化确定位置。 电容式位移
    的头像 发表于 01-19 09:44 1966次阅读

    成像式亮度色度计产品原理及应用介绍

    成像式亮度色度计工作原理:成像式亮度色度计是一种基于成像原理进行测光和测色的测量仪器,基本结构是由视觉(或色觉)匹配的探测(CCD或CMOS)、光学系统以及与亮度(或三刺激值XYZ
    的头像 发表于 01-16 11:05 2197次阅读
    成像式亮度<b class='flag-5'>色度计</b>产品原理及应用介绍

    十轴姿态传感器模块 | 集成加速度、陀螺仪、磁力,自带BLE5.0蓝牙

    海凌科全新推出HLK-AS2001十轴姿态传感器模块,集成加速度、陀螺仪和磁力,自带BLE5.0蓝牙,开发简单,应用广泛。什么是十轴姿态传感器
    的头像 发表于 01-06 12:47 1492次阅读
    十轴姿态<b class='flag-5'>传感器</b>模块 | 集成加速度<b class='flag-5'>计</b>、陀螺仪、磁力<b class='flag-5'>计</b>,自带<b class='flag-5'>BLE</b>5.0蓝牙

    气压传感器分类与应用

      传感器技术已成为现代工业、科研及日常生活中不可或缺的重要部分。其中,气压传感器作为能够精确测量大气压力的设备,其应用广泛且日益重要。本文将深入探讨气压传感器分类、工作原理及其在各
    的头像 发表于 12-20 09:22 1701次阅读
    气压<b class='flag-5'>传感器</b>的<b class='flag-5'>分类</b>与应用