乐高迷福音:积木不怕多,智能分拣机帮你归类
本文来自微信公众号「HyperAI超神经」(ID:HyperAI),爱范儿经授权发布。
乐高现在几乎已经是优质玩具的代名词,该品牌旗下最为知名的,莫过于乐高积木。其丰富的形状与多样的玩法,无论大人小孩都喜欢。但是,这些繁杂多样的零件,分类收纳起来却也是个大难题。一位软件工程师借助 AI 技术,建造了一台乐高分拣机,为广大乐高爱好者带来了福音。
如果你没有玩过乐高,也可能听过乐高。乐高集团于 1932 年诞生于丹麦,此后很快,「LEGO」这个商标就成为了优质玩具的代名词。
▲ 1934 年,创始人 Ole Kirk Christiansen 用「LEGO」命名他的公司,图为 LEGO 的 logo 变化
LEGO 旗下最为知名的乐高积木,于 1949 年问世,距今已有 70 年历史。
论乐高分类有多难
乐高积木因复杂多样、想象空间大等特点,对儿童充满吸引力,令很多玩家痴迷,甚至成为很多教育机构的教具。
但是,部件种类的丰富,也让热爱乐高的朋友常常陷入分类归纳的困扰中。就目前而言,乐高积木共有 119 个系列,111 种颜色,而每个系列就包含几百个甚至几千个部件。
曾有一位乐高爱好者,在 eBay 上的一次拍卖活动中,收获了 2 吨的乐高积木。剁手一时爽,但面对如此规模的乐高,他傻眼了,「要把这些都整理好,得花上几辈子的时间。」他在博客中写道。
▲ 这款霍格沃兹城堡包含 6020 块积木砖块
很多玩家对乐高的归类整理问题也做了一番研究。有位对计算机视觉感兴趣的澳大利亚软件工程师 Daniel West,把这个令人「头秃」的问题交给了 AI。
▲ 一位知乎答主对 lego 分类整理颇有研究
世界上第一台通用 AI 乐高分拣机
对于人类来说,只要看一眼积木块,就能轻松识别它的形状颜色等特征,甚至即使一两岁的小孩子,在几次尝试后都可以区分例如 2×1 红色积木块、4×1 绿色积木块和那些小链子积木之间的差异。
但是如果把分类归纳的任务交给机器去做呢?似乎就并没那么简单了。
早在 2011 年,日本的一位乐高爱好者 akiyuky,就为解决这个问题发明了乐高分拣机。不过他的数据库图像较少,分拣速度也较慢。
▲ akiyuky 2011 年设计的乐高分拣机
受到 akiyuky 的启发,同样热爱乐高与机器的澳大利亚软件工程师 Daniel West 想设计一个更智能、分拣更迅速的乐高分拣机。
于是,他便花费了两年时间,用超过 10000 块乐高积木,建成了一个通用的乐高积木分拣机,这台分拣机借助计算机视觉算法,可以分拣出任何乐高零件。设备还带有 6 个乐高电机和 9 个伺服电机,为传送乐高零件的传送带和搅拌器提供动力。
West 称,这台机器能够将 2927 种乐高积木分类到 18 个不同的归纳箱,而且每 2 秒就可以分一块积木。这效率,很可以了吧?
虽然这不是世界上第一个乐高分类机,但 West 称它为世界上第一台通用乐高分类机,「因为它使用了最先进的人工智能技术,能够识别和分类任何已经生产出来的乐高部件。」West 也计划在将来发布该代码。
分类工作,流程总共分三步
这台能干的设备具体怎么工作呢?总体来说,似乎并不复杂,总共分三步。
第一步:放入积木
将一大堆乐高积木倒进机器顶部的滑槽中,然后将积木置于振动带,经过晃动,积木被分散成单独的积木块。
第二步:拍照分类
积木块由 Raspberry Pi (树莓派)计算机传送。Raspberry Pi 计算机包含一个照相机,当积木经过时,它会拍下一系列照片,然后把这些照片传送到 CNN 模型 ResNet-50 上进行分类。
第三步:归类入箱
分类结果反馈到该设备后,输送带上的不同小闸门会把积木引导到所属的箱子中。
技术实现「一波三折」
由于乐高的零部件有成千上百种类型,颜色多样,并且从不同角度看形状也不一样。因此,收集正确的训练数据集是整个工作中最难的一部分。
▲ Daniel West 最初让设备运行了几天,收集到了约 30 万张未标记的 LEGO 图像
West 说,他起初试图对乐高积木进行模拟。他从 LDraw Part Library(一个让发烧友可以虚拟构建乐高的开源程序)中获取了乐高零件的 3D 模型,并将其用免费的动画软件 Blender 渲染。
▲ 小哥哥 Twitter 上还展示了他用于训练 AI 模型的 3D 渲染图像示例
然后他可以在不同的旋转角度和颜色下模拟 3D 模型积木。这些单独的图像被收集到一个包含了超过 2500 万张图片的合成数据集中。
但令 West 感到沮丧的是,他的 AI 乐高分拣机用假图像进行训练后,却无法识别出真正的部件。
他说:「我当时几乎完全放弃了这个项目。我花了几个月的时间来实现一种,将合成图像转换成真实图像的复杂方法,但收效甚微。」
之后,他转向了另一种常用的技术,以帮助减少仿真与现实之间的差距:域随机化。
域随机化能够训练模型识别更多的数据变化。该系统不仅学习了乐高积木的不同旋转角度和颜色,还学会了考虑各种灯光效果,纹理和噪音。
为了进一步提高乐高分类器的性能,West 还整合了一个更小的数据集,其中包含真实乐高部件的快照。
他说:「真实的数据集只包含我个人收藏中的零件,最终只有 544 种不同类型的零件。」 这些零件是在乐高系列中更常见的类型,而合成数据集则是一些较少见的类型。
▲ Daniel West 的乐高分拣机高约 80 厘米,有 18 个分类箱
通过对这两个数据集进行训练,从理论上讲,West 的乐高分拣机上的摄像机应该能够识别出它实际上从未见过的零件。不过,模型在不同数据集上的实际表现还是有差别的:在识别真实数据集中的零件时,准确度为 93%,而识别合成数据集中的零件,准确率则为 74%。
收集训练数据集不易,West 还特地撰写了文章(原文链接:http://985.so/f5G8),详细介绍了他如何制作 10 万张的带标签乐高积木训练图片。文中提到,他主要利用样本生成法、简化流程以及使用 AI 辅助注释来完成海量图片标记的任务。
梦想借力 AI 走进现实
West 热爱乐高,他的梦想也与乐高有关,他说,他将最终实现毕生的梦想:建造一个真正能工作的乐高分拣机,同时获得设计和部署人工智能系统的现实经验。
▲ Daniel West 在 YouTube 上发布的内容都是乐高积木相关
兴趣是最好的老师,也是最大的驱动力。同时,技术的发展,也成为兴趣、梦想的助推器,让大大小小的梦想都能够更加快速、完美地实现。如今,AI 都会帮你分拣乐高了,还有什么不能做的呢?