死宅福音:乐高不怕多,智能分拣机帮你归类
作者 | 神经小兮
来源 | 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 都会帮你分拣乐高了,还有什么不能做的呢?
—— 完 ——
(*本文为AI科技大本营转载文章,转载请联系作者)
◆
精彩公开课
◆
推荐阅读
讯飞轮值总裁胡郁:大数据是人工智能产业落地的必要保障| BDTC 2019
专访ClickHouse创始人:数据库竞争依旧火热,技术整合势在必行
商汤联手华科:提出文字检测模型GNNets,新颖模块可解决几何分布难题
20行代码发一篇NeurIPS:梯度共享已经不安全了
图灵奖得主Bengio:深度学习不会被取代,我想让AI会推理、计划和想象
4大主流CPU处理器技术架构,不知道就out了!
阿里云上万个 Kubernetes 集群大规模管理实践
公司倒闭,39 岁重新找工作,薪资不到 8000,太残酷!
HTML + CSS 为何得不到编程界的认可?
你点的每个“在看”,我都认真当成了AI
相关文章:

优化eclipse启动速度
< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd> 最近发现eclipse越来越慢,影响了开发使用速度。经过处理,快了一些,希望给大家一些提示。 1,取消系统的自动折叠 操作方法:…

一个基于J2EE的web应用程序运行起来需要什么?
2019独角兽企业重金招聘Python工程师标准>>> Eclipse ?IDEA?这是目前市面上最常用的开发工具啦,我的理解是这些只是开发工具,是为了方便开发的,而不是web应用程序运行起来必须的东西。 为什么会有些这方面东…

深度学习中的优化算法之MBGD
之前在https://blog.csdn.net/fengbingchun/article/details/75351323 介绍过梯度下降,常见的梯度下降有三种形式:BGD、SGD、MBGD,它们的不同之处在于我们使用多少数据来计算目标函数的梯度。 大多数深度学习算法都涉及某种形式的优化。优化指…
华科提出目标检测新方法:基于IoU-aware的定位改进,简单又有效
作者 | 周强来源 | 我爱计算机视觉(ID:aicvml)【导语】近日,华中科技大学发表了一篇新论文《IoU-aware Single-stage Object Detector for Accurate Localization》,在此论文中作者提出了一种非常简单的目标检测定位改…

js init : function ()
这个init外面应该还有一层,比如 var a { init: function () {...}, exit: function () {...} } 这样的话,可以用a.init()来调用这个函数, <script type"text/javascript">var obj{init:function(str){alert("init调用&…
Google提出移动端新SOTA模型MixNets:用混合深度卷积核提升精度
作者 | Google译者 | 刘畅编辑 | Jane出品 | AI科技大本营(ID:rgznai100) 【导语】目前,深度卷积(Depthwise convolution)在追求高性能的卷积网络中的应用变得越来越流行,但很多研究忽略了其内核…

桌面窗口的一些发现
最近因业务需要,玩了一下全屏问题。后来,对windows xp sp2的桌面窗口产生了兴趣。写了段代码,玩了一下。同时结合网上的一些知识,发现了以下一些现象。(转载请指明出处) 首先窗口名有#32769、Progman、Shel…

三说输入法[转]
如果我愿意,我会不停地说下去,直到烦死你们,谁让我用的输入法快呢。 我说了几句搜狗或股沟输入法的坏话,引来一些人的争论,大大在我预料之中,这年头,当你想说一些知名度较高的人或物的坏话时&am…

回忆之城市搜索
直接看效果点这里 HTML <!DOCTYPE html> <html> <head lang"zh-CN"><meta charset"utf-8"><title> 城市搜索 </title><link rel"stylesheet" href"ui-departure.css"> </head> <b…

ATL::CStringA和std::string之间转换的一些误区
对于刚做windows下VC的开发同学,类型转换应该是一个令其很苦恼的问题。我刚写工作的时候,也为这类问题不停的在网上搜索转换方法。最近工作中遇到一个“神奇”的bug(一般“神奇”的问题往往是低级错误导致的),最后跟踪…

Windows XP鲜为人知的70招
一、Windows XP优化恢复Windows经典界面很多人安装了Windows XP后的第一感觉就是Windows变得漂亮极了。只是可惜美丽的代价要耗掉我们本就不富裕的内存和显存。要想恢复到和经典Windows类似的界面和使用习惯,请在桌面上单击鼠标右键,选择“属性”命令即可…
Github开源趋势榜Top 1:英伟达升级发布二代StyleGAN,效果更完美
整理 | Jane出品 | AI科技大本营(ID:rgznai100)2018 年底,英伟达借鉴风格迁移的思路,提出当时最先进的无条件生成模型—— StyleGAN ,吸引了大家广泛关注。随后,代码开源,一位 Uber …

百度地图 ip查询 service
官方文档:http://developer.baidu.com/map/wiki/index.php?titlewebapi/ip-api 请求 一个例子: http://api.map.baidu.com/location/ip?ak3GFi2F04wXaVuwmGu8fN49kL1234567890&ip180.161.128.181 返回 {"address": "CN|\u6cb3\u535…

python3编写简易统计服务器
打点这个功能总是美其名曰“帮助提升用户体验”,其实说白了就是记录用户做了哪些操作。目前国内很多通用软件都做了相关功能,像360、QQ等这样的以用户体验出众的软件,其打点的面自然也很广很细。当然这种“侵犯”用户隐私的事情在业内各个公司…
作价20亿美元!英特尔收购以色列AI芯片公司Habana Labs
出品 | AI科技大本营(ID:rgznai1000)12月16日,英特尔宣布以约 20 亿美元收购以色列公司Habana Labs,这成为英特尔在以色列仅次于 Mobileye(153 亿美元) 的第二大收购案。Habana Labs 成立于 2016 年&#x…

这就是奇客文化?简直太有才了!
这就是奇客文化?简直太有才了……

java中的char类型
2019独角兽企业重金招聘Python工程师标准>>> 一:char的初始化 char是Java中的保留字,与别的语言不同的是,char在Java中是16位的,因为Java用的是Unicode。不过8位的ASCII码包含在Unicode中,是从0~127的。 Ja…

[原创] 如何追踪每一笔记录的来龙去脉:一个完整的Audit Logging解决方案—Part I...
一、提出问题 在开发一个企业级 应用的时候,尤其在一个涉及到敏感数据的应用,比如财务系统、物流系统,我们往往有这样的需求:对于数据库中每一笔数据的添加、修改和删除,都需要有一个明确的日志,以便我们可…

进程间通信:同步双工管道
因为工作需要,需要设计出一个双工的IPC。(转载请指明出处)在一番比较后,我发现管道是比较符合我们的需求的。但是我们需求要求管道的对方是可信任的,而在vista以下系统是没有GetNamedPipeClientProcessId、GetNamedPip…
就因为一个笔记本,运营和产品吵得不可开交......
上班最讨厌的一件事情,莫过于开会,因为每次开会感觉就要吵架,这个今天开会又吵架了,吵架竟然是因为产品小姐姐的笔记本。产品小姐姐用了一本可擦笔记本记录会议内容,运营小姐姐竟然说这个本子有什么用,不就…

Ka的递归编程练习 Part4|Hanoi汉诺塔,双色汉诺塔的也有
1 #include <stdio.h>2 void hanoi(int s,char a,char b,char c) //a是出发盘,b是中途盘,c是结束盘 3 {4 if(s0) return;5 hanoi(s-1,a,c,b); //把最底下的从a借助c移动到b6 printf("%d from %c move to %c\n",s,a,c);7 …

一种精确从文本中提取URL的思路及实现
在今年三四月份,我接受了一个需求:从文本中提取URL。这样的需求,可能算是非常小众的需求了。大概只有QQ、飞信、阿里旺旺等之类的即时通讯软件存在这样的需求。在研究这个之前,我测试了这些软件这块功能,发现它们这块的…
解读 | 2019年10篇计算机视觉精选论文(上)
作者 | 神经小兮来源 | HyperAI超神经(ID:HyperAI)2019 年转眼已经接近尾声,我们看到,这一年计算机视觉(CV)领域又诞生了大量出色的论文,提出了许多新颖的架构和方法,进一步提高了视…

不错的工具:Reflector for .NET
下载地址: http://www.aisto.com/roeder/dotnet/ 注意:下载时要输一些注册信息,输入用户名时,中间要加一个空格。

Possible MySQL server UUID duplication for server
在mysql enterprise monitor监控过程中出现这样的event事件,Topic: Possible MySQL server UUID duplication for server 事件,从该提示的描述来看貌似是存在重复的uuid,而实际上主从关系并不存在重复的uuid。主从关…

使用VC实现一个“智能”自增减线程池
工作中接手了一款产品的改造。因为该产品可能使用很多线程,所以产品中使用了线程池。(转载请指明来自BreakSoftware的CSDN博客) 线程池的一个优点是降低线程创建和销毁的频率;缺点是可能在比较闲的时候还存在一定数量的空闲线程。…

国内外财务软件科目结构的比较
科目结构是整个会计核算的基础。国内外财务软件都是任意定义科目的分段及科目编码长度,一般都能支持六段到九段。但科目结构在不同的国家有不同的规范,因而在不同的财务软件中也就有不同的控制。在科目分类上,国内外有明显的区别。国外财务软…
朋友圈装死,微博蹦迪,Python教你如何掌握女神情绪变化 | CSDN博文精选
作者 | A字头来源 | 数据札记倌很多人都是在朋友圈装死,微博上蹦迪。微信朋友圈已经不是一个可以随意发表心情的地方了,微博才是!所以你不要傻傻盯着女神的朋友圈发呆啦!本文教你如何用Python自动通知女神微博情绪变化,…

java异常笔记
Throwable是所有Java程序中错误处理的父类,有两种资类:Error和Exception。Error:表示由JVM所侦测到的无法预期的错误,由于这是属于JVM层次的严重错误,导致JVM无法继续执行,因此,这是不可捕捉到的…
2019最新进展 | Transformer在深度推荐系统中的应用
作者 | Alex-zhai来源 | 深度传送门(ID:deep_deliver)【导读】最近基于Transformer的一些NLP模型很火(比如BERT,GPT-2等),因此将Transformer模型引入到推荐算法中是近期的一个潮流。Transformer比起传统的L…