「树莓派+1万块乐高」打造乐高分类器,树莓派官方转发,网友:我想借来用两天

「树莓派+1万块乐高」打造乐高分类器,树莓派官方转发,网友:我想借来用两天
2021年01月20日 13:46 量子位

晓查 发自 凹非寺 

量子位 报道 | 公众号 QbitAI

拼乐高最头疼的问题是什么?

当然是苦苦寻找某个形状的积木却找不到。当你兴致勃勃地打开包装时,眼前的一切却是这样,内心会作何感想?

现在好了,国外一位乐高爱好者Daniel West用AI解决了这个难题。他使用自己开发的“乐高分类器”,不到2秒时间就能给一块积木归类。

(注:实际分类速度快一倍,为了方便展示,作者将动图速度减半。)

这个分类器由树莓派和1万块乐高积木组成,耗时2年打造,真的是“用乐高搞定乐高”,堪称最硬核的“套娃”。

我们先来感受一下它庞大的外形:

最近,如此硬核的设备也得到了树莓派官方转发。

Daniel的技术是在前人的基础上完成,但更加先进:它可以识别出所有曾经使用过的乐高积木,甚至是从未见过的积木。

因此Daniel把它叫做世界上第一台“通用乐高分类器”(universal LEGO sorting machine)。

工作过程

首先把一桶乐高积木倒入分类器中,在履带的传送下,积木分批少量地落入V形槽。

在V形槽的抖动下,积木又被一块块分别抖入传送带中。

传送带上方的摄像头会拍下多帧画面,并在此过程中完成积木种类的识别。

而后,不同形状的积木分装在不同的桶里。

最后再根据拼装的设定,将积木按照需要装入各个物料盒中。

看完这套设备后,有网友表示:能不能借我回去用几天?

技术实现

其实Daniel所用的技术并不复杂,他甚至还为此写过两篇教程。

这台机器用到的硬件有:树莓派3B+,树莓派摄像头模块V2,9台伺服电机,6台乐高电机。不过,最复杂的硬件应该是Daniel设计的1万块积木的拼装。

首先开始的是图像数据标注工作,Daniel先让机器运行了几天,收集了大约30万张未标记的乐高积木图像。

用手工给30万张图片一一打上标签显然是不切实际的,而相机会给一块积木拍摄10~20张照片,通过打包标注的方法,可以将效率提高10~20倍。

但即便如此,也有上万组照片需要标记。一次次将标签内容填入csv文件显然是个笨办法。而且乐高种类繁多,比如2×2的方块种类就有很多,没必要分得太细。

因此,Daniel决定利用自己的Web开发经验,花几个小时来编写了一个简单的Web应用程序。速度又提高了2~5倍。

即便如此,效率仍然太低。Daniel再次想到用AI“打辅助”,让AI给出TOP-5,自己在App里选中正确的选项,这样每秒5就能标记10张图片,整体效率提升了40~1000倍。

在软件的设计上,Daniel遇到了更大的挑战,那就是树莓派的AI运算能力并不强,如何实现实时的目标检测。

最初,他想到使用YOLO或Faster R-CNN,然而很难在树莓派上达到90fps的处理速度,如果将图像流式传输到PC上处理,网络带宽又会成为性能瓶颈。

Daniel不得不使用“老式”计算机视觉技术——OpenCV库里的MOG2背景扣除器,即使在树莓派3B+上它也能快速处理数据。

但是,直接将视频帧发送到MOG2并不能正常工作。浅灰色和白色积木的亮度与传送带背景过于相似,难以识别。需要做的是在图像传递给MOG2之前增加图像的饱和度。

另外,RGB图像的传输带宽也太高,Daniel只好使用YUV格式将图像带宽压缩一半,并把目标检测框外的像素裁剪掉。

经过重重简化,这套系统达到了70~80fps的处理速度。

最后,在树莓派的官方博客下面的回复中,还有一位高人。他在4年前就设计过一款分类器,给两吨的乐高积木进行分类。

这年头,不懂点AI技术都不敢玩乐高了。

参考链接:

https://www.raspberrypi.org/blog/raspberry-pi-lego-sorter/

https://towardsdatascience.com/how-i-created-over-100-000-labeled-lego-training-images-ec74191bb4ef

https://towardsdatascience.com/a-high-speed-computer-vision-pipeline-for-the-universal-lego-sorting-machine-253f5a690ef4

财经自媒体联盟

新浪首页 语音播报 相关新闻 返回顶部