写点什么

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

  • 2020-03-05
  • 本文字数:2234 字

    阅读完需:约 7 分钟

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-03-05 14:472019
用户头像
陈思 InfoQ编辑

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

关注

评论

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

通俗易懂 !Kafka 开发快速入门看这篇就够了

云祁

Bigdata Kafk

JavaScript 实现:输出斐波那契数列

编程三昧

JavaScript 大前端 数组 递归

肝到头秃!阿里爆款的顶配版Spring Security笔记

Java 程序员 架构 面试 计算机

Linux学习经验分享:搞定这六点,Linux命令So easy!

学无止境的阿奔

Linux 分布式 运维 C/C++

通证经济,一个正在狂奔的互联网数字经济时代

CECBC

区块链使能的供应链金融——区块链信息治理

CECBC

抖音电商发布创作者管理总则:如何明确带货主播和平台的责任

石头IT视角

软件工程师的10个认知模型

俞凡

认知

平安社区建设解决方案.智慧小区平台系统建设

区块链创新食品溯源--让舌尖上的安全看的见

13530558032

计算机组成原理 寄存器实验详解(含工程文件)

若尘

计算机组成原理 6月日更

亚马逊云科技宣布Amazon WAF 在北京区域和宁夏区域正式上线

亚马逊云科技 (Amazon Web Services)

因子分解机(十九)

Databri_AI

因子 分解机

A16z创始人马克·安德森:加密货币代表了技术运作方式以及世界运作方式的架构转变

CECBC

gitlab服务端hook,拦截糟糕的提交到仓库

阿呆

gitlab hook

建信金科大咖访谈:人工智能技术应用与展望

金科优源汇

源中瑞区块链BaaS平台为企业一键部署区块链应用

13530558032

企微私域经营

soho

网络攻防学习笔记 Day56

穿过生命散发芬芳

网络攻防 6月日更

用Python手动实现LRU算法

IT蜗壳-Tango

6月日更 算法训练营 算法训练营2021第0期

「SQL数据分析系列」9. SQL子查询

Databri_AI

数据库 sql 子查询

【Jetpack篇】协程+Retrofit网络请求状态封装实战

付十一

Android进阶 JetPack

【Jetpack篇】协程+Retrofit网络请求状态封装实战(2)

付十一

Android进阶 JetPack

SpringCloud Gateway 路由断言

中原银行

函数式接口 reactor SpringCloud Gateway

JavaScript学习(十)---正则表达式

空城机

JavaScript 大前端 6月日更

阿里架构师通过“58个基于知识的实例+2个项目”来讲解Spring Boot

Java架构师迁哥

前端面试 | 18个常见HTML问题与答案

devpoint

html xml 6月日更

前端工程化的思考

金科优源汇

Jenkins 控制台输出中的奇怪字符

HoneyMoose

深入了解java线程篇之ThreadPoolExecutor

邱学喆

线程池状态 任务提交 任务执行 动态调整线程池参数

给几位粉丝做完面试辅导后,我发现了一些问题!(Java岗)

Java架构师迁哥

Facebook 新研究:使用CNN将任何2D照片转换为3D_AI&大模型_Facebook 博客_InfoQ精选文章