资料介绍
描述
垃圾分类器项目,被亲切地称为“它去哪儿了?!”,旨在让扔东西更快、更可靠。
该项目使用在Lobe中训练的机器学习 (ML) 模型, 这是一个对初学者友好的(无代码!)ML 模型构建器,用于识别对象是否进入垃圾、回收、堆肥或危险废物。然后将该模型加载到 Raspberry Pi 4 计算机上,使其可以在任何可能找到垃圾箱的地方使用!
本教程将指导您如何使用 Python3 中的 Lobe TensorFlow 模型在 Raspberry Pi 上创建自己的垃圾分类器项目。
难度:初学者++(一些关于电路和编码的知识很有帮助)
阅读时间:5分钟
构建时间:60 - 90 分钟
成本:~70 美元(包括 Pi 4)
在我们开始之前
此项目假设您从无头配置中完全设置的 Raspberry Pi 开始。这是一个初学者友好的指南,介绍如何做到这一点。
它还有助于了解以下内容:
1.熟悉树莓派
- 这里有一个方便的入门指南!
- 也很有帮助:Pi 相机入门
2.阅读和编辑Python代码(你不需要从头开始编写程序,只需编辑)
3.阅读Fritzing接线图
4.使用面包板
找出你的垃圾去哪里
美国的每个城市(我假设是全球)都有自己的垃圾/回收/堆肥/等。采集系统。这意味着要制作准确的垃圾分类器,我们需要 1) 构建自定义 ML 模型(我们将在下一步中介绍这一点——无需代码!)和 2) 知道每块垃圾的去向。
由于我并不总是知道我用来训练模型的每个项目的正确垃圾箱,我使用了上面显示的西雅图公用事业传单,还有这个方便的“它去哪里了?” 西雅图市的查找工具!通过查找您所在城市的垃圾收集实用程序并仔细阅读其网站,查看您所在城市的可用资源。
在 Lobe 中创建自定义 ML 模型
什么是洛贝?
Lobe是一款易于使用的工具,拥有将机器学习理念变为现实所需的一切。向它展示您希望它做什么的示例,它会自动训练一个自定义机器学习模型,该模型可以为边缘设备和应用程序导出。它不需要任何经验即可开始。您可以免费在自己的计算机上进行训练!
以下是有关如何使用 Lobe 的快速概述:
1. 打开 Lobe 程序并创建一个新项目。
2. 拍摄或导入照片并将它们标记为适当的类别。稍后我们将在项目的软件部分需要这些标签。
导入照片有两种方式:
- 直接从您的计算机网络摄像头拍摄物品照片,或
从您的计算机导入现有照片(通过单张照片或文件夹/数据集上传)。
- 请记住,照片文件夹名称将用作类别标签名称,因此请确保它与任何现有标签匹配!
- 从您的计算机导入现有照片(通过单张照片或文件夹/数据集上传)。请记住,照片文件夹名称将用作类别标签名称,因此请确保它与任何现有标签匹配。
另外:我最终使用了这两种方法,因为您拥有的照片越多,您的模型就越准确。
3.使用“播放”功能测试模型的准确性。更改距离、照明、手的位置等,以识别模型的准确位置和不准确位置。根据需要添加更多照片。
4. 准备就绪后,以TensorFlow (TF) Lite 格式导出 Lobe ML 模型。
提示:
在导入照片之前,列出您需要的所有类别以及如何标记它们(例如“垃圾”、“回收”、“堆肥”等)
- 注意:使用与上面“Lobe Model Labels”照片中所示相同的标签,以减少您需要更改的代码量。
- 在导入照片之前,列出您需要的所有类别以及如何标记它们(例如“垃圾”、“回收”、“堆肥”等)注意:使用与“Lobe”中所示相同的标签模型标签”照片,以减少您需要更改的代码量。
- 包括一个“非垃圾”类别,其中包含照片中可能包含的任何其他内容(例如您的手和手臂、背景等)
- 如果可能,从 Pi 相机拍照并导入 Lobe 。这将大大提高模型的准确性!
- 需要更多照片吗?查看Kaggle上的开源数据集,包括这个垃圾分类图像集!
- 需要更多帮助?在 Reddit 上与Lobe 社区联系!
建造它:硬件!
1. 小心地将 Pi 相机连接到 Pi(访问Pi Foundation 入门指南了解更多信息)。
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
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
测试它:运行程序!
计划概述
首次运行程序时,加载 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()
(可选)构建它:完成您的电路!
现在我们已经测试并在必要时调试了我们的项目,使其按预期工作,我们准备焊接我们的电路!
注意:如果您没有烙铁,您可以跳过此步骤。一种替代方法是在电线连接处涂上热胶(此选项将允许您稍后修复/添加/使用东西,但更容易损坏),或使用环氧树脂或类似的永久性胶水(此选项将更耐用但这样做后您将无法使用电路或可能的 Pi)
快速评论我的设计选择(照片 1):
- 我为 LED 和 Pi GPIO 选择了母跳线,因为它们允许我移除 LED 并交换颜色或在需要时移动它们。如果您想使连接永久化,您可以跳过这些。
- 同样,我为按钮选择了 JST 连接器。
继续建设!
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 摄像头窗口的位置。
- 注意:Pi 相机窗口应约为 3/4" x 1/2"。
2.用你的精密刀,切掉痕迹。
- 注意:您可能需要随时测试尺寸
3. 可选:给外壳涂漆!我选择了喷漆:)
4.为Pi相机剪出一个矩形“窗口”盖并粘在盒子内侧
5. 最后,切出 Pi 电源线的插槽。
- 建议首先安装所有电子设备,以找到 pi 电源线插槽的最佳位置。
安装和部署!
而已!您已准备好安装和部署您的项目!将外壳放在垃圾桶上方,插入 Pi,然后运行程序以获得更快、更可靠的减少浪费的方法。耶!
往前走
- 通过Lobe Reddit 社区与其他人分享您的项目和想法!
- 查看Lobe Python GitHub 存储库,了解有关如何使用 Python 部署更广泛的 Lobe 项目的一般概述
- 问题或项目请求?对此项目发表评论或直接与我们联系:AskAMaker@microsoft.com
- ML-01-SC 手册
- 使用Google Coral和Raspberry Pi进行ML鸟类识别
- 使用Pi和Python制作艺术、游戏等
- 垃圾分类开源硬件
- 基于Arduino和传感器制作智能垃圾桶
- 基于ML的鸟类和松鼠检测器(Raspberry Pi和AWS)
- 通过短信实现的智能垃圾分类和监控系统
- 物联网智能垃圾分类垃圾桶液位指示器系统
- 生活垃圾数据化分类回收方法及其回收系统(机械部分) 0次下载
- 基于BP神经网络分类器的垃圾文本过滤模型 43次下载
- 智能语音识别分类垃圾桶的设计资料合集 32次下载
- 使用51单片机设计智能垃圾桶的详细资料和程序免费下载
- 《爱上Raspberry Pi》中译版-电子书籍.pdf 0次下载
- 基于深度置信网络的垃圾短信分类技术 6次下载
- 垃圾分类回收系统设计报告 39次下载
- 智能垃圾回收箱功能实验 298次阅读
- 串联型PI和并联型PI调节器的比较 3535次阅读
- PI调节器的概念及设计 1.6w次阅读
- 基于卷积神经网络的垃圾图像分类算法 935次阅读
- 如何通过STMicroelectronics的STM32微控制器开始使用ML 1338次阅读
- PI调节器介绍及设计 6235次阅读
- 利用Arduino Mega 2560制作一个干湿垃圾分离器 2459次阅读
- 带你从头构建文本分类器 3288次阅读
- 如何吧垃圾代码进行垃圾分类详细指南说明 3994次阅读
- 智能垃圾桶传感器应用解决方案 5351次阅读
- 如何使用机器视觉技术进行垃圾分类 6290次阅读
- 如何制作能够分类120种小狗的图像分类器 3373次阅读
- 智能垃圾桶有哪些功能及特点_智能垃圾桶市场前景_智能垃圾桶怎么用 1.6w次阅读
- pi调节器原理_pi调节器电路图_pi调节器参数作用 8w次阅读
- 传感器超详细分类大汇总 3508次阅读
下载排行
本周
- 1Keysight B1500A 半导体器件分析仪用户手册、说明书 (中文)
- 19.00 MB | 4次下载 | 免费
- 2使用TL431设计电源
- 0.67 MB | 2次下载 | 免费
- 3BT134双向可控硅手册
- 1.74 MB | 2次下载 | 1 积分
- 4一种新型高效率的服务器电源系统
- 0.85 MB | 1次下载 | 1 积分
- 5LabVIEW环形控件
- 0.01 MB | 1次下载 | 1 积分
- 6PR735,使用UCC28060的600W交错式PFC转换器
- 540.03KB | 1次下载 | 免费
- 751单片机核心板原理图
- 0.12 MB | 1次下载 | 5 积分
- 8BP2879DB支持调光调灭的非隔离低 PF LED 驱动器
- 1.44 MB | 1次下载 | 免费
本月
- 1开关电源设计原理手册
- 1.83 MB | 54次下载 | 免费
- 2FS5080E 5V升压充电两串锂电池充电管理IC中文手册
- 8.45 MB | 23次下载 | 免费
- 3DMT0660数字万用表产品说明书
- 0.70 MB | 13次下载 | 免费
- 4UC3842/3/4/5电源管理芯片中文手册
- 1.75 MB | 12次下载 | 免费
- 5ST7789V2单芯片控制器/驱动器英文手册
- 3.07 MB | 11次下载 | 1 积分
- 6TPS54202H降压转换器评估模块用户指南
- 1.02MB | 8次下载 | 免费
- 7STM32F101x8/STM32F101xB手册
- 1.69 MB | 8次下载 | 1 积分
- 8基于MSP430FR6043的超声波气体流量计快速入门指南
- 2.26MB | 7次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935119次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420061次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233084次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191367次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183335次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81581次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73807次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65987次下载 | 10 积分
评论
查看更多