前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >3D电影化照片背后的技术揭秘

3D电影化照片背后的技术揭秘

作者头像
McGL
发布2021-03-15 11:27:14
7050
发布2021-03-15 11:27:14
举报
文章被收录于专栏:PyVision

作者:Google AI Blog 编译:McGL

回看过去的照片可以帮助人们重温一些最难忘的时刻。去年12月,我们发布了电影照片(Cinematic Photos),这是谷歌照片(Google Photos)的一个新功能,旨在重新体验照片拍摄时的沉浸感,通过推断图像中的 3D 表示模拟相机的运动和视差。在这篇文章中,我们来看看这个过程背后的技术,并演示电影照片是如何将一张来自过去的 2D 照片转换成更为身临其境的 3D 动画的。

深度估计

就像很多最近的计算摄影功能如人像模式和 AR 一样, 电影照片需要深度图提供场景的 3D 结构信息。智能手机上计算深度的典型技术依赖于双目多视觉(multi-view stereo),这是一种几何方法,该方法通过同时捕获多张不同视角的照片,并且相机之间的距离已知,从而求得场景中物体的深度。在 Pixel 手机中,视图来自两个摄像头或双像素(dual-pixel)传感器。

为了能够在不是双目多视角拍摄的已有图片上使用电影照片,我们训练了一个具有编解码结构的卷积神经网络来从单个 RGB 图像预测深度图。模型学会只使用一个视角图的单目线索来估计深度,如物体的相对大小,线性透视,散焦模糊等。

由于单目深度估计数据集通常是为 AR、机器人和自动驾驶等领域设计的,因此它们主要倾向于街景或室内房间场景,而不是普通摄影中更常见的人、宠物和物体等,这些特征具有不同的构成和构图。所以,我们创建了自己的数据集来训练单目深度模型,使用了自制的5个摄像头装备拍摄的照片以及另一个在 Pixel 4上拍摄的肖像照片数据集。这两个数据集包括从双目多视角得到的 ground-truth 深度 ,这是训练一个模型的关键。

以这种方式混合多个数据集,将模型暴露给更多种类的场景和相机硬件,提高了对野外照片的预测能力。然而,这也带来了新的挑战,因为来自不同数据集的 ground-truth 深度可能会因为一个未知的缩放因子和偏移而有所差异。幸运的是,电影照片效果只需要场景中物体的相对深度,而不是绝对深度。因此,我们可以通过在训练过程中使用比例和偏移不变(scale-and-shift-invariant)损失来组合数据集,然后在推理过程中对模型输出进行归一化(normalize)。

电影照片效果对人物边缘的深度图的准确性特别敏感。深度图中的错误可能导致最终渲染效果中产生不和谐的 artifacts。为了减轻这种情况,我们应用中值滤波来改善边缘,同时也使用在 Open Images 数据集上训练好的 DeepLab 分割模型来推理照片中任何人的分割 mask。mask 用于将深度图中被错误地预测为背景的前景像素提取出来。

相机轨迹

在 3D 场景中移动相机时,可以有多种自由度,我们的虚拟相机设置灵感来自专业摄像机设备拍摄电影动作。其中一部分是确定虚拟相机旋转的最佳枢轴(pivot)点,以便通过吸引人们的目光来获得最佳效果。

三维场景重建的第一步是通过挤压(extrude)RGB 图像到深度图上来创建网格(mesh)。这样网格中的邻近点可以有很大的深度差异。虽然从“正面”的视图来看不明显,但是虚拟相机移动得越大,就越有可能看到深度发生巨大变化的多边形延伸。在渲染的输出视频中,这看起来像是输入的纹理被拉伸了。当动画化虚拟相机时,最大的挑战是找到一个引入视差的轨迹,同时尽量减少这些“有弹性的(stretchy)” artifact。

一旦相机远离“正面”视图,具有较大深度差异的网格部分就变得更加显眼(红色可视化)。在这些区域,照片看起来被拉伸了,我们称之为“有弹性的 artifact”。

由于用户照片和相应的 3D 重建的跨度甚广,不可能在所有的动画中共享一个轨迹。相反,我们定义了一个损失函数,它可以获到最终动画中可以看到的弹性的大小,这使我们可以为每张独特的照片优化相机参数。而不是计算被确定为 artifact 的像素总数,损失函数在 artifact 像素较多的区域触发更大的值,这反映了观众更容易注意到这些连接区域的 artifact的倾向。

我们利用人体姿态网络中的填充分割 mask 将图像分成三个不同的区域: 头部、身体和背景。在将最终损失作为归一化(normalized)损失的加权和计算之前,在每个区域内对损失函数进行归一化。理想情况下,生成的输出视频毫无 artifact,但在实践中很罕见。对区域进行不同的加权会使优化过程偏向于选择背景区域中有 artifact,而不是图像主体附近有 artifact 的轨迹。

在相机轨迹优化过程中,目标是为相机选择一条可见artifact 数量最少的路径。在这些预览图像中,输出中的 artifact 是红色的,而绿色和蓝色的叠加可以显示不同的身体区域。

场景生成帧(Framing the Scene)

一般来说,重新投影的 3D 场景并不能完全匹配同肖像方向的矩形,因此在保留输入图像的关键部分的同时,还需要将输出帧定为正确的纵横比。为了实现这一点,我们使用了一个深层神经网络,预测整个图像每个像素的显著性(saliency)。当虚拟相机在三维分帧,模型识别和捕获尽可能多的显著区域,同时确保渲染网格完全占据每个输出视频帧。这有时需要模型缩小相机的视角。

预测的每个像素显著性的热图。我们希望创造在虚拟相机生成帧时包括尽可能多的显著区域。

总结

通过电影照片,我们实现了一个算法系统——对每个机器学习模型进行公平性评估——它们一起工作,让用户以一种新的方式重温他们的记忆,我们对未来的研究和功能改进感到很兴奋。现在你知道了他们是如何创建的了,请留意可能出现在你的谷歌照片 app 的最近记忆中的自动创建的电影照片!

原文:https://ai.googleblog.com/2021/02/the-technology-behind-cinematic-photos.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PyVision 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 深度估计
  • 相机轨迹
  • 场景生成帧(Framing the Scene)
  • 总结
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档