教你的BME688如何嗅觉
关于如何训练你的BME688传感器的完整指南
各位科技爱好者,大家好!博世发布了 BME688,一个令人敬畏的新传感器,可以分辨出多达四种不同的气味。本指南将解释教你的BME688如何区分气味的所有细节。如果你是人工智能或Python的新手,请不要担心。本指南适合于初学者。
所以,让我们直接跳到前面。
先决条件
- 树莓派
- BME688分线板 或 博世BME688气体传感器开发套件
- 产生所需气味的标本
- 一个密闭的容器来放置传感器和标本
- 博世的BSEC和AI工作室
- 码头
阶梯
- 选择你的应用
- 记录数据
- 训练算法
- 检测气味
1.选择你的应用程序
第一步是选择你的应用。在本指南中,我将使用肉类和奶酪作为例子。但是有无穷无尽的可能性。你可以区分水果和蔬菜,或者清洁剂和香水。你也可以尝试确定食物何时变坏。
在选择应用程序时,有一些事情你应该考虑。你需要为你想区分的每一类提供许多标本,以确保算法变得强大。开始时,你应该选择一些便宜的、可广泛使用的东西。还要记住,最好使用正常空气作为其中一个类别,因为它几乎总是存在的。
为了创建一个强大的算法,你应该对每个标本使用至少半小时的测量数据。因此,能产生恒定香味的标本是一个很好的选择。还要确保使用范围广泛的标本。例如,如果你只用橙子、柠檬和酸橙作为水果类,传感器可能无法将覆盆子归类为水果,因为它与你用于训练的标本差别太大。使用的不同标本越多越好。
一旦你确定了你的选择,就该创建一个新的AI Studio项目了。打开AI Studio并按下 创建项目... 按钮。按下 配置BME板 如果你想用一个特定的配置来记录数据。
2.记录数据
这个过程是不同的,取决于你是否使用了 BME688分线板 或 博世BME688气体传感器开发套件 (进一步的穿梭板)。穿梭板更容易使用,捕获数据的速度将比突破板快八倍,但它的价格要高得多。我将在下面的章节中详细解释这两种方法。
请注意。 BME688传感器需要一些时间来适应环境和烧制。确保在记录训练数据之前让它运行至少24小时。
用BME688梭子板记录数据
BOSCH为穿梭板配备了8个BME688传感器,因此它在相同的时间内产生了8倍的数据。所有的软件都已安装,开箱即用。观看 博世的这个视频教程 以了解测量过程。
如果你在一次会议上记录了许多标本,你可能想记下标本的顺序,以避免混淆。你可以在以后的AI Studio中随时裁剪数据,所以不要害怕捕捉大量的数据。
用BME688分线板记录数据
如果你在使用 BME688分线板 我仍然建议你观看 博世教程 因为它提供了一些关于AI Studio的训练过程的有用信息。但是为了记录训练数据,还需要一些额外的步骤。
我们在 pi3g 为BME68X传感器创建了一个Python库,你可以用它来升级 博世BSEC 2.0.因此,如果你有一些python的经验是有帮助的,但这不是必须的。
请注意。 请直接在我们的网站上查看安装和使用说明。 GitHub.
首先克隆我们的 bme68x-python-library.这可以通过在bash终端执行以下命令来完成。
git clone https://github.com/pi3g/bme68x-python-library.git
现在你需要构建和安装bme68x python模块。该 BSEC 2.0 是专利软件,所以你需要直接从博世下载2.0.6.1版本,并同意他们的许可。将其解压到bme68x-python-library文件夹中,然后执行这些命令。
cd path/to/bme68x-python-library
sudo python3 setup.py install
现在你可以运行 bmerawdata.py 脚本的默认设置。
cd tools/bmerawdata
python3 bmerawdata.py
脚本将在每次测量后显示记录的数据。终止脚本并将数据保存在AI Studio兼容的文件中,按 Ctrl+c.
3.训练该算法
进口数据
无论你是否在使用 BME688分线板 或 博世BME688气体传感器开发套件,下一步是将数据导入AI Studio。按下 进口数据 按钮并选择你的.bmerawdata文件。
你的会议需要一个有意义的名字。选择一个列举的标本是合适的。
你可以看到你的数据图表,例如气体数据通道的图表,如下图所示。
如果数据来自梭子板,你可以在八个传感器的数据之间切换。每一条彩色的线代表了用来捕捉数据的加热器曲线的一个步骤。
请注意。 在大多数情况下,你应该只使用气体数据通道进行训练。
现在我们需要给我们的标本贴上标签。如果你用梭子板记录了数据,并使用板上的按钮来标记标本,你已经能够看到每个标本的模板了。你也可以裁剪标本并创建新的标本(例如,如果你用我们的突破板记录了多个标本)。
在你完成编辑会话后,按 进口数据 按钮,在对话框的右下角。
一旦你导入并标记了所有的标本,就是创建和训练算法的时候了。
创建算法
选择 我的算法 在顶部点击 + 新算法 .给你的算法起个名字,代表它应该做什么,在我的例子中 芝士蛋糕(AirMeatCheese.然后添加类。我把我的类称为NormalAir、Meat和Cheese。选择哪些标本属于哪个类,并为每个类选择一种颜色。
要添加或删除标本,你可以点击其中一个类别。下面是一个例子,说明 肉类 类看起来像。
在类的下面,你可以看到一些关于算法的额外数据。
数据平衡显示了每个类别的总测量时间。为了确保最佳性能,每个类别的测量时间应该是相等的。如果其中一个类的测量时间远远大于此,你可能会遇到算法对该类的偏见。还要注意每个标题前面的问号按钮。按下它可以获得更详细的信息。
请注意。 请务必查看BME688 AI Studio文档以了解更多信息。
在数据通道下,您可以选择四个传感器输出中哪一个用于您的算法。我建议只使用气体数据通道,因为其他通道主要取决于环境而不是样本。一旦你设置好了一切,就可以进行训练了。
培训和出口
在这里你可以选择训练方法、最大轮数和数据分割。如果你是神经网络的新手,你应该把一切都保持在默认设置。不过,我将尝试对这些设置进行简单的解释。
在我写这篇文章时,唯一可用的训练方法是ADAM优化器。这是一种寻找误差函数最小值的具体方法(误差越小意味着预测越准确)。你可以选择不同的批次大小来提高训练速度和稳定性。
增加最大的训练轮次是提高算法性能的另一种方法。对于每一轮(通常被称为epoch),AI Studio将整个训练数据集送入神经网络中。这意味着更多的最大回合数将增加训练算法的时间。大多数时候,AI Studio会检测是否达到了最小值,并在达到最大轮数之前完成训练。这就减少了训练时间,避免了过度拟合。
过度拟合意味着神经网络对训练数据进行了过多的调整。如果该算法在训练中的准确率非常高,但在实际测试中的表现却很差,你可能想减少最大训练回合。
数据分割设置允许你选择多少记录的数据被用于训练,多少被用于测试。你应该避免将超过三分之一的数据用于测试。顾名思义,该算法将只使用训练数据进行训练。训练结束后,AI Studio将使用测试数据对算法进行评估,因为它以前从未见过这些数据。
新闻 训练神经网络 来开始训练。你会看到估计的剩余训练时间和准确度和损失的线图。
在每个历时中,准确度和验证准确度应该提高,而损失和验证损失应该减少。等到训练结束。
训练完成后,检查混淆矩阵。它包含关于训练结果的重要信息。最有趣的统计数字是准确率,但如果你的训练数据分布不均,那么F1得分可能是一个更好的指标。
你很少会达到超过90%的准确度,所以如果准确度高于80%,你应该导出算法来测试。我们将用我们的检测气味的 码头 网络界面。请确保导出BSEC 2.0.6.1版本的算法,因为 码头 到目前为止只支持这个版本。
请注意。 在大多数情况下,培训将在达到预计期限之前完成。
4.检测气味
要检测气味,只需安装 码头 客户端,并将其连接到你的账户。如果你没有 码头 然而,只需免费注册,并按照那里的指示进行操作。我们的数字鼻子应用程序允许你上传你训练的算法,并通过网络界面看到实时预测。请看 数字鼻帮助 以获得关于如何使用该应用程序的完整解释。
另一种检测气味的方法是通过使用我们的 BME68X Python扩展.这需要一些python编码,但提供更多的控制,并允许你使用你的算法创建自己的应用程序。请参考 README.md,在 文档.md 和 例子 文件夹,以了解如何安装和使用该扩展。
所以你有了它。你现在应该能够记录数据,训练你的算法并检测气味。如果你觉得本指南有用,或者在遵循本指南时遇到任何麻烦,请让我知道。
请与我联系:[email protected]
对我来说,训练算法并不奏效。相反,软件显示错误 "算法不能被训练。训练数据或测试数据似乎都丢失了。"。然而,我已经用BME688分线板为我的每个班级采集了大约一小时的数据。你知道我可能做错了什么吗?
这听起来像是.bmerawdata文件可能被损坏了。你可以试着看一下这个文件,看看是否有任何坏的值。它是json格式的
你找到解决这个问题的办法了吗?
嗨,内森
我也刚试了一下你的代码,在做算法时,我得到了同样的错误。
"训练数据或测试数据似乎都丢失了。"
你的代码中可能有一些问题?
嗨,托马斯
我还不能重现这个错误。
你用的是什么版本的AI Studio dp?该脚本在AI Studio 1.6.0版本下测试。
嗨,内森
我使用了最新的版本(1.6.0),我也给你发了一封关于它的邮件,所以你想让我给你发送样本文件?
我试着做了很多测试,但每次都是同样的错误 🙁
是的,我也在使用1.6.0,请检查数据收集的这些文件,一个是烟雾,另一个是正常的空气。 https://we.tl/t-PwfkYXjnGP
[......]上,例如温湿度传感器,或者也许是使用 DHT22 或 BME688 的空气质量项目,或者是使用光[......]的亮度传感器。
[...]教您的 BME688 如何闻气味[...]