垃圾分类器项目,被亲切地称为“它去哪儿了?!”,旨在让扔东西更快、更可靠。
该项目使用在Lobe中训练的机器学习 (ML) 模型, 这是一个对初学者友好的(无代码!)ML 模型构建器,用于识别对象是否进入垃圾、回收、堆肥或危险废物。然后将该模型加载到 Raspberry Pi 4 计算机上,使其可以在任何可能找到垃圾箱的地方使用!
本教程将指导您如何使用 Python3 中的 Lobe TensorFlow 模型在 Raspberry Pi 上创建自己的垃圾分类器项目。
难度:初学者++(一些关于电路和编码的知识很有帮助)
阅读时间:5分钟
构建时间:60 - 90 分钟
成本:~70 美元(包括 Pi 4)
此项目假设您从无头配置中完全设置的 Raspberry Pi 开始。这是一个初学者友好的指南,介绍如何做到这一点。
它还有助于了解以下内容:
1.熟悉树莓派
2.阅读和编辑Python代码(你不需要从头开始编写程序,只需编辑)
3.阅读Fritzing接线图
4.使用面包板
美国的每个城市(我假设是全球)都有自己的垃圾/回收/堆肥/等。采集系统。这意味着要制作准确的垃圾分类器,我们需要 1) 构建自定义 ML 模型(我们将在下一步中介绍这一点——无需代码!)和 2) 知道每块垃圾的去向。
由于我并不总是知道我用来训练模型的每个项目的正确垃圾箱,我使用了上面显示的西雅图公用事业传单,还有这个方便的“它去哪里了?” 西雅图市的查找工具!通过查找您所在城市的垃圾收集实用程序并仔细阅读其网站,查看您所在城市的可用资源。
什么是洛贝?
Lobe是一款易于使用的工具,拥有将机器学习理念变为现实所需的一切。向它展示您希望它做什么的示例,它会自动训练一个自定义机器学习模型,该模型可以为边缘设备和应用程序导出。它不需要任何经验即可开始。您可以免费在自己的计算机上进行训练!
以下是有关如何使用 Lobe 的快速概述:
1. 打开 Lobe 程序并创建一个新项目。
2. 拍摄或导入照片并将它们标记为适当的类别。稍后我们将在项目的软件部分需要这些标签。
导入照片有两种方式:
从您的计算机导入现有照片(通过单张照片或文件夹/数据集上传)。
另外:我最终使用了这两种方法,因为您拥有的照片越多,您的模型就越准确。
3.使用“播放”功能测试模型的准确性。更改距离、照明、手的位置等,以识别模型的准确位置和不准确位置。根据需要添加更多照片。
4. 准备就绪后,以TensorFlow (TF) Lite 格式导出 Lobe ML 模型。
在导入照片之前,列出您需要的所有类别以及如何标记它们(例如“垃圾”、“回收”、“堆肥”等)
1. 小心地将 Pi 相机连接到 Pi(访问Pi Foundation 入门指南了解更多信息)。
2. 按照接线图将按钮和 LED 连接到 Pi GPIO 引脚。
3. 建议在焊接或永久连接之前在面包板上测试您的电路并运行程序。为此,我们需要编写并上传我们的软件程序,所以让我们进行下一步吧!
1. 在您的 PC 上,打开WinSCP 并连接到您的 Pi。在 Pi 的主目录中创建一个 Lobe 文件夹,并在该目录中创建一个模型文件夹。
2. 将生成的 Lobe TF 文件夹内容拖到 Pi 上。记下文件路径:/home/pi/Lobe/model
3. 在 Pi 上,打开终端并通过运行以下 bash 命令下载适用于 Python3 的 lobe-python 库:
pip3 install https://dl.google.com/coral/python/tflite_runtime-2.1.0.post1-cp37-cp37m-linux_armv7l.whl
pip3 install lobe
4. 从此repo下载垃圾分类器代码 (rpi_trash_classifier.py)到 Pi 上(单击“代码”按钮,如图 1 所示)。
5. 将硬件连接到 Pi 的 GPIO 引脚后,通读示例代码并根据需要更新任何文件路径:
6. 如有必要,更新代码中的模型标签以与您的 Lobe 模型中的标签完全匹配(包括大小写、标点符号等):
7. 在终端窗口中使用 Python3 运行程序:
python3 rpi_trash_classifier.py
计划概述
首次运行程序时,加载 TensorFlow 库和 Lobe ML 模型需要一些时间。当程序准备好捕捉图像时,状态灯(白色 LED)将闪烁。
拍摄图像后,程序会将图像与 Lobe ML 模型进行比较并输出结果预测(第 83 行)。输出决定打开哪个灯:黄色(垃圾)、蓝色(回收)、绿色(堆肥)或红色(危险废物)。
如果没有任何指示灯亮,状态指示灯返回脉冲模式,则表示拍摄的图像“不是垃圾”,即重新拍照!
捕获图像
按下按钮捕获图像。请注意,您可能需要按住按钮至少 1 秒,程序才能注册按下。建议拍摄一些测试图像,然后在桌面上打开它们以更好地了解相机视图和框架。
为了让用户有时间定位物体并调整相机的光线水平,大约需要 5 秒才能完全捕捉到图像。您可以在代码中更改这些设置(第 35 和 41 行),但请记住,Pi Foundation 建议至少 2 秒来调整光照水平。
故障排除
最大的挑战是确保捕获的图像符合我们的预期,因此请花一些时间查看图像并将预期结果与指示 LED 输出进行比较。如有必要,您可以将图像传递给 Lobe ML 模型,以进行直接推理和更快的比较。
需要注意的几点:
red_led.on()
现在我们已经测试并在必要时调试了我们的项目,使其按预期工作,我们准备焊接我们的电路!
注意:如果您没有烙铁,您可以跳过此步骤。一种替代方法是在电线连接处涂上热胶(此选项将允许您稍后修复/添加/使用东西,但更容易损坏),或使用环氧树脂或类似的永久性胶水(此选项将更耐用但这样做后您将无法使用电路或可能的 Pi)
快速评论我的设计选择(照片 1):
继续建设!
1. 将每根母跳线切成两半(是的,全部剪掉!)。使用剥线钳,去除大约 1/4 英寸(1/2 厘米)的电线绝缘层。
2. 对于每个 LED,将 220Ω 电阻器焊接到负(较短)腿。
3. 剪下一小块约 1" (2cm) 的热缩管,然后将 LED 和电阻连接处推过。确保另一个电阻支脚可以接触到,然后加热热缩管直到它固定接头。
4. 将每个 LED 插入一对母跳线。
5.标记跳线(例如用胶带),然后将跳线焊接到印刷电路板 (PCB) 上。使用 perma Proto 板,您可以使用在面包板设置中使用的相同位置。
6. 接下来,使用(切割)母跳线将每个 LED 连接到其各自的 Pi GPIO 引脚。焊接并标记跳线,以便裸金属通过 PCB 连接到正极 LED 腿。
注意:焊接此线的位置取决于您的 PCB 布局。您也可以将此线直接焊接到正极 LED 跳线上。
7. 将 220Ω 电阻器焊接到 JST 连接器的负极(黑色)端。
8. 将 JST 连接器和电阻器焊接到按钮上。
9. 连接按钮连接器和 GPIO 引脚之间的 M-to-F 跳线(提醒:黑色为 GND)。
10. 将连接 PCB 涂上热胶或环氧树脂,以获得更安全的连接。
注意:如果您选择使用环氧树脂,将来您可能无法将 Pi 的 GPIO 引脚用于其他项目。如果您对此感到担忧,请添加 GPIO 带状电缆并将跨接线连接到该电缆。
为您的树莓派创建一个外壳,将相机、按钮和 LED 固定到位,同时保护树莓派。
设计您自己的外壳或按照下面的构建说明快速制作纸板外壳的原型!
在小纸板箱的顶部,追踪按钮、状态灯、识别灯和 pi 摄像头窗口的位置。
2.用你的精密刀,切掉痕迹。
3. 可选:给外壳涂漆!我选择了喷漆:)
4.为Pi相机剪出一个矩形“窗口”盖并粘在盒子内侧
5. 最后,切出 Pi 电源线的插槽。
而已!您已准备好安装和部署您的项目!将外壳放在垃圾桶上方,插入 Pi,然后运行程序以获得更快、更可靠的减少浪费的方法。耶!
往前走
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !