Unity 的人工智能与机器学习高级副总裁 Danny Lange 博士曾表示:“目前,多种新技术、多种新理念相互碰撞结合,终将引发一场新革命。我们正处于这场革命的临界点。”
这场革命的具体形态尚未确定,但可以确定的是,这是一场打破现实与虚拟次元壁的革命。
比如“野生钢铁侠”、华为天才少年、AI 算法工程师稚晖君的作品《我把自行车做成了自动驾驶!!》中,就在 Unity 引擎中构建了一个虚拟的物理环境,引擎中的模拟自行车有着真实的质量,他将自行车的“自行”的过程算法在虚拟环境中可视化了出来,模拟过程没有问题后他才将仿真过程搬到现实。
或许在不远的未来,现实中的产品在投入使用之前,都会在虚拟空间里先“演练”一番。
Unity 内部的 AI 团队一直致力于为机器学习、计算机视觉和机器人等领域打造工具,帮助所有需要 AI 和实时 3D 环境的行业加速项目开发。
在今年的 OpenCV Spatial AI 竞赛中,Gerard Espona 及其 Kauda Team 的参赛作品中包含了多个使用 Unity AI 工具和软件包制作而来的实例,充分利用了 Unity 的机器人、计算机视觉、强化学习和增强现实技术:Perception Package 被用于辅助训练计算机视觉模型,ML-Agents 工具套被用于训练机器学习模型及机械臂的 sim2real 演示。
我们采访了 Gerard,了解他们是如何利用 Unity,在现实世界和虚拟世界中搭起一座桥梁。
Kauda Team 的队名是从哪来的?
Kauda Team 由 Giovanni Lerda 和我(Gerard Espona)两人组成,队名来自 Giovanni 开发的可 3D 打印、电脑主机大小、免费开源的五轴机械臂:Kauda。这款机械臂能由任何人用 3D 打印设备制作,我们也用它开展了项目的远程协作。
Unity 中的 Kauda 数字孪生是怎样制作的呢?
我们专门开发了一个 Unity 应用:Kauda Studio,来驱动 Kauda 的数字孪生。软件提供了一个功能齐全、精确的 Kauda 模拟,带有反向运动学(IK)控制、USB/蓝牙连接,还支持多个 OpenCV OAK-D 摄像机。
什么是 OAK-D 摄像机,它如何在 Unity 中使用?
OAK-D 摄像机由两个立体深度摄像机、一个带有内置处理功能(由英特尔 MyriadX VPU 驱动)、可自动识别多种特征的 4K 彩色摄像机组成。在参赛期间,我们为 OAK 设备创建了一个 Unity 插件,并且也想在 Unity 中为其制作一个数字孪生。
OAK-D 的 Unity 数字孪生集成了一个虚拟的 3D 摄像机,其精确的模拟能力可用于收集合成数据。摄像机还支持将虚拟图像传输到真实设备上,我们能用 Unity Perception Package 和模拟的 OAK-D 摄像机收集合成数据、训练项目。
在制作过程中,使用了 Unity 的哪些功能?
我们可以使用数字孪生为 Kauda 开发更多的功能。通过 Unity 的增强现实(AR)功能在现实环境中与虚拟的机器人进行互动,比如在无机器人实物的情况下学习机器人维护,或者使用虚拟但精确的机器人模型来无代码地编写连续性任务。
数字孪生还使得强化学习(RL)训练成为了可能。RL 的训练周期普遍较长,如果训练不是极其简单的例子,模拟的使用就会非常必要。在 Unity 中制作出 Kauda 模型后,我们使用了 ML-Agents 工具套来进行操控相关的 RL 训练。
我们还在 Unity 中使用机器人与摄像机来检测人类在工作区域内的位置,用于实验人机协作和安全程序。如果一个大型机器人在运行中发生故障,就很可能会对人造成伤害,因此这种实验非常有必要。模拟环境能让我们在不冒危险的情况下开展测试。
项目怎样是用到 ML-Agents 工具包的?
RL 是一个强大的机器人框架,而 Unity ML-Agents 是工具套能让数字孪生学习并执行复杂任务。由于时间有限,我们的目标是实现一个简单的“触碰”任务,并让模型在 OAK-D 设备有能力进行推理。在 ML-Agents 的帮助下,机器人习得了最佳运动路径,可借助 IK 来灵活地触碰检测到的 3D 物体。
为了达成这一目标,我们首先使用 spatial tiny-YOLO 开发了一个 3D 物体检测器。RL 模型(PPO)使用检测结果和IK控制点的位置作为观测输入,动作输出则由 IK 控制点的 3 轴运动实现。在模型的奖励机制中,每一步运动都会带来少量的惩罚,而触碰到物体则会带来大量奖励(1.0)。为了加快训练速度,我们使用了多个智能代理同时训练,成倍地生成 spatialtiny-YOLO 的训练数据。在训练完成后,我们接着使用 OpenVino 工具包将模型转换为 OpenVino IR 和 Myriad Blob 格式,方便在 OAK-D 设备上加载模型并运行推理。最后一道流程是结合 spatial tiny YOLO 与 RL 模型。多亏我们的 Unity 插件,我们能够在 Unity 内比较 ML-Agents 和 OAK-D 代理的推理成果。
合成数据在项目中起了什么作用?
我们开发流程的第一阶段制作一个 3D 物体检测器,这也是 AI 计算机视觉和机器人开发的常见起点。这里,我们使用 Unity Perception 软件包来训练 tiny YOLO v3 模型识别自定义的物品类型。Perception 包能够在几分钟内生成大量的 3D 合成数据,还能自动标注出参考边界框,如果人工来收集数据和添加标注会耗费大量时间。支持生成丰富的数据集,以及转向、光照、纹理等多种随机化选项是一个很大的优势。
本文转载自unity公众号