写点什么

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

2020 年 3 月 05 日

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

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


以下内容整理自 Facebook AI 博客:


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


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


构建这种增强的 3D 照片技术需要克服各种技术挑战,例如,训练模型,以正确推断出极其广泛主题的 3D 位置,并优化系统,使其能够在不到一秒的时间内,就能在典型移动处理器的设备上运行。为了克服这些挑战,研究人员在数百万的公共 3D 图像及其相应的深度图上训练了卷积神经网络,并利用了 Facebook AI 之前开发的各种移动优化技术,如 FBNetChamNet 等。(技术团队还讨论了最近在 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)、可选采样和深度卷积组成。团队实现了一个 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 体验的新方法

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


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


作者介绍:


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


2020 年 3 月 05 日 14:471205
用户头像
陈思 InfoQ编辑

发布了 576 篇内容, 共 210.2 次阅读, 收获喜欢 1207 次。

关注

评论

发布
暂无评论
发现更多内容

架构师训练营Week7学习总结

Frank Zeng

antd vue 使用upload组件action上传文件

Seven_xw1213

前端 antd vue upload

随着并发的增加,响应时间和吞吐的变化

朱月俊

JavaScript 类型判断

卧龙小明

Java 前端

八个排序的原理、Java 实现以及算法分析

多选参数

数据结构 算法 排序 排序算法 数据结构与算法

Github 创建发行版本

耳东

GitHub github release

性能优化(一)

olderwei

第七周总结

天之彼方

性能压测的时候,随着并发压力的增加,系统响应时间和吞吐量如何变化,为什么?

一叶知秋

重置 Grafana admin 密码

耳东

Grafana Grafana password

优秀的求职者,是如何巧妙应对面试提问呢?

xcbeyond

面试 加班 职业规划 薪资 自我介绍

解决 transition 在 display 属性上不生效的问题

卧龙小明

css3

第 7 周 - 作业 2

seng man

解决 EXT4 使用无法挂载

耳东

ext4 journal

LeetCode题解:283. 移动零,JavaScript,一次遍历,详细注释

Lee Chen

LeetCode 前端进阶训练营

JavaScript 中的 Object.defineProperty

卧龙小明

Java 前端

Git 常用命令总结

卧龙小明

git

Scrapy爬虫入门

烫烫烫个喵啊

python 爬虫

JavaScript 中 new 一个对象的过程中发生了什么

卧龙小明

Java 前端

第七周命题作业

天之彼方

自己动手实现一个 Promise

卧龙小明

Java 前端

米酒米酒黼子酒

zhoo299

美食

过早三件套之面窝

zhoo299

美食

iframe 隐藏滚动条、高度自适应及父子页面通信

卧龙小明

CSS Java html 前端

antd vue upload组件使用customRequest上传文件显示文件上传进度

Seven_xw1213

前端 antd vue upload customRequest 进度条

架构师0期07周作业

我在终点等你

如何找一碗正宗的热干面

zhoo299

美食

ES6 Promise 对象介绍

卧龙小明

Java 前端 ES6

K8S 中的 Grafana 数据持久化

耳东

Kubernetes k8s Grafana 配置文件持久化

总结

chenzt

动手实现一下 JavaScript 中的 call, apply 和 bind

卧龙小明

Java 前端

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