资讯详情

Arduino KNN机器学习库实践应用-10分钟轻松实现通过颜色传感器识别不同类型的水果...

94e463001f401b74e46edd7d93cedd1c.png
知乎视频www.zhihu.com

机器学习(ML)算法有各种形式和大小,每种都有自己的优缺点。我们将通过Arduino KNN库继续探索TinyML(嵌入式机器学习)。

除了Arduino的TensorFlow除了强大的深度学习框架外,还有一些适合嵌入式设备上小数据集的经典ML它们非常有用和容易理解——最简单的方法之一是KNN。

KNN只要Arduino有了一些示例数据,可以立即分类!现在发布了一个新的Arduino这样你就可以在你的例子中快速而轻松地包含它KNN,不需要使用其他设备或工具进行训练。

本文将使用颜色分类器示例来理解KNN。相比之下,我们已经展示了深度学习的相同应用,KNN这是一种更快、更轻的方法,但它不能很好地扩展到更大、更复杂的数据集。

颜色分类示例程序

在本教程中,我们将演示如何使用它Arduino Nano 33 BLE Sense上的Arduino_KNN库根据颜色对象进行分类。

演示学习需要以下步骤:

  • Arduino Nano 33 BLE Sense 开发板
  • Micro USB数据线
  • 打开Arduino IDE或Arduino Create 软件开发平台
  • 安装Arduino_KNN库
  • 从文件> 示例> Arduino_KNN中选择ColorClassifier
  • 编译此示例并上传到您身上Arduino板上

Arduino_KNN库

使用了示例草图Arduino_KNN图书馆。图书馆为您自己的程序提供了一个简单的接口KNN:

#include <Arduino_KNN.h> // Create a new KNNClassifier KNNClassifier myKNN(INPUTS);

在我们的例子中,输入=3 -红、绿、蓝值用于颜色传感器

抽样对象的颜色

当你打开Arduino您应该看到以下信息:

Arduino KNN颜色分类器以苹果为例

Arduino板材已准备好采样物体的颜色。如果你手头没有苹果、梨和橘子,你可能需要修改程序来输入不同的颜色标签。请记住,在光线好的房间里,颜色传感器是最好的哑光。非闪光物体需要与每个类别有明显的颜色区别!(这种颜色传感器不能很好地区分橙子和橙子——但它可以检测橙子的成熟度。如果你想根据形状对物体进行分类,你通常可以使用相机。)

当您将Arduino板靠近目标时,它会采样颜色,并将其与标记对象所属类的数字(即数字0、1或2代表苹果、橘子或梨)一起添加到KNN示例中。提供标记示例数据ML技术又称监督学习。

添加示例数据KNN函数的示意图代码如下:

readColor

红、绿、蓝色样品标准也将连续输出:

这个示例程序为每个对象类选择30个颜色样本。你可以向它展示一个对象,它会采样30次颜色——在这个教程中你不需要30个苹果!(虽然更广泛的数据集会使模型更广泛。

分类

使用简单的采样使您的程序可以用来识别和猜测目标。示例程序使用获取训练数据时使用的相同函数来读取颜色传感器——但此次调用classification函数,当你显示颜色时,它会猜测对象类别:

readColor

你可以试着向它展示一个对象,看看它猜测对象是什么:

让我猜猜你是什么。

0.44,0.28,0.28

识别结果:你现在展示的是苹果。

注:它不是100%准确,特别是当物体表面或照明条件发生变化时。您可以使用不同数量的示例k值以及不同的对象和环境进行试验,以了解这将如何影响识别的结果。

KNN如何工作?

虽然Arduino_KNN库为您完成了计算,但在选择应用程序时ML理解算法ML算法的工作方法非常有用。简而言之,KNN该算法通过比较对象与之前看到的例子之间的距离来分类对象。这里有一个包含日均温度和湿度数据点的示例图。每个例子都标有一个季节:

对图表上的新对象进行分类( ?)KNN分类器会找到它以前见过的最相似的例子。由于我们的示例中有两个输入,算法通过计算新对象与前一个示例之间的距离来实现这一点。你可以看到上面最接近的例子被标记为冬天。

KNNk只是算法中最接近的例子。k=3.计算三个最接近的例子。在上图中,算法春天两票,给冬天一票——所以结果会变成春天。

KNN缺点之一是训练样本数据越多,KNN每次对象进行分类时,算法需要检查的时间越长。KNN降低大数据集的可行性也是如此KNN与基于深度学习的方法主要不同。

物体按颜色分类

在我们的颜色分类器示例中,有三个输入来自颜色传感器。每个对象的示例颜色可以看作是三维空间中位于红色、绿色和蓝色轴上的点。和往常一样,KNN算法通过检查输入与前面看到的示例的距离来猜测对象,但是由于这次有三个输入,它必须计算三维空间中的距离。数据的维数越多,计算分类结果的工作量就越大。

未来构想

这只是KNN可能的快速体验。您将在图书馆示例中找到面向开发板的示例和用于构建的简单示例。您可以使用它BLE Sense板上的任何传感器甚至可以作为输入KNN与其他ML结合技术使用。

当然,Arduino还有其他可用的机器学习资源,包括TensorFlow Lite教程以及Edge Impulse和Qeexo支持其他专业工具。未来将邀请更多专家Arduino进一步探索机器学习。


标签: 颜色传感器分线板

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司