电子发烧友App

硬声App

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

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

3天内不再提示
电子发烧友网>电子资料下载>电子资料>使用ML制作Pi垃圾分类器

使用ML制作Pi垃圾分类器

2022-11-07 | zip | 0.50 MB | 次下载 | 免费

资料介绍

描述

垃圾分类器项目,被亲切地称为“它去哪儿了?!”,旨在让扔东西更快、更可靠。

该项目使用在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 中创建自定义 ML 模型

pYYBAGNkdsKAbl5eAACvNMRtjYA983.png
 

什么是洛贝?

Lobe是一款易于使用的工具,拥有将机器学习理念变为现实所需的一切。向它展示您希望它做什么的示例,它会自动训练一个自定义机器学习模型,该模型可以为边缘设备和应用程序导出。它不需要任何经验即可开始。您可以免费在自己的计算机上进行训练!

以下是有关如何使用 Lobe 的快速概述:

1. 打开 Lobe 程序并创建一个新项目。

pYYBAGNkdsWAIDlJAADUfVRdIAg391.png
 
poYBAGNkdsiAMYcSAABY7cUfwsE614.png
 

2. 拍摄或导入照片并将它们标记为适当的类别。稍后我们将在项目的软件部分需要这些标签

导入照片有两种方式:

  • 直接从您的计算机网络摄像头拍摄物品照片,或

从您的计算机导入现有照片(通过单张照片或文件夹/数据集上传)。

  • 请记住,照片文件夹名称将用作类别标签名称,因此请确保它与任何现有标签匹配!
  • 从您的计算机导入现有照片(通过单张照片或文件夹/数据集上传)。请记住,照片文件夹名称将用作类别标签名称,因此请确保它与任何现有标签匹配。

另外:我最终使用了这两种方法,因为您拥有的照片越多,您的模型就越准确。

poYBAGNkdsuAfWU2AAHuyNki8O0556.png
正确分类瓶盖的模型示例。
 
pYYBAGNkds6AVJokAAHiMZ65KBI527.png
误报示例。这告诉我我需要更多不同距离的瓶盖图像。
 

3.使用“播放”功能测试模型的准确性。更改距离、照明、手的位置等,以识别模型的准确位置和不准确位置。根据需要添加更多照片。

pYYBAGNkdtCAUO2gAAA6ci_t4r4055.png
 

4. 准备就绪后,以TensorFlow (TF) Lite 格式导出 Lobe ML 模型。

pYYBAGNkdtOAFY9OAAED7v0lLWI397.png
提示:为“非垃圾”创建一个类别,其中包含您空手和背景的照片。
 

提示:

在导入照片之前,列出您需要的所有类别以及如何标记它们(例如“垃圾”、“回收”、“堆肥”等)

  • 注意:使用与上面“Lobe Model Labels”照片中所示相同的标签,以减少您需要更改的代码量。
  • 在导入照片之前,列出您需要的所有类别以及如何标记它们(例如“垃圾”、“回收”、“堆肥”等)注意:使用与“Lobe”中所示相同的标签模型标签”照片,以减少您需要更改的代码量。
  • 包括一个“非垃圾”类别,其中包含照片中可能包含的任何其他内容(例如您的手和手臂、背景等)
  • 如果可能,从 Pi 相机拍照并导入 Lobe 这将大大提高模型的准确性!
  • 需要更多照片吗?查看Kaggle上的开源数据集,包括这个垃圾分类图像集!
  • 需要更多帮助?在 Reddit 上与Lobe 社区联系!

建造它:硬件

pYYBAGNkdteAKUTWAAYO9TZ8IsU775.jpg
 

1. 小心地将 Pi 相机连接到 Pi(访问Pi Foundation 入门指南了解更多信息)。

poYBAGNkdtqAbL2YAAJJPoQrUA8174.jpg
 

2. 按照接线图将按钮和 LED 连接到 Pi GPIO 引脚。

  • 按钮:将按钮的一个引脚连接到 GPIO 引脚 2。通过电阻器将另一个引脚连接到 GPIO GND 引脚。
  • 黄色 LED :将正极(较长)腿连接到 GPIO 引脚 17。通过电阻器将另一腿连接到 GPIO GND 引脚。
  • 蓝色 LED :将正极连接到 GPIO 引脚 27。通过电阻器将另一条连接到 GPIO GND 引脚。
  • 绿色 LED :将正极连接到 GPIO 引脚 22。通过电阻器将另一条连接到 GPIO GND 引脚。
  • 红色 LED:将正极连接到 GPIO 引脚 23。通过电阻器将另一条连接到 GPIO GND 引脚。
  • 白色 LED :将正极连接到 GPIO 引脚 24。通过电阻器将另一条连接到 GPIO GND 引脚。

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
pYYBAGNkdt6AYPZBAAGZwAoZkOM056.png
 

4. 从此repo下载垃圾分类器代码 (rpi_trash_classifier.py)到 Pi 上(单击“代码”按钮,如图 1 所示)。

  • 喜欢复制/粘贴?在此处获取原始代码。
  • 喜欢下载到您的计算机上?将存储库/代码下载到您的计算机上,然后通过 WinSCP(或您首选的远程文件传输程序)将 Python 代码传输到 Pi。

5. 将硬件连接到 Pi 的 GPIO 引脚后,通读示例代码并根据需要更新任何文件路径:

  • 第 29 行:Lobe TF 模型的文件路径
  • 第 47 和 83 行:通过 Pi 相机捕获的图像的文件路径

6. 如有必要,更新代码中的模型标签以与您的 Lobe 模型中的标签完全匹配(包括大小写、标点符号等):

  • 第 57 行:“垃圾”
  • 第 60 行:“回收”
  • 第 63 行:“堆肥”
  • 第 66 行:“危险废物设施”
  • 第 69 行:“不是垃圾!”

7. 在终端窗口中使用 Python3 运行程序:

python3 rpi_trash_classifier.py

测试它:运行程序!

poYBAGNkduCAMCj-AABCnNvXb-g902.png
 

计划概述

首次运行程序时,加载 TensorFlow 库和 Lobe ML 模型需要一些时间。当程序准备好捕捉图像时,状态灯(白色 LED)将闪烁。

拍摄图像后,程序会将图像与 Lobe ML 模型进行比较并输出结果预测(第 83 行)。输出决定打开哪个灯:黄色(垃圾)、蓝色(回收)、绿色(堆肥)或红色(危险废物)。

如果没有任何指示灯亮,状态指示灯返回脉冲模式,则表示拍摄的图像“不是垃圾”,即重新拍照!

捕获图像

按下按钮捕获图像。请注意,您可能需要按住按钮至少 1 秒,程序才能注册按下。建议拍摄一些测试图像,然后在桌面上打开它们以更好地了解相机视图和框架。

为了让用户有时间定位物体并调整相机的光线水平,大约需要 5 秒才能完全捕捉到图像。您可以在代码中更改这些设置(第 35 和 41 行),但请记住,Pi Foundation 建议至少 2 秒来调整光照水平。

故障排除

最大的挑战是确保捕获的图像符合我们的预期,因此请花一些时间查看图像并将预期结果与指示 LED 输出进行比较。如有必要,您可以将图像传递给 Lobe ML 模型,以进行直接推理和更快的比较。

需要注意的几点:

  • TensorFlow 库可能会抛出一些警告消息——这是示例代码中使用的版本的典型情况。
  • 预测标签必须与 led_select() 函数中所写的完全一致包括大小写、标点符号和间距。如果您有不同的 Lobe 型号,请务必更改这些设置。
  • Pi 需要稳定的电源Pi 的电源灯应该是明亮的、稳定的红色。
  • 如果一个或多个 LED 未按预期亮起,请使用以下命令强制它们亮起进行检查:
red_led.on()

(可选)构建它:完成您的电路!

pYYBAGNkduWAOFvOAAeaK2o-6FM166.jpg
 

现在我们已经测试并在必要时调试了我们的项目,使其按预期工作,我们准备焊接我们的电路!

注意:如果您没有烙铁,您可以跳过此步骤。一种替代方法是在电线连接处涂上热胶(此选项将允许您稍后修复/添加/使用东西,但更容易损坏),或使用环氧树脂或类似的永久性胶水(此选项将更耐用但这样做后您将无法使用电路或可能的 Pi)

快速评论我的设计选择(照片 1):

  • 我为 LED 和 Pi GPIO 选择了母跳线,因为它们允许我移除 LED 并交换颜色或在需要时移动它们。如果您想使连接永久化,您可以跳过这些。
  • 同样,我为按钮选择了 JST 连接器

继续建设!

1. 将每根母跳线切成两半(是的,全部剪掉!)。使用剥线钳,去除大约 1/4 英寸(1/2 厘米)的电线绝缘层。

poYBAGNkdumAS84oAAWnCWBDUVs004.jpg
 

2. 对于每个 LED,将 220Ω 电阻器焊接到负(较短)腿。

pYYBAGNkdu-AXDVXAAZcU0GzNbc785.jpg
 

3. 剪下一小块约 1" (2cm) 的热缩管,然后将 LED 和电阻连接处推过。确保另一个电阻支脚可以接触到,然后加热热缩管直到它固定接头。

poYBAGNkdveASTmmAAhGqbW8sQ4703.jpg
 

4. 将每个 LED 插入一对母跳线。

poYBAGNkdv2AMFGOAAmfG687QBk696.jpg
 

5.标记跳线(例如用胶带),然后将跳线焊接到印刷电路板 (PCB) 上。使用 perma Proto 板,您可以使用在面包板设置中使用的相同位置。

6. 接下来,使用(切割)母跳线将每个 LED 连接到其各自的 Pi GPIO 引脚。焊接并标记跳线,以便裸金属通过 PCB 连接到正极 LED 腿。

注意:焊接此线的位置取决于您的 PCB 布局。您也可以将此线直接焊接到正极 LED 跳线上。

poYBAGNkdwSAbpX5AAffEzYwE9Q593.jpg
 

7. 将 220Ω 电阻器焊接到 JST 连接器的负极(黑色)端。

8. 将 JST 连接器和电阻器焊接到按钮上。

9. 连接按钮连接器和 GPIO 引脚之间的 M-to-F 跳线(提醒:黑色为 GND)。

10. 将连接 PCB 涂上热胶或环氧树脂,以获得更安全的连接。

注意:如果您选择使用环氧树脂,将来您可能无法将 Pi 的 GPIO 引脚用于其他项目。如果您对此感到担忧,请添加 GPIO 带状电缆并将跨接线连接到该电缆。

(可选)构建它:案例!

为您的树莓派创建一个外壳,将相机、按钮和 LED 固定到位,同时保护树莓派。

设计您自己的外壳或按照下面的构建说明快速制作纸板外壳的原型!

poYBAGNkdwqAHz1_ABBIk6iKNbo244.jpg
 

在小纸板箱的顶部,追踪按钮、状态灯、识别灯和 pi 摄像头窗口的位置。

  • 注意:Pi 相机窗口应约为 3/4" x 1/2"。

2.用你的精密刀,切掉痕迹。

  • 注意:您可能需要随时测试尺寸
poYBAGNkdxOAR3IJAAusVySa_I0312.jpg
 

3. 可选:给外壳涂漆!我选择了喷漆:)

poYBAGNkdxuAThjUABSvpnJGxLs933.jpg
 

4.为Pi相机剪出一个矩形“窗口”盖并粘在盒子内侧

pYYBAGNkdyCAALWqAAangf3C6D8056.jpg
 

5. 最后,切出 Pi 电源线的插槽。

  • 建议首先安装所有电子设备,以找到 pi 电源线插槽的最佳位置。

安装和部署!

poYBAGNkdyOAECL4AAEYhexTMjI531.jpg
 

而已!您已准备好安装和部署您的项目!将外壳放在垃圾桶上方,插入 Pi,然后运行程序以获得更快、更可靠的减少浪费的方法。耶!

往前走

  • 通过Lobe Reddit 社区与其他人分享您的项目和想法!
  • 查看Lobe Python GitHub 存储库,了解有关如何使用 Python 部署更广泛的 Lobe 项目的一般概述
  • 问题或项目请求?对此项目发表评论或直接与我们联系:AskAMaker@microsoft.com

下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费