映维网:概述谷歌 Pixel 4 深度传感 uDepth 工作原理和底层算法


查看引用/信息源请点击:googleblog
概述uDepth的工作原理和底层算法
(映维网2020年04月11日)确定场景三维信息的能力称为深度感测 , 这对开发者和用户都是一项十分有价值的工具 。 深度传感是一个非常活跃的计算视觉领域 , 近年来的创新包括人像模式和AR等应用 , 以及诸如透明对象检测等基础感测创新 。 基于RGB的常见立体深度传感技术需要十分高昂的计算 , 而且在低纹理区域会受到影响 , 并且在极低光照条件下会完全失效 。
因为Pixel4的人脸解锁功能必须以高速执行并支持黑暗环境 , 所以它需要一种不同的解决放哪 。 Pixel4的前端包含实时红外有源立体深度传感器uDepth 。 这项技术是Pixel4的一项关键计算机视觉功能 , 有助于身份验证系统识别用户 , 同时能够防止欺骗攻击 。 另外 , 它支持一系列的新功能 , 如事后照片润色、基于深度的场景分割、背景模糊、人像效果和3D照片等 。
谷歌最近以Camera2API的方式来提供了uDepth的访问权限 , 允许使用PixelNeuralCore、两个红外摄像头和一个红外模式投影仪并以30Hz提供时间同步的深度帧 。 GoogleCameraApp使用这个API为Pixel4用户的自拍带来优化的深度功能 。 在这篇博文中 , 谷歌将向大家概要解释uDepth的工作原理和底层算法 , 并用Piexl4的示例结果对用例进行讨论 。 下面是映维网的具体整理:
1.立体深度感测的综述
所有立体摄像头系统都会采用视差重建深度 。 对于这种效果 , 你可以注视一个对象 , 闭合左眼 , 然后张开左眼并闭合右眼 。 你会发现对象的位置会出现移动 , 而越靠近的对象移动得越快 。 uDepth是DenseLocalStereo匹配技术家族的一员 , 其主要是通过计算来估计每个像素的视差 。 所述技术会在一个摄像头形成的图像中评估由每个像素包围的区域 , 并尝试在第二个摄像头的相应图像中寻找相似的区域 。 正确校准后 , 生成的重构属于可度量 , 这意味着它们表示实际的物理距离 。

映维网:概述谷歌 Pixel 4 深度传感 uDepth 工作原理和底层算法
本文插图

为了处理无纹理区域和处理弱光条件 , 团队使用了"有源立体"设置 , 将红外图案投影到由立体红外摄头机检测到的场景中 。 所述方法提高了低纹理区域的可识别性 , 从而优化了识别效果并降低了系统的计算量 。
2.uDepth与众不同的地方
立体感测系统的运算量非常大 。 对于以30Hz频率运行的感测器 , 其在保持高质量的前提下必须是低功耗 。 uDepth利用了众多关键的见解来实现这一点 。
其中之一是 , 给定一对彼此相似的区域 , 而大多数对应的子集同样相似 。 例如 , 给定两个相似的8×8像素块 , 两者左上的4×4子区域同样可能相似 。 这将告知uDepth管道的初始化过程 , 后者通过比较每个图像中的非重叠像素块并选择最相似的像素块来构建深度建议金字塔 。 这个过程从1×1像素块开始 , 并按层累积支持 , 直到生成初始低分辨率深度映射 。
在初始化之后 , 团队应用一种全新的神经深度细化技术来支持Pixel4的规则网格图案照明器 。 典型的有源立体系统投射一个伪随机网格图案来帮助消除场景中的匹配歧义 , 但uDepth能够支持重复的网格模式 。 重复结构产生的区域在立体对中看起来十分相似 , 并可能导致不正确的匹配 。 针对这个问题 , 团队采用了轻量级卷积架构 , 通过红外亮度和邻近信息来调整不正确的匹配 , 而每帧耗时不到1.5ms 。

映维网:概述谷歌 Pixel 4 深度传感 uDepth 工作原理和底层算法
本文插图

神经深度细化架构
在神经深度细化之后 , 合适的深度估计将从相邻的像素块迭代传播 。 这个和后续的管道步骤利用了uDepth成功的另一个关键洞察:自然场景通常是局部平面 , 只有很小的非平面偏差 。 这使得团队能够找到覆盖场景的平面像素块 , 然后只为一个像素块中的每个像素细化单个深度 , 从而大大减少计算负载 。


推荐阅读