文 / 研究员 Rahul Garg 和软件工程师 Neal Wadhwa

通过对背景进行模糊化处理,Pixel 智能手机的人像模式可聚焦对象,让您拍摄出专业级图像。去年,除公布其他内容外,我们还曾介绍如何通过传统的非学习式立体算法,并利用单摄像头及其相位检测自动对焦 (PDAF) 像素技术(亦称为双像素自动对焦)计算深度。今年,我们利用机器学习来改进 Pixel 3 的深度估算功能,进而提升人像模式的拍摄质量。

左图:HDR+ 原始图像。右图:基于传统立体算法与机器学习所得深度的人像模式拍摄效果对比。使用机器学习得到的图像深度错误更少。值得注意的是,在传统立体算法所得结果中,男士身后的很多水平线被错误地估算为与其处于同一深度,因而保留了锐度 (Mike Milne)

简要回顾

正如去年的博文所述,人像模式利用神经网络确定人与背景的对应像素,并利用 PDAF 像素产生的深度信息来增强此两层人物分割掩码。此操作旨在实现依赖深度的模糊处理,这更接近专业相机的做法。

PDAF 像素的工作原理是对同一场景捕捉两个略微不同的视野,如下图所示。通过来回切换这两个视野,我们会发现人处于静止状态,而背景则呈现水平移动,这种效果称为视差。由于视差是点和相机的距离与两个视点之间距离的函数,因此我们可将一个视野中的每个点与另一个视野中的对应点进行匹配,以此估算深度。

左侧和中间的这两张 PDAF 图像看起来非常相似,但您可以在右侧的裁剪图中看到两者之间的视差。其中裁剪图中央的圆形区域最为明显

然而,由于两个视野间的场景视点几乎未移动,我们很难在 PDAF 图像中找到这些对应关系(此方法称为 “双目立体视觉”)。此外,所有立体技术均深受孔径问题困恼。孔径问题是指,如果您通过小孔径观察场景,则无法为平行于立体基线(即两个摄像头之间的连线)的线条找到对应关系。换言之,在观察上图中的水平线(或纵向拍摄中的垂直线)时,这些线条在两个视野中的任何可能移动几乎都别无二致。在去年的人像模式中,上述所有因素均会导致深度估算出现误差,并会产生恼人的伪影。

改进深度估算

事实上,立体算法计算深度所使用的视差只是图像中众多深度线索之一,基于此,我们在 Pixel 3 的人像模式中修复了这些错误。例如,远离合焦平面的点看起来不如距离更近的点锐利,进而为我们提供散焦深度线索。此外,即使是在平面屏幕上查看图像,我们也能准确判断出物体的距离,因为我们了解日常物体的大致尺寸(例如,我们可以利用人脸照片中的像素数来估测物体的距离)。我们将此称为语义线索。

人工设计算法以综合利用上述不同线索极具挑战,但借助机器学习,我们可在实现这一目标的同时更好地利用 PDAF 视差线索。具体而言,我们会训练一种在 TensorFlow 中编写的卷积神经网络,使之将 PDAF 像素作为输入并学习预测深度。这种经过改进并以机器学习为基础的新型深度估算方法为 Pixel 3 人像模式提供了支持。

我们的卷积神经网络将 PDAF 图像作为输入,并输出深度图。此网络采用编码器-解码器样式架构,并带有跳跃连接和残差块

训练神经网络

为训练神经网络,我们需要大量 PDAF 图像和对应的高质量深度图。我们希望所预测的深度能够用于人像模式,所以还需要使训练数据与用户通过智能手机拍摄的照片类似。

为此,我们自制了一款 “Frankenphone” 装置,该装置能够装载五部 Pixel 3 手机,并能与 Wi-Fi 解决方案配合使用,让我们通过所有手机实现同步拍摄(公差范围约为 2 毫秒)。借助此装置,我们已使用运动恢复结构 (structure from motion) 和多视角立体视觉 (multi-view stereo) 技术计算出高质量的照片深度。

左图:用于收集训练数据的自制装置。中间图:在五张图像之间来回切换的拍摄示例。所有相机同步拍摄可确保计算出动态场景的深度,如图所示。右图:真实的深度图。低置信度点(即由于纹理较弱导致立体匹配结果不可靠的点)标记为黑色,不会用于训练(Sam Ansari 和 Mike Milne)

此装置收集的数据非常适合用于训练网络,主要原因如下:

  • 五个视点可确保获得多个方向的视差,进而消除孔径问题。

  • 布置多个摄像头可确保一张图像中的点通常也能在至少其他一张图像中找到对应点,由此减少无对应关系的点。

  • 摄影基线(即摄像头之间的距离)远大于 PDAF 基线,由此可提高深度估算的准确度。

  • 所有相机同步拍摄可确保计算出动态场景的深度,如上图所示。

  • 此装置便于携带,能够确保我们在野外拍摄照片,并模拟用户使用智能手机拍摄的照片。

然而,即使我们可通过此装置采集到理想数据,但预测场景中物体的绝对深度仍极具挑战性,因为给定的一对 PDAF 图像可能对应一系列不同的深度图(具体取决于镜头特点、焦距等因素)。为此,我们改为预测场景中物体的相对深度,这也足以产生令人满意的人像模式图像。

全面整合

这种基于机器学习的深度估算需在 Pixel 3 上快速运行,以便用户无需等待太久即可使用人像模式拍照。不过,为利用微妙的散焦和视差线索获得准确的深度估算,我们需要将全分辨率、数百万像素的 PDAF 图像输入此网络。为确保快速得到结果,我们使用跨平台解决方案 TensorFlow Lite 在移动和嵌入式设备上运行机器学习模型,同时采用 Pixel 3 的强大 GPU,以便在输入数据异常庞大的情况下也能快速计算出深度。随后,我们将所得出的深度估算结果与人物分割神经网络中的掩码相结合,进而生成精美的人像模式图像。

亲自试用

在 Google Camera 应用 6.1 及更高版本中,我们已在人像模式图像中嵌入深度图。这意味着,您可以在拍摄后使用 “Google 照片” 深度编辑器调整模糊度和焦点。您还可通过第三方深度提取器从 jpeg 图像中提取深度图并自行查看。另外,我们提供了一个 相册,其中展示了我们分别基于传统立体算法和机器学习所得到的相对深度图及对应的人像模式图像。

注:相册 链接

https://photos.google.com/share/AF1QipMzvQX22sGl5ESe-dN-bW7wl783MqawktwouIkw9MXoQJQLqEb5uE_A2tQjSrbzBg?key=emtnUkN1eEJfVzczdkFXOElMMzE2cDlNM3hQN2tR

致谢

本研究成果离不开 Sam Ansari、Yael Pritch Knaan、David Jacobs、Jiawen Chen、Juhyun Lee 和 Andrei Kulik 的帮助。还要特别感谢 Mike Milne 和 Andy Radin 使用搭载五部相机的装置为我们收集研究数据。

更多 AI 相关阅读:

  • 深度学习,提高前列腺癌诊断正确率

  • 利用切换选项和模式扩展您的智能家居操作

  • 单目视频无监督深度学习的结构化方法

在 Pixel 3 手机上学习预测深度相关推荐

  1. 在Pixel 4 XL上尝试具有对象检测功能的Android NNAPI ML加速器

    As the requirements for more private and fast, low-latency machine learning increases, so does the n ...

  2. 消息称谷歌Pixel系列手机默认禁用美颜功能

    据外媒报道,谷歌开始在Pixel系列手机上改变美颜自拍的设置. 以Pixel 4A为例,谷歌默认禁止开启美颜自拍功能,而且UI界面还会更新,未来会继续淡化各个标签的价值观导向,减少美颜标签的影响. 报 ...

  3. 手机上的机器学习资源!Github标星过万的吴恩达机器学习、深度学习课程笔记,《统计学习方法》代码实现!...

    吴恩达机器学习.深度学习,李航老师<统计学习方法>.CS229数学基础等,可以说是机器学习入门的宝典.本文推荐一个网站"机器学习初学者",把以上资源的笔记.代码实现做成 ...

  4. 通过MACE在Android手机上部署深度学习模型

    1. MACE的环境搭建 参考我的博客:MACE的环境搭建--conda实现 2. 构建项目 (1)下载MACE项目到本地 git clone https://github.com/XiaoMi/ma ...

  5. 姿态检测 树莓派_怎样在树莓派上轻松实现深度学习目标检测?

    原标题:怎样在树莓派上轻松实现深度学习目标检测? 雷锋网按:本文为 AI 研习社编译的技术博客,原标题 How to easily Detect Objects with Deep Learning ...

  6. 最新清华大学arXiv上传的深度学习摄像头运动估计论文

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:黄浴 https://zhuanlan.zhihu.com/p/138926038 本文仅做学术 ...

  7. J. Cheminform. | 基于化学基因组学中深度和浅层学习预测药物特异性

    今天给大家介绍由巴黎文理研究大学计算生物研究中心的Veronique Stoven教授课题组发表在J Cheminform上的一篇文章.作者提出一种具有深度学习功能的化学基因组神经网络(CN),以分子 ...

  8. 吴恩达团队最新成果:用深度学习预测死亡概率,改善临终关怀

    用过去1年的医疗记录就能预测一个人未来1年中的死亡概率?这听起来像是<黑镜>中才有的可怕黑科技,但是这对于疗养院和临终关怀工作者,意义重大. 在美国,超过60%的死亡发生在重症监护病房,多 ...

  9. 深度学习预测酶活性参数提升酶约束模型构建从头环境搭建

    前言 这项工作开发了一种用深度学习来预测酶活性参数的方法(DLKcat),主要采用了针对底物的图神经网络和针对蛋白质的卷积神经网络.通过从公开的数据库中获取和数据预处理,最终获得了超过一万六千条高质量 ...

  10. Cell | 深度突变学习预测SARS-CoV-2受体结合域组合突变对ACE2结合和抗体逃逸的影响...

    本文介绍一篇来自于苏黎世联邦理工学院的Joseph M. Taft在Cell上发表的工作--<Deep Mutational Learning Predicts ACE2 Binding and ...

最新文章

  1. windows给应用断网
  2. 题目1181:遍历链表
  3. 如何制作提交按钮,实现多条件筛选
  4. Spring Boot学习笔记-实践建言
  5. IdentityServer4系列 | 授权码模式
  6. mongodb $ifNull
  7. 2021年河北省高考成绩录取查询结果,2021年河北高考一本录取结果查询和录取通知书发放时间...
  8. python两个集合相减_python集合的运算,两个集合相减是什么意思
  9. Bootstrap CSS 编码规范之注释
  10. linux 文件读写锁,linux下的简单文件读写锁的操作
  11. 解决ORA-01578错误一例
  12. 【转--- 数据挖掘的心得学习】
  13. 时间序列信号处理(一)-----变分模态分解(VMD)
  14. 小米MIX 解BL锁教程 申请BootLoader解锁教程
  15. 在idea导入项目依赖爆红
  16. Windows Server AppFabric分布式缓存详解
  17. 人人网如何注册与设置密码
  18. 如何制作一个蓄力跳的功能
  19. 如何将docx文本转换成使用微信小程序rich-text能编译的格式
  20. 小波调研(二):一维离散小波分析

热门文章

  1. 橡胶支座抗压弹性模量计算公式_橡胶支座计算
  2. DynamicFusion之预处理共轭梯度下降(Pre-conditioned Conjugate Gradient Solver)
  3. Go 通道 Chan 详解
  4. Python语言程序设计基础_序列型数据和控制结构综合练习(第七周)_答案_通识教育必修课程_上海师范大学
  5. 毕业设计必备案例:Python开发桌面程序——各种版本学生信息管理系统
  6. 【Travis CI使用教程】如何让定制你的travis.yml配置文件
  7. fbreader android源码分析,FBReader 源码阅读笔记(二)
  8. zuul+ribbon实现负载均衡
  9. 【禁用U盘】电脑windows7/10注册表、组策略禁用优盘;
  10. 织梦cms仿站_文章发布出现WTS-WAF页面