让机器人学会识别透明物体

文 / Synthesis AI 研究工程师 Shreeyak Sajjan 和 Google 机器人团队研究员 Andy Zeng

image

光学 3D 距离传感器已在机器人领域得到广泛应用(如:自动驾驶汽车,自动机械手RGB-D 相机 和激光雷达 (LIDAR) 等),可为相关场景生成完整、准确的 3D 环境绘图。

尽管这些复杂的机器人系统已被应用于多领域,但遇到透明物体(如玻璃容器)时,哪怕是再昂贵的传感器也会失效。这是因为光学 3D 传感器使用的算法均假设:所有表面皆可产生 理想散射 (Lambertian 反射,即表面会朝各个方向均匀反射光线),无论从何种角度观察,物体表面的亮度都相同。但这一假设不适用于透明物体,因为其表面既折射光线又反射光线,因此感测器通常无法正确获取透明物体的深度数据。

image2

传感器通常无法检测到透明物体。右上:Intel® RealSense™ D415 RGB-D 相机拍摄的 3D 深度图像无法正常检测到玻璃瓶。底图:进行深度重建的点云

让机器更有效地感知透明物体的表面,不仅有助于提升安全性,还能在复杂的实际应用中实现一系列新的互动操作,如让机器人整理厨具、分捡可回收塑料、进行室内环境导航或在玻璃桌面上生成 AR 可视化效果等(电影常见特效)。

为解决这一问题,我们同 Synthesis AI哥伦比亚大学 的研究人员合作开发了 ClearGrasp 机器学习算法,能从 RGB-D 图像中估算透明物体的高精度 3D 数据。该算法的成功得益于一个 大规模合成数据集(已公开)。

ClearGrasp 对任何一部标准 RGB-D 相机提供的输入图像均有效,它能通过深度学习准确重建透明物体的深度信息,并泛化到训练期间从未出现的新物体上。这与总是需要预先了解透明物体的信息(例如其物体的 3D 模型),有时通常还需结合使用背景照明图和相机位置的 旧方法(基于位置-法线一致的三维物体重建,CVPR2016)明显不同。在这项研究中,我们将 ClearGrasp 集成到 分拣机器人 的控制系统中,观察到机器人抓取透明塑料物体的成功率得到了显著提升。

image

image5

ClearGrasp 使用深度学习来重建透明物体表面的高精度 3D 深度数据

透明物体的可视数据集

任何有效的深度学习模型都需要大量训练数据(例如,训练视觉需要 ImageNet、训练 BERT 需要维基百科),ClearGrasp 也不例外。但很遗憾,我们并没有现成可用的透明物体 3D 数据集。现有 3D 数据集(如 Matterport3DScanNet)都会忽略透明物体表面数据,因为标记过程昂贵且耗时。

为解决此问题,研究人员创建了一个 大型透明物体数据集,其中包含 50000 多个拟真渲染图以及对应的表面法线(代表表面曲率)、分割蒙版、边缘和深度等信息,可用于训练各种 2D 和 3D 检测任务。每个图像最多包含五个透明物体,这些物体有的放置在平面上,有的位于提包内,背景和照明情况也各不相同。

ClearGrasp 合成数据集 中包含的一些透明物体数据示例

我们还加入了由 286 个真实场景图像组成的测试集,每个图像都具有相应的真实深度。真实场景图像的拍摄过程十分复杂,我们需要将场景中的每个透明物体替换为一模一样的不透明物体。并且在拍摄时,我们营造了多种不同的室内照明条件,并使用了不同材质的背景(如织物和木板等),场景周围还随机散布有不透明物体。图像中既包含合成训练集中出现的已知物体,也包含从未出现的新物体。

image6

左图:真实场景图像拍摄布置,中间图:自定义场景与使用不透明的复制品精确替换每个透明物体,右图:拍摄数据示例

挑战

尽管通过透明物体看到的扭曲背景视图会扰乱普通的深度估算方法,但仍可隐约看清物体的形状;透明物体表面会出现镜面反射,或在光线充足的环境中显示成亮点。这类视觉提示在 RGB 图像中十分明显,并且主要受物体形状的影响。因此卷积神经网络可以使用这些线索来推理出准确的表面法线,并用于估算深度。

image

透明物体上的镜面反射特征鲜明,有助于提示物体形状,并为估算表面法线提供视觉线索

大多数机器学习算法试图直接从 单眼 RGB 图像 (Monocular RGB image) 中估算深度,但即使对于人类而言,单眼深度估算也是一个艰巨的任务。尤其在平坦背景上,估算深度会存在很大误差,如果在此类背景前放置透明物体,误差会被进一步放大。因此我们认为,与其直接估算所有几何图形的深度,不如校正 RGB-D 3D 相机 的初始深度估算值——这样我们就可以利用非透明物体表面的深度,来推定透明物体表面的深度。

ClearGrasp 算法

ClearGrasp 使用 3 个神经网络:一个用于估算表面法线,一个用于遮挡边界(深度不连续),最后一个用于分割透明物体并生成对应的蒙版。蒙版用于排除透明物体的像素,以便填充正确的深度。

然后,我们使用一种全局优化模块来矫正已知表面的深度,并使用预测出的表面法线来帮助物体形状的重建,同时利用预测出的遮挡边界保持不同物体之间分离。

image

方法概述:使用输出的深度数据生成点云,并根据表面法线对其着色

我们使用 ClearGrasp 合成数据集对每个神经网络进行训练。每个网络在识别真实场景的透明物体时均表现良好。但在估算其他表面(如墙壁或水果)的表面法线时却不尽人意,这是由于 ClearGrasp 合成数据集只包含放在平地上的透明物体。为了解决这个问题,我们在表面法线的训练过程中加入了 Matterport3D 和 ScanNet 数据集中的一些真实室内场景。在域内 ClearGrasp 合成数据集和域外真实场景数据集上进行训练后,模型在测试集中的所有表面上均表现良好。

image

上图在不同训练集上训练时,模型对真实图像表面法线的估算结果:
a) 仅使用 Matterport3D 和 ScanNet (MP+SN),
b) 仅使用 ClearGrasp 合成数据集,
c) 同时使用 MP+SN 以及 ClearGrasp 合成数据集。
请注意:模型在仅使用 MP+SN 训练时无法检测透明物体。仅使用 ClearGrasp 合成数据集训练时,可以顺利检测到真实的塑料瓶,但却无法识别其他物体和表面。当同时使用以上两种数据集进行训练时,模型可以兼顾这两方面

实验结果

总体而言,我们的定量实验 (见论文) 表明:在用 ClearGrasp 重建透明物体的深度时,我们的保真度远高于其他替代方法。尽管只是使用 ClearGrasp 合成数据集进行训练,模型同样能够很好适应真实场景,对不同环境的已知物体也能取得非常相似的定量重建性能。此外,我们的模型还能有效泛化到之前从未出现且形状复杂的新物体上。

为了检验 ClearGrasp 的定性性能,我们根据输入和输出深度图像构建了 3D 点云,如下所示(项目网页上提供更多示例)。模型最终估算的 3D 表面具有平整、连贯的重构形状,且不含单眼深度估算方法中出现的锯齿状干扰,这一点对于 3D 投影和 3D 物体检测等应用而言十分重要。我们的模型十分稳健,能自如应对各类挑战,如识别图案背景中的透明物体,或区分彼此之间相互遮挡部分表面的透明物体。

image

模型对真实图像的定性结果。上两行:对已知物体的定性结果。下两行:对新物体的定性结果。由对应的深度图像生成的点云根据表面法线着色

最重要的是,对于使用 RGB-D 图像的精尖 (SOTA, State-of-The-Art) 操控算法,ClearGrasp 的输出深度数据可直接用作其输入。在由原始传感器数据转为使用 ClearGrasp 的输出深度估算值后,UR5 机械臂 上采用的抓取算法在透明物体抓取成功率方面已有大幅提升。平行抓手的成功率已从基准率 12% 提高到 74%,吸爪的成功率也已从 64% 提高到 86%。

image8

使用 ClearGrasp 抓取新的透明物体。请注意一些高难度条件:如无纹理背景、复杂的物体形状、定向光导致的混乱阴影和焦散(Caustic, 光线从表面反射或折射时出现的光照图案)等

局限与未来研究方向

ClearGrasp 合成数据集的局限在于,由于渲染受到传统路径跟踪算法的限制,该数据集无法准确体现焦散现象。最终,这会使模型将明亮的焦散与阴影的结合体错当成独立的透明物体。尽管存在这些缺陷,我们对 ClearGrasp 的研究依旧能够表明:ClearGrasp 合成数据仍可作为一种可行途径,帮助基于学习的深度重建方法取得令人满意的结果。在未来的研究中,我们已经看到一个充满前景的方向:我们可以通过开发能正确渲染焦散和表面瑕疵(如指纹)的渲染器改善从数据集到真实场景迁移的效果。

通过对 ClearGrasp 的研究,我们能够证明:高质量渲染图有助于训练成功的模型,使模型在现实场景中作出良好表现。我们希望此数据集将有助于推动对透明物体数据驱动感知算法的进一步研究。您可以在我们的项目网站和 GitHub 代码库中找到下载链接和更多示例图像。

原始视频地址Bilibili 搬运地址

致谢

本研究由以下人员合作完成:Shreeyak Sajjan (Synthesis.ai)、Matthew Moore (Synthesis.ai)、Mike Pan (Synthesis.ai)、Ganesh Nagaraja (Synthesis.ai)、Johnny Lee、Andy Zeng 和 Shuran Song(哥伦比亚大学)。特此感谢 Ryan Hickman 提供管理支持、Ivan Krasin 和 Stefan Welker 与我们进行成果丰硕的技术讨论、Cameron (@camfoxmusic) 分享他的药瓶 3D 模型,另外还要感谢 Sharat Sajjan 帮助我们设计网页。

原文: Learning to See Transparent Objects
中文:TensorFlow 公众号