我为了不让松鼠抢鸟食,造了个AI驱赶系统

简介: 我为了不让松鼠抢鸟食,造了个AI驱赶系统

这是一个典型的美国故事,主人公过上了红酒牛排大 house 的生活,但又遇到了新的烦恼:后院里为鸟儿准备的食盘总是被松鼠光顾。

卑鄙的松鼠正在偷鸟食,让精心布置的喂鸟器成了摆设。

这不是什么新鲜事了:传统的解决方案是将辣椒粉混入鸟食中,然而这并没有奏效。超市里也没有带松鼠挡板的喂鸟器。大多数人可能会在网店购买一个合适形状的挡板——但 Jeremy Merrill 这个人比较头铁,毕竟他是搞机器学习的。

于是一个名叫 Squirrel Soaker 9000 的装置出炉了。

这人使用大约 50 美元成本的零件建造了一个机器,借助人工智能来查看喂食器上面是否有松鼠——当识别到松鼠时,就用花园喷水软管驱赶它。

当然,此处需要一段惊慌失措的松鼠逃跑的视频:

image.png

,时长00:46

看看这效果,自从 Jeremy 的 Squirrel Soaker 9000 上线以来,喂食器上的松鼠数量下降了——所有这些都没有伤害到松鼠。Jeremy 表示,这比他的曾祖父——来自加拿大萨斯喀彻温省、俄罗斯的北佛罗里达红脖 60 年前建造的解决方案要安全得多:当年他是直接用 120V 电线串在他的果树上。


那么它是如何工作的呢?

其实很简单,每隔 30 秒钟,摄像头拍摄的图片就会交由 Python 写的软件进行处理。它将图片发送到 AWS Lambda 端点,该端点根据 Jeremy 训练的 fast.ai 模型对照片进行分类,以检测喂食器上是否有松鼠。

如果 AI 模型报告说有松鼠,则摄像头开始录视频,将信号发送到称为 MOSFET 的电子控制开关,它会依次打开电磁阀的 12V 电源几秒钟,这是一个电控水龙头,它连接到一个用拉链系在番茄笼上的花园喷雾器。


松鼠跑了吗?

松鼠驱赶器看起来不错。如果简单统计的话,这个简单的装置平均每三天驱赶一次松鼠,效果看起来还有提升的空间。

image.gif

image.png

在 10 月的某几天,松鼠完全放弃了前来偷吃食物。它们是被松鼠驱赶器击退了,还是被其他什么秋季美食吸引走了?我们不得而知。

到了冬天怎么办?在水会结冰以后,Jeremy Merrill 就把整套系统关闭了,毕竟水管爆裂不是闹着玩的。


它能驱赶鸟吗?

众所周知,AI 模型的图像识别是看概率的,它在松鼠上的准确率是 86.6%,这意味着当 Squirrel Soaker 9000 启动喷洒时,86.6% 的时间里真的有一只松鼠。13.4% 的时间里这是另一回事,通常是一只鸟,有时什么都没有…… 或者有时候是发明家本人。

这个数字是在 15 天内 321 次启动样本中计算得出的,其中 43 起是错误的。人工智能很容易把哀鸽(mourning dove)误认为是松鼠,原因估计是它们和北美啮齿类动物一样又大又灰。不过这也是因为哀鸽是在 Jeremy 收集完训练数据之后才出现的,所以本质上我们是在问一个从未见过哀鸽的愚蠢 AI,哀鸽是麻雀还是松鼠——偶尔人工智能会说它是松鼠。

所以这个 AI 模型还缺点在线更新算法的能力。

image.png

image.gif

松鼠还是鸽子,对于 AI 来说,这是个问题。

事实证明,一株番茄植物在摄像头旁长了个树枝,挡住了松鼠经常出没的喂食器底部。如果你问一个只知道松鼠和喂鸟器的模型,番茄植物是否是松鼠…… 好吧,它认为是的。于是第二天,这株植物长大了,不碍事了。(召回率是 99%,这意味着如果喂食器上有松鼠,它会被弄湿。)


如何让 AI 模型命令水枪喷水?

首先,按照说明书组装电源和 MOSFET 板,确保你的树莓派(Raspberry Pi)已启动并运行并连接到 wifi。

电源连接器输出 12V、5V 和接地线。12V 线和地线连接到 MOSFET「系统」侧的 + 和 - 输入端。或者你也可以通过将 5V 输出连接到 Pi 相机的 5V 引脚并将接地连接到 Pi 的接地引脚,从同一电源为树莓派供电。

然后,将 GPIO 引脚从树莓派连接到 MOSFET 的 C(用于「控制」)输入。当这条线发送 HIGH 电压时,MOSFET 打开,向输出端(「设备」端)发送 12V 电压;当发送 LOW 电压时,MOSFET 关闭,设备没有供电。

此外,你需要使用非常长的电线将设备侧连接到电磁阀,这样才能让电子设备保持在屋内,而软管在花园里。极性无关紧要,因此将正极线连接到任一侧,但请务必并联一个续流二极管以避免突波电压。

现在,你已经完成了电子设备,上管道!

将你的花园软管连接到母对母软管适配器,然后连接到螺线管。螺线管有一个箭头指示水流方向,因此箭头应指向远离供水的方向。你可能需要将管道工胶带粘贴到螺线管的输入螺纹上。螺线管的螺纹是英国标准管,平行螺纹(又名 BSPP,或 G),与美国的花园软管螺纹形成对比。它们大多能用,但并不完美——水管工胶带将有助于阻止漏税。

喷射喷嘴也是一样,记得用胶带。

不要一直让软管保持开启状态。这可能会施加太大的压力,导致泄漏——甚至导致接头爆炸(这里有血的教训)。

现在我们完成了管道。

上软件。你可以通过任何方式向 MOSFET 的控制输入端发送 HIGH 电压。除了用软件控制它之外,作者还设置了一个按钮来手动操作。

模型训练完成后,我们可以按照以下两个 AWS 教程将模型部署到 AWS Lambda:

设备上的软件是一个简单的 Python 脚本,带有一个 while 循环,在白天每 30 秒拍摄一张照片,然后将其发送给机器学习模型,如果它认为是松鼠的置信度超过 70%,则拍摄一张照片( 所以我们可以后期验证是否真的存在松鼠),录制视频(用于 lulz),将时间点记录到数据库中,然后打开水管。

作者还使用了一个很小的 Flask 应用程序,它显示最近的照片和一个 HTML 按钮,用于网络远程手动控制水管。


如何训练 AI 模型

Fastai 通过给 AI 模型提供正负两种图片样本,让 AI 模型学习图像识别的过程变得非常简单——真只用 13 行代码。在识别松鼠的问题上,作者通过在几天内每分钟从窗外拍一张照片来生成训练数据(示例)。随后下载这些图片,并使用 Mac Finder 的幻灯片视图将它们分类到「squirrel」和「not squirrel 文件夹中。

然后,只需要在 Google Colab 上训练这个模型(免费,13 行代码,大约 45 分钟)。

物料列表

  • 12V 电磁阀,7.95 美元
  • ATX 电源连接器分线套件 - 12V/5V(4 针),15.95 美元
  • MOSFET 电源控制套件,5.25 美元
  • Melnor Hi-Visibility 可调喷嘴,4.98 美元
  • Melnor 金属双母适配器,2.49 美元
  • Arducam 自动对焦 Pi 相机,14.99
  • 一个二极管
  • 水管工胶带
  • 蓝色胶带
  • 两股十英尺左右的编织线
  • 一个树莓派,带一张 SD 卡
  • 根据需要分类其他电子零件(焊料、LED、按钮、电阻器、二极管等)

工具列表:

  • 烙铁、焊锡
  • 万用表
  • Google Colab,免费
  • Fast.ai / Python
  • AWS Lambda

参考教程:

参考内容:https://jeremybmerrill.com/blog/2022/01/squirrel-soaker-9000-repelling-squirrels-with-ai.htmlhttps://www.reddit.com/r/MachineLearning/comments/sctxqh/p_i_built_a_robot_to_protect_my_birdfeeder_from/


相关文章
|
9天前
|
机器学习/深度学习 存储 人工智能
【AI系统】昇思MindSpore并行
本文介绍昇思MindSpore的并行训练技术,包括张量重排布、自动微分等,旨在简化并行策略搜索,提高大规模模型训练效率。文章探讨了大模型带来的挑战及现有框架的局限性,详细说明了MindSpore如何通过技术创新解决这些问题,实现高效的大模型训练。
58 20
【AI系统】昇思MindSpore并行
|
7天前
|
机器学习/深度学习 人工智能 自然语言处理
转载:【AI系统】AI的领域、场景与行业应用
本文概述了AI的历史、现状及发展趋势,探讨了AI在计算机视觉、自然语言处理、语音识别等领域的应用,以及在金融、医疗、教育、互联网等行业中的实践案例。随着技术进步,AI模型正从单一走向多样化,从小规模到大规模分布式训练,企业级AI系统设计面临更多挑战,同时也带来了新的研究与工程实践机遇。文中强调了AI基础设施的重要性,并鼓励读者深入了解AI系统的设计原则与研究方法,共同推动AI技术的发展。
转载:【AI系统】AI的领域、场景与行业应用
|
9天前
|
机器学习/深度学习 人工智能 分布式计算
【AI系统】混合并行
混合并行融合了数据并行、模型并行和流水线并行,旨在高效利用计算资源,尤其适合大规模深度学习模型训练。通过将模型和数据合理分配至多个设备,混合并行不仅提升了计算效率,还优化了内存使用,使得在有限的硬件条件下也能处理超大型模型。3D混合并行(DP+PP+TP)是最先进的形式,需至少8个GPU实现。此策略通过拓扑感知3D映射最大化计算效率,减少通信开销,是当前深度学习训练框架如Deepspeed和Colossal AI的核心技术之一。
55 15
【AI系统】混合并行
|
6天前
|
存储 人工智能 vr&ar
转载:【AI系统】CPU 基础
CPU,即中央处理器,是计算机的核心部件,负责执行指令和控制所有组件。本文从CPU的发展史入手,介绍了从ENIAC到现代CPU的演变,重点讲述了冯·诺依曼架构的形成及其对CPU设计的影响。文章还详细解析了CPU的基本构成,包括算术逻辑单元(ALU)、存储单元(MU)和控制单元(CU),以及它们如何协同工作完成指令的取指、解码、执行和写回过程。此外,文章探讨了CPU的局限性及并行处理架构的引入。
转载:【AI系统】CPU 基础
|
6天前
|
人工智能 缓存 并行计算
转载:【AI系统】CPU 计算本质
本文深入探讨了CPU计算性能,分析了算力敏感度及技术趋势对CPU性能的影响。文章通过具体数据和实例,讲解了CPU算力的计算方法、算力与数据加载之间的平衡,以及如何通过算力敏感度分析优化计算系统性能。同时,文章还考察了服务器、GPU和超级计算机等平台的性能发展,揭示了这些变化如何塑造我们对CPU性能的理解和期待。
转载:【AI系统】CPU 计算本质
|
9天前
|
存储 人工智能 PyTorch
【AI系统】张量并行
在大模型训练中,单个设备难以满足需求,模型并行技术应运而生。其中,张量并行(Tensor Parallelism, TP)将模型内部的参数和计算任务拆分到不同设备上,特别适用于大规模模型。本文介绍了张量并行的基本概念、实现方法及其在矩阵乘法、Transformer、Embedding和Cross Entropy Loss等场景中的应用,以及通过PyTorch DeviceMesh实现TP的具体步骤。
43 11
【AI系统】张量并行
|
6天前
|
机器学习/深度学习 存储 人工智能
转载:【AI系统】计算之比特位宽
本文详细介绍了深度学习中模型量化操作及其重要性,重点探讨了比特位宽的概念,包括整数和浮点数的表示方法。文章还分析了不同数据类型(如FP32、FP16、BF16、FP8等)在AI模型中的应用,特别是FP8数据类型在提升计算性能和降低内存占用方面的优势。最后,文章讨论了降低比特位宽对AI芯片性能的影响,强调了在不同应用场景中选择合适数据类型的重要性。
转载:【AI系统】计算之比特位宽
|
6天前
|
机器学习/深度学习 人工智能 算法
转载:【AI系统】关键设计指标
本文介绍了AI芯片的关键设计指标及其与AI计算模式的关系,涵盖计算单位(如OPS、MACs、FLOPs)、关键性能指标(精度、吞吐量、时延、能耗、成本、易用性)及优化策略,通过算术强度和Roofline模型评估AI模型在芯片上的执行性能,旨在帮助理解AI芯片设计的核心考量与性能优化方法。
转载:【AI系统】关键设计指标
|
6天前
|
机器学习/深度学习 人工智能 并行计算
转载:【AI系统】AI轻量化与并行策略
本文探讨了AI计算模式对AI芯片设计的重要性,重点分析了轻量化网络模型和大模型分布式并行两大主题。轻量化网络模型通过减少模型参数量和计算量,实现在资源受限设备上的高效部署;大模型分布式并行则通过数据并行和模型并行技术,解决大模型训练中的算力和内存瓶颈,推动AI技术的进一步发展。
转载:【AI系统】AI轻量化与并行策略
|
9天前
|
存储 机器学习/深度学习 人工智能
【AI系统】完全分片数据并行 FSDP
本文深入探讨了AI框架中针对权重数据、优化器数据和梯度数据的分布式并行实现,特别是在PyTorch框架下的具体方案。文章首先回顾了通用数据并行和分布式数据并行的概念,重点讨论了同步与异步数据并行的差异。接着,文章详细介绍了如何在PyTorch中实现弹性数据并行,特别是完全分片数据并行(FSDP)的机制,包括其如何通过分片模型状态和剩余状态来减少内存消耗,提高训练效率。此外,文章还探讨了混合精度训练、损失缩放和内存消耗估算等关键技术,为理解和实施高效的分布式训练提供了全面的指导。
31 9
【AI系统】完全分片数据并行 FSDP

热门文章

最新文章