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

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

3天内不再提示

如何使用Arduino KNN库进行简单的机器学习?

电子森林 来源:硬禾学堂 作者:硬禾学堂 2021-04-01 10:07 次阅读

除了像TensorFlow for Arduino这样强大的深度学习架构外,还有一些经典的ML方法适用于嵌入式设备上的较小数据集,这些方法有用且易于理解-最简单的方法之一就是KNN。

KNN的一个优势在于,一旦Arduino获得了一些示例数据,就可以立即对其进行分类。我们已经发布了一个新的Arduino库,可以快速轻松地将KNN导入在程序中,且无需进行设备外培训或其他工具。

在本文中,我们将使用颜色分类器示例来介绍KNN。之前在深度学习中我们展示过相同的应用程序,相比之下,KNN是一种更快、更轻量的方法,但无法扩展到更大,更复杂的数据集。

颜色分类示例

在本教程中,我们将介绍如何使用Arduino Nano 33 BLE Sense上的Arduino_KNN库按颜色对其对象进行分类。

在进行配置时我们将需要进行以下准备:

Arduino Nano 33 BLESense开发板

MicroUSB数据线

打开Arduino IDE或Arduino Create的云端编译器

安装Arduino_KNN库

从文件》示例》 Arduino_KNN中选择ColorClassifier

编译程序并上传到您的Arduino开发板

Arduino_KNN库

该示例使用了Arduino_KNN库,该库提供了一个简单的界面,可在我们自己的程序中使用KNN:

#include 《Arduino_KNN.h》 // Create a new KNNClassifierKNNClassifier myKNN(INPUTS);

在本示例中,INPUTS = 3 用来表示颜色传感器的R、G和B值。

采样对象颜色

当打开串行监视器时会看到以下消息:

Arduino KNN color classifierShow me an example Apple

Arduino开发板已准备好采样对象颜色。如果你没有苹果,梨或者橙子,则可能需要通过编辑程序来放置不同的标签。颜色传感器最好在光线充足的房间中处理粗糙,无光泽的物体,并且每个类别都必须具有不同的颜色!(颜色传感器并不是区分橙色和橘子的理想选择,但是它可以检测到橙子的成熟程度。如果要按形状对物体进行分类,则可以始终使用相机。)

当Arduino开发板靠近对象时,它将对颜色进行采样并将其添加到KNN示例中,并带有标记对象所属类的数字(即代表苹果,橙子或梨的数字0、1或2)。提供标记的示例数据的ML技术也称为监督学习。

程序中用于将示例数据添加到KNN函数的代码如下:

readColor(color); // Add example color to the KNN modelmyKNN.addExample(color, currentClass);

颜色样本的红色,绿色和蓝色级别也通过串口输出:

e0114072-9245-11eb-8b86-12bb97331649.png

程序为每个对象获取30个颜色样本。可以向其显示一个对象,它将对颜色进行30次采样-本教程不需要30个苹果!(尽管更广泛的数据集将使模型更通用)

分类

通过获取示例样品,程序现在将要求猜测该对象。该示例的使用与获取训练数据时是相同的功能读取颜色传感器,只是这一次它调用分类函数,当显示颜色时,它将分类对象类:

readColor(color); // Classify the object classification = myKNN.classify(color, K);

您可以尝试向其显示一个对象,然后查看其效果:

Let me guess your object0.44,0.28,0.28You showed me an Apple

注意:这不是100%准确的,尤其是在物体表面变化或照明条件变化的情况下。我们也可以尝试使用不同数量的实例、k的值以及不同的对象和环境,以查看其如何影响结果。 KNN如何运作?尽管Arduino_KNN库完成了数学运算,但在为应用程序选择ML算法时,了解ML算法的工作原理很有用。简而言之,KNN算法通过比较对象与先前看到的示例的接近程度来对对象进行分类。下面是一个示例图表,其中包含平均每日温度和湿度数据点。每个示例都标有一个季节:

e074a9b4-9245-11eb-8b86-12bb97331649.png

为了对新对象(图表上的“?”)进行分类,KNN分类器将查找它所看到的最相似的先前示例。由于在我们的示例中有两个输入,因此算法通过计算新对象与每个先前示例之间的距离来实现此目的。上面最接近的示例标记为“Winter”。 KNN中的k只是算法考虑的最接近示例的数量。在k = 3的情况下,它会计算三个最接近的示例。在上面的图表中,该算法将对Spring投2票,对Winter投1票-因此结果将变为Spring。

KNN的一个缺点是训练示例数据的数量越大,每次对对象进行分类时,KNN算法需要花费的检查时间就越长。这使得KNN对于大型数据集不太可行,并且是KNN与基于深度学习的方法之间的主要区别。

按颜色分类的对象

e0b72f78-9245-11eb-8b86-12bb97331649.png

在我们的颜色分类器示例中,来自颜色传感器的三个输入。每个对象的示例颜色可被视为位于R、G和B轴上的三维空间中的点。像往常一样,KNN算法通过检查输入与先前看到的示例的接近程度来猜测对象,但是由于这次有3个输入,因此必须计算三维空间中的距离。数据的维数越多,计算分类结果的工作就越多。

进一步的想法

这只是对KNN可能实现的快速了解。我们可以在库示例中找到一个有关电路板方向的示例,以及一个可以继续使用的简单示例。你也可以将BLE Sense板上的任何传感器用作输入,甚至可以将KNN与其他ML技术结合使用。

当然,还有其他可用于Arduino的机器学习资源,包括TensorFlow Lite教程以及专业工具(如Edge Impulse和Qeexo)的支持。在接下来我们将更多的在Arduino上探索机器学习。

原文标题:使用Arduino KNN进行简单的机器学习

文章出处:【微信公众号:FPGA入门到精通】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

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

    关注

    2550

    文章

    51039

    浏览量

    753095
  • 机器学习
    +关注

    关注

    66

    文章

    8408

    浏览量

    132568
  • Arduino
    +关注

    关注

    188

    文章

    6469

    浏览量

    186958

原文标题:使用Arduino KNN进行简单的机器学习

文章出处:【微信号:xiaojiaoyafpga,微信公众号:电子森林】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    HALArduino平台上的使用

    HALArduino平台上的使用 Arduino平台是一个开源的电子原型平台,它包括硬件(基于微控制器的电路板)和软件(Arduino IDE)。
    的头像 发表于 12-02 14:04 248次阅读

    Arm成功将Arm KleidiAI软件集成到腾讯自研的Angel 机器学习框架

    Arm 与腾讯携手合作,成功将 Arm KleidiAI 软件集成到腾讯自研的 Angel 机器学习框架。   借助 KleidiAI 解锁卓越性能、能效和可移植性,腾讯混元大模型能够实现更快
    的头像 发表于 11-24 15:33 664次阅读

    什么是机器学习?通过机器学习方法能解决哪些问题?

    计算机系统自身的性能”。事实上,由于“经验”在计算机系统中主要以数据的形式存在,因此机器学习需要设法对数据进行分析学习,这就使得它逐渐成为智能数据分析技术的创新源之一,
    的头像 发表于 11-16 01:07 386次阅读
    什么是<b class='flag-5'>机器</b><b class='flag-5'>学习</b>?通过<b class='flag-5'>机器</b><b class='flag-5'>学习</b>方法能解决哪些问题?

    如何使用 PyTorch 进行强化学习

    强化学习(Reinforcement Learning, RL)是一种机器学习方法,它通过与环境的交互来学习如何做出决策,以最大化累积奖励。PyTorch 是一个流行的开源
    的头像 发表于 11-05 17:34 281次阅读

    【每天学点AI】KNN算法:简单有效的机器学习分类器

    过程,其实就是一个简单的分类问题,而KNN(K-NearestNeighbors)算法正是模仿这种人类决策过程的机器学习算法。|什么是KNN
    的头像 发表于 10-31 14:09 307次阅读
    【每天学点AI】<b class='flag-5'>KNN</b>算法:<b class='flag-5'>简单</b>有效的<b class='flag-5'>机器</b><b class='flag-5'>学习</b>分类器

    RISC-V如何支持不同的AI和机器学习框架和

    RISC-V如何支持不同的AI和机器学习框架和?还请坛友们多多指教一下。
    发表于 10-10 22:24

    【「时间序列与机器学习」阅读体验】+ 简单建议

    这本书以其系统性的框架和深入浅出的讲解,为读者绘制了一幅时间序列分析与机器学习融合应用的宏伟蓝图。作者不仅扎实地构建了时间序列分析的基础知识,更巧妙地展示了机器学习如何在这一领域发挥巨
    发表于 08-12 11:21

    【《时间序列与机器学习》阅读体验】+ 了解时间序列

    收到《时间序列与机器学习》一书,彩色印刷,公式代码清晰,非常精美。感谢作者,感谢电子发烧友提供了一个让我学习时间序列及应用的机会! 前言第一段描述了编写背景: 由此可知,这是一本关于时间序列
    发表于 08-11 17:55

    tensorflow简单的模型训练

    在本文中,我们将详细介绍如何使用TensorFlow进行简单的模型训练。TensorFlow是一个开源的机器学习,广泛用于各种
    的头像 发表于 07-05 09:38 633次阅读

    深度学习常用的Python

    深度学习作为人工智能的一个重要分支,通过模拟人类大脑中的神经网络来解决复杂问题。Python作为一种流行的编程语言,凭借其简洁的语法和丰富的支持,成为了深度学习研究和应用的首选工具。本文将深入探讨
    的头像 发表于 07-03 16:04 626次阅读

    机器学习算法原理详解

    机器学习作为人工智能的一个重要分支,其目标是通过让计算机自动从数据中学习并改进其性能,而无需进行明确的编程。本文将深入解读几种常见的机器
    的头像 发表于 07-02 11:25 991次阅读

    深度学习与传统机器学习的对比

    在人工智能的浪潮中,机器学习和深度学习无疑是两大核心驱动力。它们各自以其独特的方式推动着技术的进步,为众多领域带来了革命性的变化。然而,尽管它们都属于机器
    的头像 发表于 07-01 11:40 1329次阅读

    求助,在esp-idf中使用arduino作为组件后怎样使用arduino

    在esp-idf中使用arduino作为组件后怎样使用arduino,例如我此时需要使用arduino的第三方blinker,怎样使用
    发表于 06-12 07:21

    基于计算机视觉与机器学习技术的跌倒风险预测

    使用卷积神经网络(CNN)、支持向量机(SVM)、K近邻(KNN)和长短期记忆(LSTM)神经网络等四种不同的分类方法对三种步态模式进行自动分类。
    发表于 03-22 11:10 410次阅读
    基于计算机视觉与<b class='flag-5'>机器</b><b class='flag-5'>学习</b>技术的跌倒风险预测

    如何使用TensorFlow构建机器学习模型

    在这篇文章中,我将逐步讲解如何使用 TensorFlow 创建一个简单机器学习模型。
    的头像 发表于 01-08 09:25 968次阅读
    如何使用TensorFlow构建<b class='flag-5'>机器</b><b class='flag-5'>学习</b>模型