原创:HyperAI超神经
关键词:乐高分拣机 计算机视觉
如果你没有玩过乐高,也可能听过乐高。乐高集团于 1932 年诞生于丹麦,此后很快,「LEGO」这个商标就成为了优质玩具的代名词。
1934 年,创始人 Ole Kirk Christiansen 用「LEGO」命名他的公司,图为 LEGO 的 logo 变化
LEGO 旗下最为知名的乐高积木,于 1949 年问世,距今已有 70 年历史。
乐高积木因复杂多样、想象空间大等特点,对儿童充满吸引力,令很多玩家痴迷,甚至成为很多教育机构的教具。
但是,部件种类的丰富,也让热爱乐高的朋友常常陷入分类归纳的困扰中。就目前而言,乐高积木共有 119 个系列,111 种颜色,而每个系列就包含几百个甚至几千个部件。
曾有一位乐高爱好者,在 eBay 上的一次拍卖活动中,收获了 2 吨的乐高积木。剁手一时爽,但面对如此规模的乐高,他傻眼了,「要把这些都整理好,得花上几辈子的时间。」他在博客中写道。
这款霍格沃兹城堡包含 6020 块积木砖块
很多玩家对乐高的归类整理问题也做了一番研究。有位对计算机视觉感兴趣的澳大利亚软件工程师 Daniel West,把这个令人「头秃」的问题交给了 AI。
对于人类来说,只要看一眼积木块,就能轻松识别它的形状颜色等特征,甚至即使一两岁的小孩子,在几次尝试后都可以区分例如 2×1 红色积木块、4×1 绿色积木块和那些小链子积木之间的差异。
但是如果把分类归纳的任务交给机器去做呢?似乎就并没那么简单了。
早在 2011 年,日本的一位乐高爱好者 akiyuky,就为解决这个问题发明了乐高分拣机。不过他的数据库图像较少,分拣速度也较慢。
受到 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 辅助注释来完成海量图片标记的任务。
West 热爱乐高,他的梦想也与乐高有关,他说,他将最终实现毕生的梦想:建造一个真正能工作的乐高分拣机,同时获得设计和部署人工智能系统的现实经验。
Daniel West 在 YouTube 上发布的内容都是乐高积木相关
兴趣是最好的老师,也是最大的驱动力。同时,技术的发展,也成为兴趣、梦想的助推器,让大大小小的梦想都能够更加快速、完美地实现。如今,AI 都会帮你分拣乐高了,还有什么不能做的呢?