树莓派“防松鼠神器”在Reddit火了,13行代码就能让AI替你护食

明敏发自凹非寺
量子位|公众号QbitAI
没想到 , 有一天树莓派还能用在给鸟护食上!
看这只松鼠抱着粮吃的正香……
树莓派“防松鼠神器”在Reddit火了,13行代码就能让AI替你护食
文章图片
突然!就来了一股水流把它喷走了:
树莓派“防松鼠神器”在Reddit火了,13行代码就能让AI替你护食
文章图片
再来一次?还是没能幸免 , 继续被水喷中:
树莓派“防松鼠神器”在Reddit火了,13行代码就能让AI替你护食
文章图片
此时松鼠内心OS:谁这么闲每天没事喷劳资???
树莓派“防松鼠神器”在Reddit火了,13行代码就能让AI替你护食
文章图片
原来 , 这是一位小哥用树莓派做出的喂鸟器保护器 。
因为自己后院鸟儿喂食器的粮被松鼠频频偷走 , 这位小哥赌上自己机器学习爱好者的尊严 , 开发了这个新装置 。
它能够让摄像头每30秒拍下一张照片 , 然后由CV算法来检测喂鸟器上是否有松鼠 。 如果有的话 , 信号就会发送给花园里的电控水龙头 , 让它朝着喂鸟器喷水赶走松鼠 。
而做出这个设备 , 小哥用到的AI模型只需13行代码就能搞定 , 训练甚至只花了45分钟 。
效果也是立竿见影的 , 用了几个星期后 , 松鼠造访的频率直线下降 。
树莓派“防松鼠神器”在Reddit火了,13行代码就能让AI替你护食
文章图片
嗯 , 此刻可能更多要心疼小哥家附近的松鼠了 。
“13行代码+树莓派”赶走松鼠
效果这么好的设备 , 做起来难吗?
非常easy , 一共只需3步:
第一 , 让摄像头每30秒拍下一张照片;
第二 , 将照片发送到AWSLambda端点 , 在端点上使用训练好的AI模型检测照片;
第三 , 如果检测到照片中有松鼠 , 设备就会将信号发送给电控水龙头的开关 , 这时花园中的喷头就会持续喷出几秒钟水流赶走松鼠 。
大概效果就是这样:
树莓派“防松鼠神器”在Reddit火了,13行代码就能让AI替你护食
文章图片
判断画面中是否有松鼠 , 靠的则是小哥自己用fast.ai训练的一个模型 。
他首先自己收集了一个数据集——连续几个星期让相机每30秒就拍一次照片 , 然后手动将照片分类为“有松鼠”和“没有松鼠”两类 。
之后用这个数据集来训练模型 , 小哥是在GoogleColab上搞定的 。
一共只有13行代码 , 训练全程花了大约45分钟 。
硬件端 , 这套设备运行的核心是一个带有摄像头的树莓派 , 在亚马逊商店能直接买到 。
树莓派“防松鼠神器”在Reddit火了,13行代码就能让AI替你护食
文章图片
由于在试验过程中弄出了短路、不小心烧坏了自己的Pi4 , 所有小哥不得不用Pi2+AWSLambda的方式来完成整个推理过程 。
在实际使用过程中 , 如果模型判断照片中有松鼠的置信度超过70% , 就会启动装置 。 同时它还会拍下视频和照片 , 这样小哥就能从历史记录中看到模型是否判断正确了 。
小哥表示 , 这套装置的准确率为86.6% , 赶走大部分来访的松鼠没什么问题 , 但也有失误的时候 。
从总共记录的321次防御中可以看到 , 其中有43次判断失误 。
有时画面中是鸽子在吃东西、有时画面中什么都没有 , 有时则是小哥本人路过了那一区域 , 设备也喷出了水流 。
针对鸽子的情况 , 小哥猜测可能是自己做数据集那段时间 , 很少有鸽子光顾他的喂食器 , 所以导致模型判断有误 。
其中有一天设备则一直在喷水 , 无论喂食器上站的是鸟还是松鼠 , 或者什么都没有 。
后来小哥发现 , 这是因为有树枝刚好挡在了松鼠平常会出现的位置上 。