当物理遇上深度学习——谷歌 AI 推出投掷机器人 TossingBot

雷锋网 AI 科技评论按:昨日,谷歌 AI 在博客介绍了最新成果——投掷机器人 TossingBot,一个能够在真实、随机的世界里学会抓取物体,并扔至习惯范围外指定位置的拾取机器人。雷锋网(公众号:雷锋网) AI 科技评论将之编译如下。

尽管已在物体抓取、视觉自适应、从现实经验学习方面取得相当大的进步,然而我们依旧要考虑机器人如何执行抓取、处理以及物体置放等任务的——尤其在无规律的环境设置里。让我们观察这个在亚马逊机器人挑战赛的装载任务中取得第一名的机器人:

当物理遇上深度学习——谷歌 AI 推出投掷机器人 TossingBot

这是一个令人印象深刻的系统,拥有许多从运动学角度上来说可以防止由于不可预见动力而导致物体掉落的设计功能:从稳定、从容的动作轨迹,到限制物体动量的机械夹子,无一不在保证该功能的实现。

与其他机器人一样,在最开始设计时,它便旨在适应无规律世界的动力因素。这里有一个问题是,除了单纯地适应动力因素,难道机器人就不能够学会有效使用它们,开发物理层面的「直觉」,从而能够更有效地完成指定任务?这样做的话也许可以有效提高机器人的行动能力,进而掌握更复杂的运动技能,比如扔东西、滑动、旋转、摆动或者是捕捉等,这将能带来许多有潜力的应用,比如灾难场景中高效作业的碎片清理机器人——在这种场景中往往争分夺秒。

为了进一步探索这个概念,我们与来自普林斯顿大学、哥伦比亚大学以及麻省理工学院的研究员们合作开发出了 TossingBot:一个能够在真实、随机的世界里学会抓取物体,并扔至习惯范围外指定位置的拾取机器人。通过学习抛出,TossingBot 得以实现两倍于过往系统的拾取速度,并达到两倍的有效置放范围。TossingBot 利用从视觉观察(RGB-D 图像)映射至运动图元控制参数的端到端神经网络学习抓取与投掷策略。通过高架摄像头追踪物体落地位置,TossingBot 得以借助自我监督机制逐步自我完善。更多技术细节可以通过 arXiv 这篇早期论文进行了解:

https://tossingbot.cs.princeton.edu/paper.pdf

面临挑战

投掷是一项难度特别高的任务,主要取决于多种因素:从物体被拾取的方式(即“投掷前条件”),到物体的物理属性(如质量、摩擦力、空气动力学等)。打个比方,如果你以靠近质心的把手位置来抓住一把螺丝刀并扔掉,其着陆位置会比你从金属尖端抓住并抛出更靠近你,后者的话,它将向前摆动后落在离你较远的位置。需要强调的是,无论是何种拾取方式,抛掷一把螺丝刀与抛掷一个乒乓球,两者之间有很大的不同,乒乓球将因空气阻力落在更靠近你的位置。如果要靠手动去设计一个能够妥当处理随机对象涉及这些因素的解决方案,几乎是不可能的。

当物理遇上深度学习——谷歌 AI 推出投掷机器人 TossingBot

投掷取决于多重因素:从如何捡起它到物体的属性与动态

借助深度学习,我们的机器人得以从经验中学习,不用依赖手动式的逐案工程。过去我们已证明我们的机器人能够学习如何推动与抓住各种物体,然而要想准确投掷物体,需要我们对射弹物理学有深入的了解。仅仅通过反复试验试图获取这些知识,不仅耗时耗钱,而且往往无法胜任那些不够具体、且未仔细进行训练方案设置的任务。

物理和深度学习的结合

TossingBot 通过整合基础物理学与深度学习来学习投掷,使之能够快速被训练,并推广至新场景中进行运用。物理学提供关于世界如何运作的先验模型,我们可以运用该模型来开发机器人的初始控制器。比如在投掷场景里,我们可以利用弹道学原理帮助我们估计使物体落至目标位置所需的投掷速度。接着利用神经网络来预测基于物理估算的调整,以随时应对可能出现的未知动态,例如现实世界中的噪声与变化。我们将这种混合方案称为残留物理学,它使 TossingBot 达到 85%的投掷精度。

当物理遇上深度学习——谷歌 AI 推出投掷机器人 TossingBot

训练一开始,伴随着初始权重随机化, TossingBot 反复尝试不那么精确的抓取行为。随着时间的推移,TossingBot 逐渐学会以更好的方式来抓取物体,并在同一时间提高其投掷水平。在这过程中,机器人会偶尔以过去未曾尝试过的速度投掷物体,来探索随后会发生些什么。当垃圾箱被清空时,TossingBot 会主动抬起盒子以便让物体滑落回垃圾箱里。通过这种方式,训练期间的人为干预被降到最低。通过10,000 次左右的抓握与投掷尝试(或等同于 14 小时的训练时间),它最终实现 85%的投掷准确度,在杂乱环境中的抓取可靠性为 87% 。

当物理遇上深度学习——谷歌 AI 推出投掷机器人 TossingBot

TossingBot 在一开始的表现并不佳(左),但在逐渐学会并掌握相应技能后,一切都翻转了(右)

推广至新场景

通过对物理与深度学习进行整合,TossingBot 能够快速适应未出现过的投掷位置与物体。打个比方,当我们利用形状简单的物体(如木块、球和马克笔)对之进行训练,随后它便可以很好应对塑料水果、装饰物品和办公物品等新物体。在新物体的抓取 & 投掷任务上,TossingBot 刚开始的表现可能比较一般,然而在经过几百个训练步骤(一或两小时)的淬炼后,它可以快速适应并实现与训练物体同等的性能表现。我们发现,将物理学、深度学习与残差物理结合,可以达到比基线方案更好的性能。我们甚至亲自上手操作这个任务,惊喜地发现 TossingBot 的表现比我们当中任何一名工程师还要精准!即便如此,我们尚未将之与那些具有运动天赋的人进行测试对比。

当物理遇上深度学习——谷歌 AI 推出投掷机器人 TossingBot

TossingBot 能力可以轻易被推广至新物体上,且表现比普通的 Google 员工要更准确

我们还测试了一种可以推广至过去在训练过程中未曾出现过的新目标位置的对策。为此,我们先将模型放在一组箱子上进行训练,接着再选择另一组拥有截然不同着陆区域的箱子上进行测试。在这种情况下,我们发现投掷背后的残差物理理论作用很明显,弹道学对投掷速度的初始估计能够帮助我们推导出新的目标位置,而残差理论可以在这些估计的基础上进行调整,以应对不同物体属性在现实世界中的变化。这与仅仅使用深度学习的基线方法形成了强烈对比,后者只能处理训练期间看到的目标位置。

当物理遇上深度学习——谷歌 AI 推出投掷机器人 TossingBot

TossingBot 基于残差物理理论将物体扔到不可预见的位置

基于互动的语义扩充

为了解 TossingBot 的学习内容,我们在箱中放置几种物体,在捕获图像后,将之输入至 TossingBot 的训练神经网络中,以提取中间像素的深层特征。我们基于相似性对特征进行聚类,并将最近邻居可视化为热图(越热的区域表示该特征空间拥有越多的相似性),这样便可以准确定位在该场景中的所有乒乓球。即使橙色墙块与乒乓球有着相似的颜色,然而其特征已经足以让 TossingBot 作出区分。同理,我们也可以利用提取特征来定位所有的马克笔,即便这些马克笔拥有相似的形状与重量,且在颜色上不尽相同。观察结果表明,TossingBot 可能更多依赖几何线索(如形状)来学习抓握与投掷行为。此外,学习到的特征也可能反映了进阶属性(如物理属性),这些属性决定了该物体应该如何被抛出。

当物理遇上深度学习——谷歌 AI 推出投掷机器人 TossingBot

在未有明确监督情况下,TossingBot 习得了区分物体类别的深层特征。

这些新兴功能是在除了任务级别的抓取和投掷任务外,在没有任何明确监督的情况下从头开始学习的。它似乎已经足以使系统对物体类别进行区分(比如之前提到的乒乓球和马克笔)。这个实验说明一个与机器视觉相关的广泛概念:机器人应该如何学习视觉世界的语义?从经典计算机视觉的角度来看,语义通常是通过人工图像数据集与人工构建的类别区分来预先进行定义的。然而我们的实验结果表明,只要对手头的任务来说是重要的,模型就能从物理交互中隐含习得物体级别的语义。这些交互越复杂,语义的分辨率就越高。对于通用智能机器人来说——也许它们通过交互来发展自己的语义概念就已足够,而无需人为的干预。

局限性与工作展望

尽管 TossingBot 的实验结果看起来充满希望,然而却依然存在其局限性。例如,它假设所有物体都足以承受抛掷后的着陆碰撞——这就需要进一步的工作来学习针对易碎物体的投掷行为,或者训练其他机器人以缓冲着陆的方式来抓取物体。此外,TossingBot 只能凭视觉数据来推断控制参数—— 而探索额外的感觉(如力矩或触觉)实际上可以使系统更好地对新物体作出反应。

物理学和深度学习的结合,将 TossingBot 导向一个有趣的问题:还有哪些领域可以从残差物理学中受益?如何将这个想法推导至其他类型的任务与交互,是未来研究里一个充满希望的方向。

via https://ai.googleblog.com/2019/03/unifying-physics-and-deep-learning-with.html

雷锋网 AI 科技评论


当物理遇上深度学习——谷歌 AI 推出投掷机器人 TossingBot

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/industrynews/135098.html

(0)
上一篇 2021年9月1日 07:37
下一篇 2021年9月1日 07:37

相关推荐

发表回复

登录后才能评论

WordPress 数据库错误: [Duplicate entry '80-d16c1647a53da3ad6bbb3d1108156ba7' for key 'task_id_source_url_key']
insert into wp_autoblog_queue(task_id,source_url,source_url_key,create_date_time,not_check_stoped,post_interval) values(80,'https://pythonjishu.com/robotic-process-automation/','d16c1647a53da3ad6bbb3d1108156ba7',1734977311,0,0)