前面我们介绍过手机的人像虚化,手机人像虚化都是依赖算法实现的,一个是精准的人像分割,一个是基于深度的虚化。受限于机身尺寸,手机无法依靠光学实现自然浅景深,双摄、LiDAR 等方案又存在成本、功耗、稀疏度等短板。如今几乎所有旗舰手机搭载的双像素(Dual-Pixel)对焦传感器,暗藏一条零额外硬件开销的深度感知通路:每个像素一分为二,天然形成微型立体对,同步输出视差与散焦线索。
但 DP 数据的深度计算存在独特光学歧义,传统立体匹配、通用单目深度模型均无法充分发挥其价值,缺少专用数据集也让相关算法难以落地。2019 ICCV Google 经典论文《Learning Single Camera Depth Estimation using Dual-Pixels》给出完整解决方案:推导出 DP 深度仿射歧义数学模型,设计仿射不变监督损失,自研野外多视图 DP 数据集,并推出轻量高效的 DPNet 深度网络,仅用单颗手机主摄就能产出远超同期方案的稠密深度图,成为手机 DP 景深算法的奠基之作。本文就介绍这项改变手机人像虚化底层逻辑的计算摄影技术。
摘要
深度学习技术推动单目深度估计取得快速进展,但该问题本身属于不适定问题,且高质量数据集稀缺,算法效果因此受到制约。当前主流相机传感器普遍集成双像素自动对焦硬件,本文依托该硬件实现单相机深度估计。传统立体匹配算法与现有基于学习的深度估计技术直接处理双像素数据时表现较差:前者对RGB图像匹配施加了过强的先验假设,后者则未结合双像素图像的光学成像原理进行建模。为使深度学习方法能够高效处理双像素图像,本文研究者明确了依靠双像素线索估算深度时存在一种固有歧义,并设计出一套可在该歧义约束下完成深度估算的方案。借助本文提出的方案,现有的单目深度估计算法能够有效适配双像素数据,同时还可构建参数量更小、仍能输出高质量深度图的模型。为验证方案效果,本文采集了一套大规模野外数据集,数据集包含五视角RGB图像以及对应的双像素数据;依托该数据集的多视图监督信息,网络能够在未知歧义的条件下完成训练。在本文设定的任务场景中,本文提出的模型相比此前所有基于学习的单目、立体深度估计算法,准确度提升30%。

- 图1:图(a)为一张包含双像素数据的RGB原图。图(d)、(e)分别截取了原图(a)中标注矩形区域对应的左、右双像素子图;图(f)展示了沿标注扫描线提取的两幅子图亮度分布曲线。对焦清晰的花朵区域,两条亮度曲线基本重合;而失焦的背景区域,二者亮度曲线差异极大。文献50采用传统立体匹配算法,该算法假设两张图像的像素亮度仅存在缩放系数与局部位移差异,因此无法对背景区域完成精准匹配,输出的深度图如图(b)所示。本文所提方法能够学习深度与双像素数据差异之间的关联关系,从而生成高精度深度图,结果如图©。
引言
-
深度估计的行业价值与现有硬件方案短板
深度估计是计算机视觉基础任务,支撑图形渲染、目标识别、机器人等诸多应用。现有深度获取手段各有缺陷:ToF、结构光等专用深度传感器成本高、功耗大、适用场景受限;多目立体相机需要复杂标定、校正与同步操作;普通单目深度学习深度估计算法因成像约束不足,预测结果精度较差。
-
双像素(DP)传感器带来全新解决思路
当下消费级相机普遍搭载双像素对焦传感器,单颗相机可同步生成基线极短的类立体双视图,原本用于自动对焦,也可用来恢复稠密深度。该方案无需额外硬件、标定与同步,适配手机等消费设备。此前已有工作使用传统立体匹配处理DP数据,但存在明显缺陷:DP左右子视图的点扩散函数存在差异,失焦区域亮度分布不一致,传统匹配假设无法成立,深度图质量差;现有单目深度学习算法也没有结合DP光学特性建模,处理DP数据效果不佳。
-
本文核心理论发现
本文研究者分析了双像素成像光学机理,得出关键结论:由DP信号推导场景深度存在本质的仿射歧义,仅能求解经过未知仿射变换后的逆深度,无法直接得到绝对度量深度。基于该结论,本文推导适配该歧义的训练流程与损失函数,搭建神经网络从DP图像预测高精度深度图;即便输出是带有仿射歧义的相对深度,也足以满足深度排序、虚化渲染等实际业务需求。
-
数据集缺失问题与本文解决方案
想要训练、评测DP深度网络,需要配套真值深度的DP图像数据集,但当时不存在这类公开数据。因此本文搭建采集设备,拍摄包含多视角画面的野外DP图像数据集,借助多视图几何计算场景真值深度,以此完成网络的视图监督训练与效果评测。
-
论文核心成果
在对比实验中,本文设计的模型相比此前所有单目、立体深度估计算法,误差降低30%,精度实现显著提升。

- 图 2:现代拜耳传感器由微透镜阵列下方交错排布的红、绿、蓝像素构成,对应图 (a)。在双像素传感器中,每个微透镜下方的绿色像素会被一分为二,如图 (b),由此生成两张绿色通道图像,等效于一台基线极短的立体相机,效果近似简化版光场相机。
3 双像素成像几何与歧义性
双像素传感器会将每个像素对半拆分,像素左半部分接收透过镜头右半孔径的光线,右半部分则接收透过镜头左半孔径的光线(见图3)。由于单个双像素的两半分别采集一半孔径的光线,同一像素的两半画面可构成一组立体图像对:近处物体在两幅子图中会产生水平视差,视差大小由物体距离决定。该效应会与镜头带来的光学模糊相互作用,当画面内容偏离对焦平面时,光学模糊效果会分散在每个双像素的两组子视图中(图3(a),双像素数据)。将两组子视图叠加,就能得到全部孔径光线合成的普通完整像素图像,与非双像素传感器拍摄效果一致。由此可知,双像素两幅子图之间的视差ddd,与同等条件下完整像素图像的散焦模糊尺寸bbb成正比。消费级相机普遍利用双像素实现自动对焦:相机在对焦区域内反复估算双像素视差,移动镜头直至视差归零,此时对焦区域成像清晰。
尽管双像素图像可看作基线极短的立体图像对,但它和传统立体视觉存在多处本质区别:两组子视图在空间、时间上完全同步,曝光与白平衡参数完全一致;此外,双像素两组子视图具备不同的点扩散函数,能够额外承载深度信息。若将传统立体匹配算法直接应用于双像素数据,不仅会忽略散焦线索带来的额外深度信息,还会因两组子视图点扩散函数差异过大,导致失焦区域常规图像匹配失效(见图1(d)-1(f))。
除此之外,双像素视图下深度与视差的关联关系,不仅取决于两组子视图的基线距离,还和相机对焦距离相关。传统立体视觉在外参未知时仅存在尺度歧义,而对于双像素成像,若相机对焦距离未知(当前绝大多数消费手机均无法获取该参数),深度估计会同时存在尺度歧义与偏移歧义。想要基于双像素图像学习深度估计模型,必须解决由未知尺度、偏移带来的歧义问题,这也是本文的核心贡献之一。下文将基于近轴近似与薄透镜成像模型,推导深度、视差、模糊尺寸三者的数学关系。
设相机坐标系下场景点光源坐标为(x,y,Z(x,y))(x,y,Z(x,y))(x,y,Z(x,y))。前文已说明,该点在成像平面上的视差d(x,y)d(x,y)d(x,y)与带符号的模糊尺寸bˉ(x,y)\bar{b}(x,y)bˉ(x,y)成正比,符号由光源位于对焦平面前方还是后方决定。结合近轴与薄透镜近似可得:
d(x,y)=αb‾(x,y)≈αLf1−f/g(1g−1Z(x,y))≜A(L,f,g)+B(L,f,g)Z(x,y), \begin{align} d(x,y) &= \alpha \overline{b}(x,y) \tag{1}\\ &\approx \alpha \frac{L f}{1-f / g}\left(\frac{1}{g}-\frac{1}{Z(x, y)}\right) \tag{2}\\ &\triangleq A(L, f, g)+\frac{B(L, f, g)}{Z(x, y)}, \tag{3} \end{align} d(x,y)=αb(x,y)≈α1−f/gLf(g1−Z(x,y)1)≜A(L,f,g)+Z(x,y)B(L,f,g),(1)(2)(3)
式中α\alphaα为比例常数,LLL代表孔径直径,fff为镜头焦距,ggg为相机对焦距离。式(3)定义了整张图像全局常数A(L,f,g)A(L,f,g)A(L,f,g)、B(L,f,g)B(L,f,g)B(L,f,g),显式表达出逆深度与视差之间的仿射关系。该公式印证前文结论:只有完整掌握视差ddd与模糊尺寸bbb,同时已知参数L、f、gL、f、gL、f、g,才能精确求解场景深度ZZZ,详细推导过程见补充材料。
式(3)揭示了前文所述双像素成像固有的仿射歧义。这意味着:更换相机参数、改变场景几何结构,完全可以生成完全相同的双像素图像(见图3(b))。具体而言,两组不同相机参数会对应两组仿射系数(A1,B1)(A_1,B_1)(A1,B1)与(A2,B2)(A_2,B_2)(A2,B2),两组不同场景深度却能生成完全一致的成像平面视差,满足下式:
d(x,y)=A1+B1Z1(x,y)=A2+B2Z2(x,y)(4) d(x,y)=A_{1}+\frac{B_{1}}{Z_{1}(x,y)}=A_{2}+\frac{B_{2}}{Z_{2}(x,y)} \tag{4} d(x,y)=A1+Z1(x,y)B1=A2+Z2(x,y)B2(4)
消费智能手机无法稳定记录相机内参元数据,彻底切断了直接消除该歧义最简便的途径。但式(3)同时说明,仅依靠双像素数据,仍可求解经过未知仿射变换后的逆深度。这也为本文方法提供理论支撑:训练卷积神经网络,仅预测受仿射变换约束的逆深度。
虽然理想情况下我们更希望获取绝对度量深度,但仅经仿射变换的相对深度仍具备极高实用价值。仿射变换属于单调变换,不会改变场景各物体的深度先后顺序;同时仿射不变深度天然适配合成散焦渲染任务------通过对窄光圈图像施加和深度相关的模糊,模拟大光圈成像效果,而仿射参数恰好可以对应调焦距离、模拟光圈大小等用户可调参数。除此之外,结合已知物体尺寸等先验信息,即可消除该仿射歧义,进而得到可用于各类下游任务的度量深度图。

- 图3:双像素的两组子视图分别采集镜头光圈左右两半的光线,由此形成深度线索。但该成像机制存在一种根本性歧义:若相机的对焦距离(或光圈尺寸、焦距)发生改变,不同场景完全可以生成完全一致的双像素图像。
图(a)中,相机对焦距离为g1g_1g1,拍摄了一个对焦清晰的蓝色光点,以及距离相机Z1Z_1Z1、处于失焦状态的橙色光点。穿过光圈左半侧的光线(深蓝色、橙色光线)会投射至每个双像素的右半分区,反之亦然。最终得到的双像素图像里,失焦的橙色光点会产生ddd像素的视差偏移(图(a)"DP数据"),同时在完整RGB图中产生bbb像素的模糊(图(a)"图像")。图(b)采用另一组对焦距离与场景深度,却输出了完全相同的双像素图像与RGB图像。但正文推导证明,图(b)对应的场景深度,可通过对图(a)场景的逆深度做仿射变换得到。
4 适用于仿射不变深度估计的视图监督
利用多视图数据训练单目深度估计网络时,自监督学习是一种主流方案。该方法的核心流程为:根据预测得到的深度,将其中一张视图映射至另一张视图,再以映射后图像与真实图像之间的差值作为损失函数进行最小化。图像映射操作依靠可微空间变换层实现,仅输入RGB图像与相机位姿即可完成端到端训练。对应的损失表达式如下:
L(I0,Θ)=∑(x,y)Δ(I0(x,y),I1(M(x,y;F(I0,Θ))))(5)\mathcal{L}\left(I_{0}, \Theta\right)=\sum_{(x, y)} \Delta\left(I_{0}(x, y), I_{1}\left(M\left(x, y ; F\left(I_{0}, \Theta\right)\right)\right)\right) \tag{5}L(I0,Θ)=(x,y)∑Δ(I0(x,y),I1(M(x,y;F(I0,Θ))))(5)
式中,I0I_0I0 为目标RGB图像,I1I_1I1 为对应的立体匹配图像;F(I0,Θ)F(I_0, \Theta)F(I0,Θ) 是网络针对 I0I_0I0 预测出的(逆)深度;M(x,y;D^)M(x, y ; \hat{D})M(x,y;D^) 代表由预测深度 D^=F(I0,Θ)\hat{D}=F(I_0, \Theta)D^=F(I0,Θ) 与已知相机位姿共同作用,对像素坐标 (x,y)(x,y)(x,y) 产生的映射变换;Δ(⋅,⋅)\Delta(\cdot, \cdot)Δ(⋅,⋅) 为任意用于计算两张RGB图像逐像素差异的打分函数。Δ(⋅,⋅)\Delta(\cdot, \cdot)Δ(⋅,⋅) 的具体定义将在6.2节给出,现阶段可将其视作任意可微惩罚项。
由于本文需要预测仅满足未知仿射变换约束的逆深度,式(5)的损失无法直接应用于本文任务。因此本文提出两种视图监督训练方案,均可在预测带仿射歧义逆深度的前提下完成训练。
4.1 三维辅助损失
假设能够获取真值逆深度 D∗D^{*}D∗ 以及对应逐像素置信度 CCC,首先通过求解下式得到未知仿射映射参数:
argmina,b∑(x,y)C(x,y)(D∗(x,y)−(aF(I0,Θ)(x,y)+b))2(6)\underset{a, b}{arg min } \sum_{(x, y)} C(x, y)\left(D^{*}(x, y)-\left(a F\left(I_{0}, \Theta\right)(x, y)+b\right)\right)^{2} \tag{6}a,bargmin(x,y)∑C(x,y)(D∗(x,y)−(aF(I0,Θ)(x,y)+b))2(6)
在训练网络参数 Θ\ThetaΘ 的每一轮损失计算过程中,借助可微最小二乘求解器(例如TensorFlow内置求解器)求解式(6),得到仿射系数 aaa、bbb;利用校正后的绝对深度计算标准视图监督损失。值得注意的是,该式仅需求解两个标量参数,因此只需少量高置信度稀疏真值深度采样点即可正常使用。
4.2 折叠损失
第二种方案无需真值深度,将求解仿射参数所需的优化过程整合进损失函数内部。本文为每一张训练样本图像 I0I_0I0 配套独立变量 aaa、bbb,定义损失函数:
Lf(I0,Θ,a,b)=∑(x,y)Δ(I0(x,y),I1(M(x,y;aF(I0,Θ)+b)))(7)\mathcal{L}{f}\left(I{0}, \Theta, a, b\right)=\sum_{(x, y)} \Delta\left(I_{0}(x, y), I_{1}\left(M\left(x, y ; a F\left(I_{0}, \Theta\right)+b\right)\right)\right) \tag{7}Lf(I0,Θ,a,b)=(x,y)∑Δ(I0(x,y),I1(M(x,y;aF(I0,Θ)+b)))(7)
整体训练目标为联合优化网络参数 Θ\ThetaΘ、所有样本对应的仿射参数 {a(i)}\{a^{(i)}\}{a(i)} 与 {b(i)}\{b^{(i)}\}{b(i)},优化目标如下:
argminΘ,{a(i)},{b(i)}∑iLf(I0(i),Θ,a(i),b(i))(8)\underset{\Theta,\left\{a^{(i)}\right\},\left\{b^{(i)}\right\}}{arg min } \sum_{i} \mathcal{L}{f}\left(I{0}^{(i)}, \Theta, a^{(i)}, b^{(i)}\right) \tag{8}Θ,{a(i)},{b(i)}argmini∑Lf(I0(i),Θ,a(i),b(i))(8)
为避免 a(i)a^{(i)}a(i) 趋近于0时出现退化问题,对 a(i)a^{(i)}a(i) 做参数化约束:a(i)=ϵ+log(exp(aℓ(i))+1)a^{(i)}=\epsilon+log (\exp (a_{\ell}^{(i)})+1)a(i)=ϵ+log(exp(aℓ(i))+1),其中 ϵ=10−5\epsilon=10^{-5}ϵ=10−5。aℓ(i)a_{\ell}^{(i)}aℓ(i)、b(i)b^{(i)}b(i) 采用区间 −1,1-1, 1−1,1 内均匀分布随机初始化。
训练时仅需构建一个优化器,将网络权重 Θ\ThetaΘ、全部样本的 aℓ(i)a_{\ell}^{(i)}aℓ(i) 与 b(i)b^{(i)}b(i) 均视作自由变量,联合梯度下降完成优化。

- 图4:本文搭建的可同步多相机便携式采集设备如图(a)所示,可用于拍摄真实户外自然场景照片,每张中心机位图像均配套另外4个不同视角的拍摄画面,示例见图(d)。借助这些多视角图像,能够采用多视图立体算法求解出场景"真值深度"与对应置信度,结果如图(b)、©所示(低置信度的深度区域以白色渲染)。
5 数据采集
为训练并验证本文所提方法,需要同时带有双像素数据与真值深度信息的图像素材。为此,本文搭建一套定制采集设备,用于拍摄野外场景双像素图像;每套中心相机拍摄画面配套4台同步拍摄的相机,从不同中等基线视角记录同一场景(见图4(a))。本文采用成熟多视图几何算法,基于这5张同步图像计算"真值深度"。这类重建得到的深度相比直接深度传感器(如Kinect、激光雷达)生成的深度图完整性更低,但专用深度传感器存在场景限制:Kinect仅适用于室内场景,想要获取贴近日常手机拍摄风格场景的激光雷达扫描数据难度极高;同时将这类深度传感器与双像素相机完成同步、配准流程十分繁琐,且专用深度传感器输出的空间分辨率远低于RGB相机。
本文方案可采集大量高分辨率室内、户外实景图像,内容贴合普通用户日常拍摄题材,例如宠物、花卉等;出于隐私保护,数据集不含人脸图像。五相机十字排布的优势在于:中心相机的像素几乎都能在至少一台旁侧相机中观测到(极小光圈、极近距离物体除外),即便存在局部遮挡区域,也能还原精准深度。所有相机采用文献5的同步方案,多台手机可完成同步拍摄,时间误差约16毫秒(半帧时长),能够稳定拍摄动态物体。尽管孔径问题带来固有局限,本文重建的真值深度无法做到完美,但可以输出高精度稀疏深度图,高置信区域深度结果准确,低置信区域会单独标记。为保证实验结果可靠,避免单一立体算法带来偏差,本文使用两套独立算法分别计算深度图并配套对应置信度:一套是成熟的COLMAP立体重建算法1,45,另一套是本文为该任务自研的算法,详细说明见补充材料。
采集设备与素材概况
本文使用两款市面上主流搭载双像素传感器的消费手机完成采集:谷歌Pixel 2与谷歌Pixel 3。单组采集任务中,5台设备均使用同一款手机。本次共采集3573组场景,总计生成 3573×5=178653573 × 5 = 178653573×5=17865 张RGB图像与对应双像素图像。拍摄素材覆盖多样日常场景,优先选择前景深度变化丰富的画面,主体拍摄距离集中在0.5--2米区间。所有图像均包含RGB与双像素信息,但本文仅使用中心相机的双像素信号,其余4台旁侧相机图像仅作为普通RGB视图使用。
RGB图像与双像素图像原始处理分辨率为1512×2016,为降低噪声,真值深度图在一半分辨率下计算。本文采用逆透视采样,距离取值范围0.2--100米,将绝对深度转换为逆深度 D∗D^{*}D∗,更多细节见补充材料。
相机标定说明
尽管采集支架固定了5台相机的相对位置,同步机制也保证图像时序对齐,但无法为整套设备提供一套统一、适用于全部素材的内外参标定结果。该问题主要源于所用消费手机镜头无机械固定结构:机械应力、温度变化会造成对焦偏移,对焦过程中镜头可能发生轴向偏移,光学防抖模块也会改变相机投影中心位置14。
针对该问题,本文对每一组拍摄素材单独执行运动恢复结构算法24,结合支架结构给出的先验约束,求解5台相机各自的内参与外参,实现每组素材精准标定。该方法会为每组重建深度引入独立尺度歧义,但这对本文训练、评测流程无影响------本文整套算法本身就允许深度存在未知尺度歧义。
6 实验章节完整概括
本章围绕数据集预处理、网络训练方案、评测指标、两组核心对比实验展开,验证本文提出的仿射不变损失、DPNet网络、双像素输入的有效性,全面对比传统立体、主流单目深度算法。
数据预处理与数据集划分
- 对双像素图像中心裁剪至原图66.67%分辨率,消除画面边缘DP畸变,无需径向畸变校正;网络输入分辨率1008×1344,输出真值深度分辨率504×672;评测仅取画面中心384×512区域。
- 数据集按拍摄场景完整划分训练/测试集:训练集2757组、测试集718组;测试集内47张图像COLMAP重建失败,仅用剩余671张计算误差。
网络结构、损失与训练细节
- 两类网络:轻量DPNet(U-Net+残差,仅0.24M参数,推理速度快)、大参数量VGG模型;同时引入DORN、Godard、Garg、Wadhwa传统DP立体方法作为基线。
- 图像重建损失:采用0.8权重DSSIM + 0.2权重Charbonnier鲁棒损失融合;网络多尺度预测深度,多层损失叠加。
- 多视图监督:利用采集设备四周多视角图像,取各像素 warp 后最小重建误差作为监督。
- 训练环境:TensorFlow框架,Adam优化器,学习率0.001,训练200万步;DPNet批次大小4,VGG批次大小2;仅做随机平移数据增强。
专属评测指标(适配DP仿射歧义)
普通深度误差指标无法使用,设计三类仿射不变评价指标:
- AIWE(1):加权仿射不变平均绝对误差;
- AIWE(2):加权仿射不变均方根误差;
- 1−∣ρs∣1-|\rho_s|1−∣ρs∣:加权斯皮尔曼秩相关系数,衡量深度前后顺序准确性,数值越小效果越好。
实验一:两种仿射损失横向对比
对比3D辅助损失、折叠损失训练DPNet的效果:
- 3D Assisted Loss(借助真值深度求解仿射系数)各项指标更优;
- 折叠损失无真值深度,优化难度大,精度更低;
后续全部实验统一采用3D辅助损失。
实验二:多维度完整对比实验
控制三组变量对比,核心结论:
- 不变性策略对比:仿射不变损失 > 仅尺度不变损失 > 无不变损失;DP天然存在尺度+偏移双重歧义,仅尺度约束无法适配DP数据。
- 输入信息对比:RGB+双像素联合输入效果远优于仅输入RGB,证明DP视差+散焦线索对深度预测增益极大。
- 模型横向对比
- 轻量DPNet搭配RGB+DP+仿射损失取得全场最优精度;
- 传统DP立体方法Wadhwa存在大量离焦区域错误;
- 通用单目深度网络DORN细节丢失、泛化差;
- VGG大模型精度略低于最优DPNet,算力开销远更高;
- 相比此前所有单目/立体深度方法,本文最优模型误差降低30%。
- 可视化佐证:DPNet可精准还原物体间隙、细小前景等精细深度结构,基线模型普遍存在分层错乱、边缘失真问题。
