阅读 205

Facebook 新研究:使用CNN将任何2D照片转换为3D

作者 | Facebook AI译者 | Sambodhi编辑 | 陈思

Facebook 的 3D 照片功能 于 2018 年推出,是一种全新的、沉浸式的照片格式,用于与朋友和家人分享照片。不过,在当时,这一功能依赖于只有新款高端智能手机才有的双镜头“肖像模式”功能。因此,这一功能无法在只有一个后置镜头的典型移动设备上使用。为了让更多的人能够用上这种全新的视觉形式,我们使用了最先进的机器学习技术,能够将几乎任何标准的 2D 照片转换为 3D 照片。这个系统可以推断出任何图像的 3D 结构,无论是用标准单镜头在 Android 和 iOS 设备拍摄的新照片,还是最近上传到手机或笔记本电脑上的几十年前的老照片。

这一技术进步使得数以百万计使用单镜头照相手机或平板电脑的人们第一次可以轻松地接触到 3D 照片技术。它还可以让每个人以一种全新的方式体验几十年前的家庭照片和其他珍贵的图像,将它们转换成 3D 照片。拥有最先进的双镜头设备的人也能从中受益,因为他们现在可以使用唯一的前置镜头进行 3D 自拍。任何拥有 iPhone 7 或更高版本,或者最近的中端或更好的 Android 设备的人,现在都可以在 Facebook 的应用程序中尝试这些选项这项技术。

该动画显示了如何估计一幅 2D 图片的不同区域的深度,以创建一幅 3D 图像。

构建这种增强的 3D 照片技术需要克服各种技术挑战,例如,训练模型,以正确推断出极其广泛主题的 3D 位置,并优化系统,使其能够在不到一秒的时间内,就能在典型移动处理器的设备上运行。为了克服这些挑战,我们在数百万对公共 3D 图像及其相应的深度图上训练了卷积神经网络,并利用了 Facebook AI 之前开发的各种移动优化技术,如 FBNet 和 ChamNet 等。(我们还讨论了最近在 3D 理解方面的相关研究,参见:《推动 3D 内容理解的最新进展》(Pushing the state of the art in 3D content understanding))

现在,这一功能对所有 Facebook 的用户都是可用的,我们将在本文分享如何构建这一功能的细节。

图片小狗的原始照片是用单镜头相机拍摄的,并不包含任何深度图的数据。我们的系统将其转换成 3D 图像,如图所示。

在移动设备上提供高效性能

给定一幅标准的 RGB 图像,3D Photos CNN (3D 照片卷积神经网络)可以估计每个像素到相机的距离。我们通过以下四种方式实现了这一点:

  • 使用一组可参数化的、可移动优化的神经构建块来构建的网络架构。

  • 将架构搜索自动化以查找这些块的有效配置,使系统能够在不到一秒的时间在各种设备上执行任务。

  • 量化感知训练,可在移动设备上利用高性能的 int8 量化,同时最大限度降低量化过程带来的潜在质量下降。

  • 大量的训练数据源自公开的 3D 照片。

神经构建块

我们的架构使用了受 FBNet 启发的构件块,FBNet 是一个用于优化移动设备和其他资源受限设备的 ConvNet 架构的框架。一个构建块由逐点卷积(pointwise convolution)、可选上采样、$K \times K$ 深度卷积和一个额外的逐点卷积组成。我们实现了一个 U-net 风格的架构,该架构已经被修改为沿着残差连接(skip connection)放置 FBNet 构建块。U-net 编码器和解码器各包含五个阶段,每个阶段对应不同的空间分辨率。

图片我们的网络架构概述。该网络架构是一个 U-net,沿着残差连接放置了额外的宏级构建块。

自动架构搜索

为了找到一个有效的架构配置,我们使用 ChamNet 将搜索过程自动化,这是 Facebook AI 开发的一个算法。ChamNet 算法迭代地从搜索空间中采样点来训练正确度预测器。该正确度预测器用于加速遗传搜索,以找到在满足特定资源约束的前提下,使预测正确度最大化的模型。在这个设置中,我们使用一个搜索空间,该搜索空间改变了通道扩展因子和每个块的输出通道数,从而产生了 $3.4 \times 10^{22}$ 个可能的架构。然后,我们使用 800 块 Tesla V100 GPU,在大约三天内完成了搜索,设置并调整了模型架构上的 FLOP 约束,以实现不同的操作点。

量化感知训练

默认情况下,我们的模型使用单精度浮点权重和激活进行训练,但我们发现,将权重和激活量化为仅 8 位具有显著的优势。特别是,int8 权重只需 float32 权重所需存储空间的四分之一,从而减少了首次使用时必须传输到设备的字节数。

图片这些图像都是从普通的 2D 图像开始,然后通过我们的深度估计神经网络转换成 3D 图像。

由于 Facebook AI 的 QNNPACK 等经过调优的库已经整合到 PyTorch 中,因此与 float32 相比,基于 int8 的运营商的吞吐量要高得多。我们使用量化感知训练(quantization-aware training,QAT)来避免由于量化导致的不可接受的质量下降。QAT(现已作为 PyTorch 的一部分提供)在训练过程中模拟量化并支持反向传播,从而消除了训练和生产性能之间的差距。

我们的神经网络可处理各种内容,包括场景复杂的绘画和图像。

寻找创造 3D 体验的新方法

除了完善和改进我们的深度估计算法,我们还致力于为移动设备拍摄的视频提供高质量的深度估计。视频是一个值得注意的挑战,因为视频中每一帧的深度必须与下一帧保持一致。但这也是提高性能的一个机会,因为对同一目标的多次观测可以为高正确度的深度估计提供额外的信号。视频长度深度估计将向我们的用户开放多种创新的内容创作工具。随着我们不断提高神经网络的性能,我们还将探索利用深度估计、表面法线估计(surface normal estimation)、和空间推理在实时应用(如增强现实)中的应用。

除了这些潜在的新体验外,这项工作还将帮助我们更好地全面理解 2D,提高对 3D 场景的理解也可以帮助机器人导航并与现实世界进行互动。我们希望通过分享我们的 3D 照片系统的细节,能够帮助人工智能社区在这些领域取得进展,并创造利用先进的 3D 理解的新体验。

作者介绍:

Kevin Matzen、Peizhao Zhang,研究科学家;Matthew Yu、Jonathan Lehman,软件工程师;Jan-Michael Frahm、Peter Vajda、Johannes Kopf,研究科学主管;Matt Uyttendaele,工程总监。


©著作权归作者所有:来自51CTO博客作者mb5fdb0a1b25659的原创作品,如需转载,请注明出处,否则将追究法律责任


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐