Google ARCore 1.12 更新深度解析

科技*,这句话用在 ARCore 身上非常贴切。因为自从两年前推出以来,ARCore 不断朝着让更多设备、更多用户*体验增强现实的方向迈进。ARCore 本次 1.12 重要更新,将为你带来跨设备和跨时间共享的惊喜。

ARCore 面部增强功能

已经支持 iOS 

   

今年早些时候,ARCore 发布了增强脸部功能(Augmented Faces API),实现了使用者“轻松变脸”,赚足眼球。此前,3D 脸部的精确辨识一直是技术上的挑战,人的脸部不但是 3D 立体的,而且表情丰富,细微的表情变化就会带来面部的很大变化;不仅如此,不同种族、肤色、脸型和年龄,也会影响算法的正确性。为了能够更有效地解决这些难题,我们推出了 ARCore 脸部增强功能。

通过脸部增强功能,你的应用可以自动识别检测到的脸部的不同区域,这些区域叠加和面部特征与轮廓相符合的材质、 2D/3D 模型,就能达到增强脸部效果。你可以戴上金面具耍帅、冻在冰块里装酷或是戴上各种帽子。比如美图 App 就使用了 ARcore 的增强脸部功能,给用户自拍增添了更多乐趣:

Google ARCore 1.12 更新深度解析

△ ARCore 增强脸部功能

ARcore 的增强脸部“强”在哪里呢?

  • 完全免费

  • 使用机器学习实现,不需要深度传感器,支持更多低端手机

  • 跨平台支持:Andriod + iOS 设备 

脸部增强 API 提供了 3 种面部重要信息

  • 一个中心 Pose,你可以用它来渲染帽子或者估测肩膀的位置

  • 区域 Poses,它们可以用来在局部比如眼睛,耳朵或者鼻子的位置渲染虚拟材质或模型

  • 当然如果你想要全部的信息,我们提供 468 个点组成的密集脸部网格,可以用来渲染细致的并且一直准确追踪脸部的纹理和细节

中心 Pose

Google ARCore 1.12 更新深度解析

区域 Pose

Google ARCore 1.12 更新深度解析

468点的3D脸部网格

Google ARCore 1.12 更新深度解析

技术解密:如何实现?

现在,有两种面部 AR 效果可以活灵活现地实现

  • 一种是与脸部轮廓或区域位置紧密联系的,比如一个虚拟帽子,虚拟眼镜等等

  • 一种是和面部的表面,表情肌肉紧密结合的,比如面部纹身,虚拟化妆等等

3D 和 2D 两种增强脸部效果

Google ARCore 1.12 更新深度解析
Google ARCore 1.12 更新深度解析

组成这样的效果需要三个部分

  • 应用层提供虚拟的渲染内容

  • ARCore 层提供对相机图像的解析,得出面部 pose

  • 最后在 Unity 或者其他引擎和渲染工具里合成最终效果

我们的 Unity SDK 已经提供了非常方便的组件,开发者只需要关注虚拟层的内容就可以了。

3D 装饰效果

Google ARCore 1.12 更新深度解析

2D 贴图效果

Google ARCore 1.12 更新深度解析

如果你想使用面部网格,也非常方便。网格点的分布是这样安排的:特征丰富的区域点数更多更密集,比如嘴,眼睑, 那么额头,脸颊附近点分布则较稀疏。每个点我们提供 xyz 位置信息,uv 信息来绑定材质,还有一个法向量用来渲染真实的光照效果。

前面提到,ARCore 的面部增强不需要硬件配合的深度传感器,那究竟是如何运作的呢?答案是机器学习:借助 TensorFlow Lite 平台,使用大量的数据训练可以推测面部轮廓和三维网格的神经网络,然后将训练模型加载到移动设备,这样相机生成的图片直接在本地就能完成处理和计算。

深度学习

Google ARCore 1.12 更新深度解析

本地的机器学习推测会很慢吗?并不会,我们为不同设备提供不同的学习模型,不同模型有不同的能耗,对于低端手机我们会在底层使用轻量级的模型,从而保证处理时间。不同设备对于每一帧图像的推理速度也不一样,在某些手机我们会采用跳过几帧但是中间采用 interpolation 的方式。底层我们会实时检测当前设备 inference 速度,从而计算我们对系统需要多少延迟,从而确保计算结果和当前图像匹配。

正式支持 iOS 设备

现在,喜大普奔的是,增强脸部功能已经支持 iOS 系统了。不但可以有同样的精度,而且同时支持 Android 和 iOS 设备,不需要深度传感器。这意味着开发者将可为数十亿 iOS 用户带去这一炫酷功能。不论面向 Android 还是 iOS 设备,开发者都可以使用相同的网格数据和结构,同一套面部模型和材质,甚至是完全相同的游戏或者应用逻辑,开发真正跨平台的应用。与此同时,新的面部特效模板也上线了,不论是 iOS 还是 Android 开发者,面部增强的创建过程都变得更加简单。

云锚点跨平台能力不断进阶

为什么要使用云锚点?

实现 AR 效果时,当你需要把虚拟物体固定在现实世界中的某个位置时,你就需要定义一个锚点。通过将虚拟物体锚定到特定的可跟踪对象, 来确保虚拟物体和可跟踪对象之间稳定的关系。

Google ARCore 1.12 更新深度解析

而当你需要实现在多个设备上共享 AR 体验的时候,就需要云锚点功能了。云锚点 API 是 ARCore 在去年推出的,它允许开发人员在 Android 和 iOS 上创建共享的 AR 体验。利用云锚点,一台设备可以将锚点和附近的特征点发送到云端进行托管,从而将这些锚点与同一环境中 Android 或 iOS 设备共享。

Google ARCore 1.12 更新深度解析

具体来说,就是将设备 A 的锚点以及其附近的特征点发送到云端进行托管,也就是托管云锚点;设备 B 中,用相机图像匹配云端托管的 A 的信息,从而将 B 和 A 放置在同一个物理空间, 这个过程叫解析云锚点,如此就可以同步设备 A 和设备 B 上的 AR 体验。

云锚点功能不断增强ing

ARCore 的云锚点功能推出后也在不断强化。比如在锚点设置过程中,使用更多视觉信息,但不增加数据传输量,让 App 运行速度更快;同时解析更多锚点,更准确,降低了照明变化带来的影响。

本次 ARCore 更新中,我们对云锚点的 API 进行了一些改进,通过改进锚点创建,在云中进行视觉特征处理, 让 ARCore 托管和解析锚点的能力更强,效率更高。现在,在创建锚点时,可以捕获场景中更多角度更大区域的内容,以获得更强大的 3D 地图。创建地图后,创建地图的可视数据将被删除。此外,现在可以同时解析场景中的多个锚点,这样 AR 体验的启动时间更短。

长期云锚点让 AR 体验有了“保存”键

更更更牛的是,此前,云锚点的存储和访问受到时间限制,托管锚点时上传至云端的视觉特征数据在一天后失效。而现在,ARCore 的云锚点将具备“永久留存”功能,不再受到存储时间限制。也就是说,AR 体验和作品,不但能够跨越空间、设备,现在还能跨越时间。利用这一新功能,用户可以在世界各地留下自己的印记,让自己的朋友在任何时间来开启各种 AR 彩蛋或者协同创作。比如下图所示,你可以用 ARCore 在房间内留下一些寻找“惊喜”的提示,让之后来到房间的玩家寻宝。

Google ARCore 1.12 更新深度解析

也可以使用长期云锚点,邀请同屋一起,重新装饰房屋。长期云锚点可以按照实际需求设定留存时间。

Google ARCore 1.12 更新深度解析

长期云锚点技术已经运用在了实际应用中:比如新的社交软件 Mark AR,可让人们在现实世界中与朋友一起创建、发现和分享他们的 AR 艺术,并且用户可以不断返回 App 创建和协作艺术作品,永久存档的哦。

Google ARCore 1.12 更新深度解析

增强脸部和云锚点两大功能的重要更新,能够让开发者更加*地发挥 AR 技术,跨越平台和时间的限制,为更多用户带来脑洞大开的新奇互动体验。如果 ARCore 的这两项技术更新带给了你开发灵感,不要犹豫,赶快动手实践起来吧。

推荐阅读:


Google ARCore 1.12 更新深度解析

Google ARCore 1.12 更新深度解析
Google ARCore 1.12 更新深度解析
Google ARCore 1.12 更新深度解析