MARC-ANDRÉ GARDNER,拉瓦尔大学
KALYAN SUNKAVALLI, ERSIN YUMER, XIAOHUI SHEN, EMILIANO GAMBARETTO,Adobe研究院
CHRISTIAN GAGNÉ 和 JEAN-FRANÇOIS LALONDE,拉瓦尔大学
arXiv:1704.00090v3 [cs.CV] 2017年11月21日

图1. 给定一张室内场景的单张LDR图像,我们的方法能自动预测HDR光照(插图为方便可视化进行了色调映射)。我们的方法从大量真实图像数据中学习从图像外观到场景光照的直接映射;它不需要任何额外的场景信息,甚至可以恢复照片中不可见的光源,如这些示例所示。使用我们的光照估计,虚拟物体可以被真实地重照明并合成到照片中。
我们提出了一种自动方法,用于从单张有限视场、低动态范围的室内场景照片中推断高动态范围光照。与之前依赖专用图像捕捉、用户输入和/或简单场景模型的工作不同,我们训练了一个端到端的深度神经网络,该网络直接将有限视场的照片回归到HDR光照,而无需对场景几何、材质属性或光照做强假设。我们证明这可以通过一个三步过程实现:
1)我们训练一个鲁棒的光照分类器,在大型LDR环境贴图数据集中自动标注光源位置;
2)我们使用这些标注来训练一个深度神经网络,该网络从单张有限视场照片中预测场景中的光源位置;
3)我们使用一个小型的HDR环境贴图数据集对该网络进行微调,以预测光照强度。这使我们能够自动恢复高质量的HDR光照估计,其性能显著优于以往的最先进方法。因此,使用我们的光照估计进行诸如3D物体插入等应用,能够产生照片般真实的结果,我们通过感知用户研究验证了这一点。
CCS概念:计算方法论 → 场景理解;图像处理;计算摄影学;
附加关键词:室内光照,深度学习
1 引言
从单张照片推断场景光照是一个具有挑战性的问题。图像中观察到的像素强度是场景几何、材质属性、光照、成像设备以及后续后处理的复杂函数。将这些因素彼此分离是一个不适定的逆问题。对于单张有限视场图像来说尤其困难,因为许多影响场景光照的因素甚至没有直接在照片中观察到(图2)。这个问题通常通过两种方式解决:
第一,假设场景几何(和/或反射属性)已知(通过深度传感器测量、使用其他方法重建或由用户标注);
第二,对光照施加强低维模型(例如,低频球谐函数)。
尽管我们在单图像几何重建[Bansal et al. 2016; Eigen and Fergus 2015]和反射率估计[Bell et al. 2015; Zhou et al. 2015]方面取得了显著进展,但最先进的技术仍然容易出错。当这些估计被直接用于基于渲染的优化时,这些误差可能会传播到光照估计中。从根本上说,室内光照在其几何和光度特性上变化很大;例如,同一场景可以有大的窗户、明亮的聚光灯和漫射灯。这种大范围的发光体通常无法通过低维光照模型准确表示。
本文提出了一种从单张有限视场、低动态范围的室内场景照片中推断高动态范围光照的方法。我们的目标是能够模拟典型室内光源的范围,并选择常用于表示真实世界光照的球面环境贴图(或基于图像的照明)表示。我们还希望使这种推断对几何、表面反射率和场景外观模型中的误差具有鲁棒性。为此,我们引入了一种基于学习的端到端方法,该方法以图像为输入,并使用深度神经网络预测光照。
主要贡献:
1. 一种从单张有限视场LDR照片自动推断高质量HDR室内光照的方法。
2. 一种用于自动标注LDR环境贴图中光源的新方法。
3. 一个新的HDR环境贴图数据集,可用于训练和评估光照估计或其他场景推断任务。
4. 通过感知用户研究对单图像场景光照估计的最新技术进行基准测试。

图2. 从全景图中提取裁剪区域:(左) 常规镜头裁剪图像,(右) 球面全景图。
2 相关工作
从单张图像重建场景及其所有属性(包括几何、表面反射率和光照)是计算机视觉与图形学长期追求的目标之一,并在文献中得到了广泛研究。由于这些属性本质上是相互关联的,估计其中任何一个通常也依赖于对其他属性的重建 [Barron and Malik 2013b]。在本节相关工作中,我们将特别关注恢复光照的技术。
Debevec [1998] 在基于图像的照明方面的开创性工作表明,使用不同曝光度拍摄一个镜面球的多张照片,可以用来重建物理上正确的、全方位的高动态范围辐射度图,然后可用于将新物体逼真地渲染到场景中。后续工作证明,只要场景中还有一个漫射球体 [Reinhard et al. 2010] 或一个金属/漫反射混合球体 [Debevec et al. 2012],单次拍摄也能实现同样的效果。
先前关于光照估计的工作通常将场景外观建模为场景几何、反射率属性和光照的函数,并优化出最能解释所捕获图像的值。这种外观模型通常是低维光照模型(如低阶球谐函数)下的朗伯着色模型。这通常与通过深度传感器捕获的已知几何 [Barron and Malik 2013a]、使用多视图立体视觉重建的几何 [Wu et al. 2011] 或基于模型拟合的几何 [Valgaerts et al. 2012] 结合,以估计光照。Moreno 等人 [2010] 假设光照由一组已知的离散点光源组成。这些技术从孤立的物体中恢复光照 [Lombardi and Nishino 2016],对于这种情况,低维光照模型已经足够,并且几何和反射率可以被很好地建模。然而,我们感兴趣的是从室内场景中恢复光照,这些场景具有复杂的杂乱几何结构、空间变化的非朗伯外观,以及无法用低维模型准确参数化的各种光照条件。因此,我们使用更通用的环境贴图表示,并直接从图像回归它,而不依赖于可能不准确的外观模型。
Lalonde 等人 [2010] 专注于恢复能够被解析的阳光-天空模型很好地近似的室外光照。Hold-Geoffroy 等人 [2017] 提出了一种基于深度学习的方法,从单张输入图像预测室外光照。与我们一样,他们使用从全景图数据库创建的图像/光照对来训练他们的网络。然而,室外光照是远距离的,并且能够被低维解析模型很好地近似。因此,他们能够将3参数的 Hošek-Wilkie 模型 [2012] 拟合到 LDR 全景图上以恢复 HDR 光照,并训练一个深度神经网络来预测这 3 个参数。相比之下,室内场景的光照很复杂,无法用简单的低维模型很好地近似。相反,我们使用非参数化的 HDR 基于图像的照明表示,这使得在数据生成和网络训练方面,学习室内光照都具有挑战性。

图3. 论文概述。 我们的方法从单张照片(左)自动预测 HDR 光照条件。为此,它依赖于一个经过两阶段训练的深度卷积神经网络。首先,我们依赖于一个 LDR 全景图数据库 [Xiao et al. 2012]。为了补偿低动态范围,我们检测光源并对全景图进行扭曲,以生成目标光源掩码。这些掩码与从全景图中提取的裁剪区域结合,可以用来训练卷积神经网络预测光照方向。其次,该网络在一个新颖的 HDR 全景图数据集上进行了微调,这使得它能够学习预测光照强度。
在这项工作中,我们通过一系列新颖的贡献来应对这些挑战。我们提出了一个两阶段训练过程:初始阶段学习从 LDR 数据中预测光源位置,随后在 HDR 数据集上进行微调以预测光照强度。为了生成用于光源位置预测任务的数据,我们开发了一个最先进的光源检测器,用于标注一个大型的 LDR 全景图数据集。我们还提出了一个全景图扭曲步骤,以考虑空间局部化的室内光照(相对于远距离的室外光照)。我们还提出了一种新颖的多头神经网络来恢复室内光照,并使用一种新颖的渲染损失对其进行训练,该损失逐步改进了其光照预测估计。
Khan 等人 [2006] 提出通过翻转 HDR 输入图像来近似视场外的光照。类似的想法也用于其他 2D 合成技术中 [Bitouk et al. 2008; Lalonde et al. 2007]。虽然这些近似在某些情况下可能有效,但在许多其他情况下可能完全错误(例如,当照亮场景的主要光源在相机后方时)。相比之下,我们的光照预测要准确得多,并且只需要一张 LDR 图像作为输入。
Karsch 等人 [2011] 从单张图像估计场景光照,但依赖于用户输入来标注几何和初始光照,然后通过基于渲染的优化进行细化。Zhang 等人 [2016] 使用类似的方案,从场景的完整 RGBD 扫描和用户标注的光源位置恢复光照。Karsch 等人 [2014] 提出了一种自动场景推断技术。他们检测图像中可见的光源,并利用 SUN360 全景图数据库来预测视场外的光照。这是通过找到在外观上与输入图像相似的全景图,并使用这些全景图中预分类的光源作为输入图像的光源来实现的。这将光照估计问题转化为具有正确度量的图像匹配问题;然而,这是一种粗略的近似,在许多情况下,匹配的全景图的光照可能与图像中的实际光照存在任意差异。相比之下,我们建议直接学习图像外观与场景光照之间的映射,并证明这能得到更好的光照估计。
最近,人们提出了基于深度神经网络的技术,用于从单张图像估计反射率图(表面双向反射分布函数与入射光照的卷积)[Rematas et al. 2016]。这些反射率图随后可以被分解为反射率和光照估计 [Georgoulis et al. 2016]。然而,这些技术侧重于具有近似已知形状和空间恒定反射率的已知类别物体。相比之下,我们关注的室内场景具有明显更复杂的形状和反射率变化。基于卷积神经网络的方法也被提出用于估计场景深度 [Eigen and Fergus 2015]、表面法线 [Bansal et al. 2016; Eigen and Fergus 2015] 以及室内场景的内在分解 [Zhou et al. 2015]。尽管具有挑战性,这些问题涉及恢复在图像中直接观察到的属性,这与光照不同,光照可能位于视场之外,并且仅间接影响场景外观。通过从单张图像恢复光照,我们的工作可能有益于这些其他场景推断任务。
3 方法概述
如图3所示,我们的目标是从单张照片预测HDR光照条件。如果将我们的目标视为一个学习问题,那么{照片,HDR光照探头}形式的训练数据对于学习任务将是理想的。给定足够的数据,可以直接从照片回归HDR光照探头。然而,目前这样的数据并不存在,并且要收集足够数量的数据成本极其高昂。
另一方面,已经存在大型的LDR全景图数据集[Xiao et al. 2012],由于它们捕捉了场景的整个环境,因此有潜力用于学习光照。为了生成训练用的输入数据,我们从这些全景图中提取不同方向和焦距的矫正裁剪区域,并尝试学习这些裁剪区域与全景图之间的关系(见图3)。
不幸的是,我们无法直接从LDR全景图学习室内光照,因为其低动态范围无法正确地捕捉光照信息[Debevec 1997]。此外,室内光照往往是局部化的,即不能假设光源是方向性的(如同室外场景那样[Hold-Geoffroy et al. 2017])。全景图的投影中心可能离裁剪场景中的某个点任意远;因此,该点的真实入射光照至少是全景图的扭曲版本。
鉴于这些限制,我们建议利用LDR数据训练一个网络来识别场景中光源的位置。我们通过两个新颖、实用的解决方案来处理上述问题:第一,在第4节中引入一种鲁棒的方法来检测LDR全景图中的光源;第二,在第5节中引入一种扭曲全景图的方法,使其更好地反映裁剪场景的光照条件。
这些解决方案使我们能够使用大型的LDR全景图数据集[Xiao et al. 2012]来学习从照片预测室内光照。为此,我们在第6节中引入一个端到端的卷积神经网络,该网络生成指示光源位置的二进制光照掩码,以及整个全景图的低分辨率RGB近似表示。由于使用标准损失函数学习二进制光照掩码时,即使光源位置出现微小偏移也会受到严重惩罚,我们引入了一个网络内可微的余弦滤波器来实现高效学习。
除了估计光源位置外,我们还需要估计这些光源的强度以恢复完整的场景光照。为了实现这一点,我们采集了一个包含2100个高质量HDR环境贴图的新数据集,涵盖了广泛的场景和光照条件。虽然这个数据集太小,无法从头开始训练网络,但我们证明它足以对预训练的光源位置预测网络进行微调,以推断光照强度(第7节)。经过微调的网络会产生一个光照强度图和RGB全景图,可以结合这些生成最终的HDR环境贴图(第8节),进而用于将虚拟物体重新照明并合成到输入照片中。

图4. 测试集上我们检测器与Karsch等人[2014]检测器的精确率-召回率曲线。 蓝色曲线对应射灯和灯具检测,绿色曲线对应窗户和光反射检测。红色曲线为[Karsch等人,2014]的结果。青色曲线为仅依赖像素强度的基线检测器结果。请注意,由于不同光源(包括反射光)重要性存在固有不确定性(即使对于人工标注者也是如此),算法预测与人工预测完美匹配的可能性极低。
4 LDR全景图光源检测
为了使用LDR全景图训练我们的CNN检测光源,我们必须首先检测全景图中对应明亮光源的区域。为此,我们提出了一种新颖的光源检测器,并证明其性能显著优于Karsch等人的方法[2014]。
4.1 光照分类
转换为灰度图后,将全景图P绕俯仰角旋转90度得到P_rot,使天顶点与地平线对齐。这种旋转是为了处理等距柱状投影造成的严重失真,该投影会极度拉伸极点附近的区域。然后分别在P和P_rot上,以五种不同尺度¹在正方形图像块上计算特征。具体来说,我们使用HOG[2005]、图像块的平均仰角,以及其平均强度、标准偏差和第99百分位强度值。这些特征用于训练两个逻辑回归分类器,分别用于检测小型(例如射灯和灯具)和大型(例如窗户、反射光)光源。我们发现为这两种类型分别训练分类器能获得更好的性能,因为这两类光源彼此差异显著。
然后将得到的逻辑回归分类器以滑动窗口方式应用于P和P_rot,在每个像素处产生一个分数。将两个分类器的分数相加,然后根据像素的仰角以逐像素方式合并:S_merged = S * cos(θ) + S_rot^* * sin(θ),其中S表示回归分数,θ是像素仰角,S_rot^*是S_rot旋转回原始方向后的分数。随后对得到的分数进行阈值处理以获得二值掩码,使用密集CRF[2012]进行细化,并通过开闭形态学操作进行调整。最优阈值是通过最大化所得二值掩码与训练集上的真实标签之间的交并比分数来确定的。
¹ 最低尺度使用30×30的正方形,每个尺度的大小乘以1.5。
4.2 训练细节与评估
为了训练分类器,我们手动标注了SUN360数据库中的400张全景图。标注了四种类型的光源:射灯、灯具、窗户和(反射)光。我们使用80%的全景图进行训练,20%用于测试。分类器首先使用标注的光源作为正样本和随机负样本进行训练。随后在整个训练集上进行难负样本挖掘[2010]。我们舍弃了全景图底部15%的区域,因为该区域通常包含水印,且光源很少位于相机下方。
图4展示了我们两个检测器、一个直接将像素强度映射为其属于光源概率的基线方法以及Karsch等人[2014]方法的精确率-召回率曲线对比。正如预期,基线方法在SUN360这样的LDR数据上表现不佳。[Karsch等人,2014]的检测器性能更好,但我们的方法在任何召回率水平上都表现得更优。图5展示了在SUN360数据集示例全景图上的光源检测结果。

图5. SUN360全景图上的光源检测结果。 (左) 输入LDR全景图;(右) 光源检测结果,以青色显示并叠加在原始全景图上以供参考。该检测器能够处理各种光照布局,包括大面积光斑和射灯。

图6. 室内场景中光源局部性的重要性。 左:一张我们希望估计其光照条件的照片。该照片从"原始"全景图(上排中间)中裁剪得到。将此全景图视为照片的光源是错误的;其投影中心位于照片中场景的前方,因此重新光照的虚拟兔子(上排右)看起来像是背光。使用光照探头在裁剪照片位置捕获的正确HDR全景图显示在中排,捕捉了场景顶部的光源位置。我们引入了一种无需场景信息即可估算的扭曲操作符,它扭曲原始全景图以近似顶部光源的位置(下排)。使用扭曲后的全景图为物体重新光照,得到的结果与真实值非常接近。
5 全景图重定心扭曲
仅检测LDR全景图中的光源不足以训练CNN从单张照片学习光照。根本问题在于,全景图并不代表裁剪场景中的光照条件,因为全景图的投影中心可能离裁剪照片中场景点的位置任意远。图6说明了这个问题。左侧显示的照片是从中间列的"原始"全景图中裁剪得到的。将此原始全景图视为光源是不正确的,会导致渲染出的兔子呈现背光效果。我们通过将光照探头置于场景中(图6中间列)捕捉了实际的光照条件。请注意场景中的光照条件与原始全景图中的条件有何不同。为了能够使用SUN360数据库(我们可以从中裁剪照片但无法进入场景捕捉真实光照)进行训练,我们提出了一种新颖的方法,通过对原始全景图进行扭曲来近似裁剪照片中的光照(底部行)。
5.1 扭曲操作
扭曲操作的目标是生成一个虚拟相机置于裁剪照片中某一点时所捕获的全景图。这是一个具有挑战性的问题,由于我们不知道场景几何形状而变得更加困难。我们做出两个假设以使该任务可行:第一,我们假设场景位于一个球面上,即所有场景点到原始投影中心的距离相等;第二,我们假设图像扭曲足以模拟相机移动的效果,即遮挡不是重要因素。这些假设可能不适用于所有场景点;但请注意,我们的目标是建模光源,这些光源通常位于场景的边界(天花板、墙壁等),并且能够通过这些假设得到更好的近似。
让我们假设全景图放置于单位球面上,即x² + y² + z² = 1,捕获此全景图的相机位于此球面的原点。从一个放置在(x₀, y₀, z₀)的虚拟相机发出的出射光线可参数化为:
x(t) = v_x t + x₀, y(t) = v_y t + y₀, z(t) = v_z t + z₀ (1)
将这些光线与全景图球面相交得到:
(v_x t + x₀)² + (v_y t + y₀)² + (v_z t + z₀)² = 1 (2)
如图7所示,我们想要模拟一个天底在β角度的虚拟相机的效果。角度β对应于从全景图中提取照片的点,我们将很快讨论如何计算此值。对于沿z轴平移的情况,新的相机中心为{x₀, y₀, z₀} = {0, 0, sin β}。通过在对全景图进行扭曲前后旋转环境贴图,可以轻松实现在任意方向上的扭曲。将其代入方程(2)得到以下二次方程:
(v_x² + v_y² + v_z²) t² + 2v_z t sin β + sin² β - 1 = 0 (3)
解方程(3)求t(仅保留正解,因为负根代表球面另一侧的交点),将坐标从原始环境贴图映射到扭曲后的相机坐标系中。
β值的选择
方程(3)中的β值表示从全景图中提取照片的点。我们预计用户希望将物体插入照片中的平坦水平表面上,我们在β的选择中反映了这一点(见图8):首先使用Bansal等人[2016]的方法检测裁剪图像中的表面法线,通过基于表面法线与向上向量之间角度距离的阈值处理找到平坦表面。我们将最大平坦区域(即最平坦水平表面)的最低点的y坐标反投影到全景图上以获得β。在未找到水平表面的情况下(例如,平坦的垂直墙面),不应用扭曲,因为假定全景图已足够接近场景。注意,我们总是假设插入点是x居中的——也就是说,我们不要求网络估计图像最左侧或最右侧的光照。

图7. 扭曲问题概述,为简化起见以2D图示。 圆表示球面全景图沿y-z平面的切片,投影中心(以相机表示)位于其中心。扭曲操作符的目标是创建一个虚拟投影中心,其天底相对于原始天底具有角度距离β。角度β对应于从全景图中提取照片的点。

图8. β选择过程。 从给定的裁剪图片(a)中,我们使用Bansal等人[2016]的方法提取法线(b)。通过观察具有水平表面的最低像素((a)中的绿色X)并将其反投影到全景图(c)上来选择插入点。这给出了我们希望天底所在的位置,由此可以轻松得出β。然后我们使用这个β对全景图进行扭曲(d)。

图9. 分别使用(a)原始全景图、(b)我们扭曲后的全景图和(c)使用EnvyDepth [Banterle等人,2013]扭曲的全景图对物体进行重新光照的比较。 使用我们全景图重新光照的物体非常接近EnvyDepth得到的结果,且无需耗时长的人工标注。
5.2 对光照估计的影响
图6比较了我们扭曲后的全景图与在单个场景实地捕获的真实全景图。我们还比较了我们的球面扭曲与通过EnvyDepth[Banterle等人,2013]获得的基于几何的扭曲——EnvyDepth是一个通过将环境贴图投影到根据人工标注估计的代理几何上,从而提取空间变化光照的系统。图9展示了使用原始全景图、球面扭曲全景图和基于几何扭曲的全景图的对比重光照结果。虽然我们的操作符对场景做了几个简化假设,但这些结果表明,使用我们的方法进行重光照能非常接近更昂贵技术的效果,同时完全自动化且无需访问场景。相比之下,几何扭曲所需的手动标注过程每张全景图大约需要10分钟。
我们的扭曲操作符的主要局限在于无法恰当建模遮挡。由于我们将全景图视为球面上的投影,因此该方法无法处理那些照亮场景点但从原始相机视角不可见的光源。然而,这种情况很少见,正如我们在结果中所示,我们的网络将其作为异常值过滤掉,并学习到一个鲁棒的场景外观到光照的映射。
6 从LDR全景图学习
现在我们有了从LDR全景图中提取准确光照信息的工具,接下来详细阐述我们学习单张照片与其光照条件之间关系的方法。
6.1 训练数据准备
对于每个SUN360室内全景图,我们计算光照掩码以在学习过程中代表真实值(第4节)。然后,我们从每个全景图中在-30°到30°之间的随机仰角处截取8个裁剪区域,并将其投影为直线照片。使用我们的重定心扭曲(第5节),为每张直线照片生成相应的扭曲全景图(和光照掩码)。我们还旋转扭曲后的全景图和相应的光照掩码,使裁剪区域始终位于中心方位角(图3)。在此过程结束时,我们得到96,000个输入-输出对,其中输入是照片,输出是一对扭曲后的全景图及其对应的光照掩码。
6.2 网络架构
如表1所示,我们使用一个卷积神经网络,以照片作为输入,通过一系列下游卷积层产生输入的低维编码,然后分成两个上游扩展部分,执行两个不同的任务:(1) 强度估计/二值光照掩码预测,(2) RGB全景图预测。编码器分为两个标准卷积层,后接四个残差层[He等人,2016]。两个独立的解码器完全由反卷积层组成。输入照片尺寸为256×192,而全景图和光照掩码输出尺寸为256×128。每当遇到步长为2的卷积(反卷积)层时,其输出特征图的分辨率除以(乘以)2。输出的光照掩码表示环境贴图中每个像素为光源的概率。RGB全景图在最终的环境贴图中用作高级彩色纹理。关于估计的光照掩码和RGB全景图的示例,请参见第8节。
表1. 提出的CNN架构。经过一系列7个卷积层(conv,其中一些带有残差连接res)和一个全连接层(FC)后,网络分为两个分支。这两个分支旨在通过一系列反卷积层(deconv)重建光照掩码y_mask(左)和RGB全景图y_RGB(右)。除输出层外,所有层均使用ELU激活函数[Clevert等人,2016]和批量归一化。光照掩码的输出使用sigmoid函数,全景图预测使用双曲正切函数。每层的步长在括号中注明。"res"标识符表示残差层[He等人,2016]。


图10. 方程(6)中的余弦模糊在不同模糊级别下对光照掩码的影响。 请注意这个简单、可微的方案如何允许随着时间的推移平稳地过渡到更高频率的内容,而没有球谐函数带来的振铃伪影。

图11. (a) LDR训练和(b) HDR训练中训练和测试损失随训练周期数变化的曲线。
6.3 损失函数
对于RGB全景图预测任务,我们使用像素输出上的L2距离:
LL2(y, t) = (1/N) Σ_i [s_i (y_i - t_i)^2] (4)
其中N = 宽×高×3是图像中元素的总数,y是网络预测,t是真实全景图,s_i是像素i的立体角。
为光照掩码y_mask设计损失函数则不那么直接。例如,直接在光照掩码上计算标准的L2或二元交叉熵损失。如果一个小的明亮射灯被估计的位置与其真实位置略有偏差,将导致巨大的惩罚。由于从单张照片精确定位所有光源的确切位置并非必要,我们改为用滤波器模糊目标光照掩码,并在模糊后的版本上计算L2损失。滤波器从目标光照掩码的粗糙、低频表示开始,并随着训练时间的推移逐渐锐化。为此,我们设计了一个基于余弦距离的滤波器,随后计算光照掩码的L2损失:
Lcos(y, t, e) = (1/N) Σ_i [ (F(y, i, e) - F(t, i, e))^2 ] (5)
其中e是代表当前时期的实数值(形式上,e = 已训练时期数 + 当前小批量序号/总小批量数)。滤波器F定义为:
F(p, i, e) = (1/K_i) Σ_{ω∈Ω_i} [ p(ω) s(ω) (ω·n_i)^(α e) ] (6)
其中Ω_i是以全景图p上像素i为中心的半球面,n_i是像素i处的单位法线,K_i是Ω_i上立体角的总和。ω是Ω_i上特定方向的单位向量,s(ω)是该方向像素的立体角。如前所述,我们定义e∈R为归一化后的训练样本总观察次数。
由于方程(6)是可微的,可以使用反向传播来高效训练我们的CNN。图10展示了余弦距离滤波器对二值光照掩码影响的视觉示例。请注意目标光照掩码如何随着时间的推移逐渐变清晰。
全局损失函数定义为:
L(y, t, e) = w1 LL2(y_RGB, t_RGB) + w2 Lcos(y_mask, t_mask, e) (7)
在我们的实验中,我们使用w1 = 100,w2 = 1,α = 3。
我们的滤波方案也具有基于渲染的解释。众所周知,朗伯物体的表面反射可以建模为低通滤波[Ramamoorthi和Hanrahan,2001],而镜面物体则保留更多光照的高频成分。从这个意义上说,我们的损失函数可以被认为是通过评估具有越来越光滑表面反射率的球体的结果外观来推断光照。在这方面,我们尝试了直接用球谐函数表示光照(逐渐增加系数数量以表示更高频率的光照),但发现网络容易过拟合到由二值光照掩码中高频成分引起的振铃伪影。
6.4 训练细节
我们使用85%的全景图作为训练数据,15%作为测试数据。请注意,我们生成训练-测试分割时,确保测试全景图的任何裁剪都不出现在训练集中。因此,所有测试都是在网络以前未见过的场景和光照条件下进行的。我们使用ADAM优化器[Kingma和Ba,2014],小批量大小为64,学习率为0.005,动量参数β1=0.9,β2=0.999。图11-(a)显示了训练期间训练集和测试集上的损失(来自方程(7))曲线。在Nvidia Titan X Pascal GPU上训练大约需要40小时。在测试时,从照片推断光照(包括掩码和RGB)大约需要10毫秒。选择批量大小以充分利用GPU的12GB内存。
7 学习高动态范围光照
截至目前,我们已经训练了一个能够相当准确地预测光源位置的网络(参见第8节),但由于它是在LDR数据上训练的,所以不了解光源的强度。在本节中,我们将在一个新的高动态范围全景图数据集上进一步训练该网络,使其能够同时对光源方向和强度进行推理。
7.1 新的HDR室内全景图数据集
我们采集了一个新的数据集,包含2,100张高分辨率(7768×3884)、高动态范围的室内全景图。为此,我们将配备适马8mm鱼眼镜头的佳能5D Mark III相机安装在一个配备机器人全景云台的三脚架上,并编程设置为以60°为增量拍摄7张包围曝光照片。照片以RAW模式拍摄,并使用PTGui Pro商业软件自动拼接成22档动态范围的HDR 360°全景图。动态范围足以正确曝光场景中的所有像素,包括光源。全景图拍摄于各种室内环境,如学校、住宅、公寓、博物馆、实验室、工厂、体育设施等。我们新颖的HDR数据集中的全景图视觉概览见补充材料。该数据集的规模和多样性显著大于文献中的其他类似数据集(通常包含几十张全景图),这使得它对训练和测试各种问题(从场景推断、高动态范围图像处理到渲染)极为有用²。
7.2 使网络适应HDR数据
由于光源在HDR数据中没有过饱和,可以调整网络以直接学习光源强度y_int,而不是二值光照掩码y_mask。为此,网络进行了以下四项简单更改。
首先,将光照掩码预测器最后一层(表1中的"conv5-1")的权重初始化为随机值。
其次,训练过程中仅更新解码器的权重——即表1中直到FC-1024层。这样做是为了避免对编码器过拟合。
第三,目标强度t_int定义为HDR强度的对数(使用log10)。低强度(低于训练数据集的中位数)被截断为0,因为我们只关心光源:在极少数情况下,如果没有像素超过此阈值,RGB恢复部分提供的环境光项应足以照亮场景。
最后,损失函数修改为:
LHDR(y, t, e) = w1 LL2(y_RGB, t_RGB)+ w2 Lcos(y_int, t_int, e) + w3 LL2(y_int, t_int, e) (8)
其中LL2和Lcos分别在方程(4)和(5)中定义,e延续自LDR数据的训练(因此HDR强度不会过度模糊)。添加强度上的L2项是为了减少反卷积伪影。此处,w1=10,w2=1,w3=0.1。其余训练参数与第6.4节相同,并且与LDR数据一样,85%的HDR数据用于训练,15%用于测试。与LDR数据类似(第6.1节),从HDR数据集的每个全景图中提取8个裁剪区域,产生14,000个输入-输出对。这些数据经过色调映射以确保输入网络的是LDR图像。最后,全景图也使用与LDR数据相同的程序进行扭曲。图11-(b)显示了训练期间训练集和测试集上的损失曲线。

图12. LDR网络预测光源位置的评估。 对于每个示例,我们展示了插入背景图像的虚拟兔子模型,并使用该图像的LDR网络估计进行重新光照((a)和(c)),以及叠加在全景图上的预测光照概率((b)和(d))。可见,我们的方法能泛化到广泛的室内场景和光照条件。更多示例见补充材料。
8 实验
在本节中,我们从几个不同的方面评估我们的方法。
首先,我们在SUN360数据集(LDR数据)上展示光照预测结果,其中第4节检测器检测到的光源被视为真实值。
然后,我们展示HDR微调程序的结果,并将我们的结果与实际HDR真实值进行比较。
最后,我们将我们的技术与之前的工作进行比较,并进行一项用户研究,比较每种方法在虚拟物体重照明方面的表现。
在以下分析中,术语“LDR网络”指在SUN360数据集上训练的、用于恢复二值光照掩码的网络(第6节),而“HDR网络”指在HDR数据集上微调的、用于恢复光照强度的网络(第7节)。请注意,除非另有说明,本文和补充材料中展示的每个光照估计都是完全自动计算的。这些结果中唯一的人工干预,在某些情况下是放置虚拟物体在场景中。更多关于每个步骤的结果,请参阅补充材料。
8.1 LDR网络评估
我们通过将虚拟兔子模型渲染到图像中来定性评估LDR图12. LDR网络预测光源位置的评估。 对于每个示例,我们展示了插入背景图像的虚拟兔子模型,并使用该图像的LDR网络估计进行重新光照((a)和(c)),以及叠加在全景图上的预测光照概率((b)和(d))。可见,我们的方法能泛化到广泛的室内场景和光照条件。更多示例见补充材料。网络从单张图像估计光照方向的能力。为此,通过对光照掩码x_mask进行阈值处理(在t>0.5时),检测连通分量,并为每个分量分配一个对应于x_mask中平均光照概率的权重,得到一个粗略的环境贴图。这个修改后的x*_mask与RGB全景图x_RGB通过以下方式组合成单个环境贴图:
x_combined = λ_mask x*_mask + λ_RGB (1 - x*_mask) x_RGB (9)
其中参数λ_mask和λ_RGB分别设置为500和1(这些选择是任意的,仅用于可视化LDR网络预测光源位置的能力)。如图12所示,即使在视场小、视觉光照线索少的图像中,我们的LDR网络也能成功定位光源。
处理遮挡光源。在第5节中,我们提到我们的扭曲操作符是一个近似,不处理被遮挡的光源。然而,这种情况很少见,因此我们的网络能够鲁棒地泛化到这些错误的输入数据之外。这在图13中得到了证明,我们的网络预测了由于遮挡而不在真实值标注中的光源,但这些预测与裁剪照片中观察到的着色和阴影一致。

图13. 遮挡对LDR网络预测的影响。 虽然我们的扭曲操作符不处理光照遮挡,但我们的网络能够泛化到这些罕见情况之外。此处,尽管导致图像中把手阴影的窗户(左图)在全景图中被遮挡(右图),我们的网络仍将最高的光照概率置于此方向,从而产生比真实值"更好"的结果。

图14. 收敛后(e = 70),HDR测试集上对数强度损失(方程8)的直方图(红色)和累积直方图(蓝色)。 参见图15中对应不同损失百分位数的定性示例。
8.2 HDR网络评估
本节提供对HDR网络的更全面评估,包括定量和定性结果。
定量评估。我们首先在HDR测试集上评估HDR网络的性能。图14显示了在我们2,100张图像测试集(14,000的15%)上HDR损失(方程8)的分布,图15显示了与此分布不同百分位数对应的定性示例。在此图中,请注意真实值对数强度的范围是[0.04, 3.01]。由于我们使用L2损失(均方误差),损失值L=0.02(如图15-(a)所示)表示全局相对误差约为4.7%。
尽管网络在精确定位小而集中的光源的确切位置方面存在困难(例如图15-(b)),但它成功地找到了场景中的主要光源,即使这些光源位于照片的视场之外(如图15中大多数示例的情况)。较大的误差通常发生在场景被非常大的面光源(如图15-(e)中的窗户)照亮时。
虚拟物体重照明。HDR网络的输出可以直接用于生成适合重照明的HDR环境贴图,通过如下组合其两个输出:
x_combined = 10^(x_mask) + x_RGB (10)
因为HDR网络被训练为输出对数强度。作为后处理,我们根据灰度世界表面反射率的假设,将RGB预测的平均RGB值和光源颜色与输入图像的平均RGB值进行匹配。
图17展示了插入从我们的HDR测试集中提取的裁剪区域内的虚拟物体,以便将它们与使用其真实光照进行重照明的结果进行比较。网络预测产生了令人信服的重照明结果,非常接近真实值。
全局强度缩放。从未校准的LDR图像中恢复绝对光照强度是一个不适定问题,因为光照强度和相机参数(快门速度、ISO等)的许多组合可能导致完全相同的图像。因此,使用我们网络估计光照的物体有时会太暗或太亮。鉴于网络恢复了正确的相对光照(即全景图中不同部分强度之间的比例是准确的),解决这个问题归结为选择一个单一的全局强度缩放参数。这个参数可以轻松指定,并且通常是大多数合成器提供给用户以确保其渲染正确曝光的控制项之一(即使在使用真实值基于图像的照明进行重照明时也是如此)。
除了图17中自动估计的结果外,我们还提供了一组结果(图17-(c)),其中手动指定了这个全局强度缩放。更多结果可以在补充材料中找到,包括这个缩放参数对合成效果影响的示例。虽然我们的自动估计在许多情况下是合理的,但在几乎所有情况下稍微调整这个比例因子都可以产生令人信服的结果。请注意,本文中所有其他结果,包括与之前方法的比较,都使用了我们的自动光照估计。
最后,我们还在图16中提供了将物体插入从互联网下载的通用库存照片中的定性示例。网络能够获得鲁棒的光照估计,即使对于具有不同视场和视点、不受控制的捕捉设置以及未知后处理的图像——所有这些因素都超出了我们的HDR训练集范围。
8.3 与先前工作的比较
我们将我们的方法与Khan等人[2006]和Karsch等人[2014]的方法进行比较,并在图17中展示了比较性的重照明结果。Khan等人[2006]通过将背景图像直接投影到球体上并翻转以获得整个环境贴图来估计光照条件。这未能估计正确的动态范围和光源位置。相比之下,即使光源在图像中不可见,我们的方法也能产生鲁棒的光照方向和强度估计。
Karsch等人[2014]使用光照分类器检测视场内光源,通过将背景图像与全景图数据库匹配来估计视场外光源位置,并使用基于渲染的优化估计光照强度。我们使用了作者的原始代码来估计视场内和视场外的光照,这些结果如图17-(e)所示。他们的全景图匹配基于图像外观特征,这些特征不一定与场景光照相关。因此,虽然他们的技术有时能检索到良好的匹配,但也可能检索到任意糟糕的匹配。在这种情况下,由于不允许光源在其优化中移动,调整光照强度可能无法收敛到令人满意的结果。此外,他们的逆向光照方法依赖于重建场景的深度和漫反射反照率。这两个都是具有挑战性的问题,这些估计中的误差会导致他们光照预测的误差。相比之下,我们的方法学习了图像外观与场景光照之间的直接映射,并产生了鲁棒、准确的结果。

图15. HDR测试集示例上的定性光照强度和RGB预测。 对于每个示例,我们展示(中)输入图像,(上)真实对数强度t_int和RGB全景图t_RGB,以及(下)HDR网络的相应预测x_int和x_RGB。光照强度用颜色编码,从黄色(高强度)到蓝色(低强度)。示例按照损失(方程8)的误差百分位数p从左到右、从上到下排序。完整误差分布见图14。

图16. 对从互联网下载的各种通用库存照片进行物体重新光照。 在所有情况下,光照估计均由我们的HDR网络完全自动执行,其输出直接被渲染引擎用于为虚拟物体重新光照。

图17. (b)我们的方法与(c)经人工单强度因子调整后的我们的方法,与(a)真实光照、(c)[Khan等人,2006]和(d)[Karsch等人,2014]在虚拟物体重新光照上的比较。 虽然我们的结果有时在视觉上与真实值不同,但它们产生了逼真的物体插入效果。相比之下,Khan等人[2006]不估计HDR光照,因此渲染看起来很平。由于Karsch等人[2014]依赖于本征分解、几何估计和逆向光照,我们发现该方法对其中任何一步的误差都相当敏感。因此,渲染结果往往过亮或过暗。更多结果见补充材料。

图18. 对于每一行,图像中的虚拟物体要么由真实光照照亮,要么由我们的HDR网络输出照亮。您能猜出哪个是哪个吗?答案如下。

图19. 用户研究中每种方法以柱状图显示,蓝色投票表示用户更喜欢该方法而非真实光照,红色投票表示用户对该方法与真实光照无明显偏好。
8.4 用户研究
除了推断场景光照外,我们还对将这些估计用于图形应用(如3D物体插入)感兴趣。这就引出了一个问题:当使用我们的估计光照的合成物体被合成到输入图像中时,它们看起来有多真实?我们通过一项感知用户研究来评估这一性能维度。我们从HDR测试集中准备了20个场景,并在每个场景中插入了各种不同的虚拟物体。我们通过使用其真实光照(通过扭曲从中提取图像的HDR全景图获得)将物体重照明到这些图像中,生成一个参考合成图像。我们将这些结果与使用四种不同方法估计的光照探头进行重照明的物体进行比较:
1)我们的HDR网络(未经艺术家调整,见第8.2节),
2)我们的LDR网络,
3)[Khan等人,2006],以及4)[Karsch等人,2014]。
对于每种技术,我们向用户展示一对图像——使用真实值光照渲染的参考图像和使用其中一种要比较的方法渲染的结果——并要求他们指出哪张图像看起来最真实。这些合成图像的真实感受到物体与场景的几何对齐、物体几何和材质的质量以及渲染设置的显著影响;我们的强制选择A/B测试使我们能够在某种程度上消除这些因素,并隔离光照估计对合成图像真实感的影响。请注意,这个测试之所以可能,是因为我们从HDR数据集中获得了高质量的真实值光照。
图18展示了向用户提出的两种比较类型的示例。用户被给予选择两个给定选项中更真实的图像,以及第三个额外选项来表明两者都同样合理。汇总的用户研究结果如图19所示。我们总共收集了105位独特参与者的响应,每种方法相对于真实值的比较次数为1080次。结果表明,在我们的HDR网络渲染中,41.85%的响应被认为与真实值结果同等或更真实,这相对于Khan等人[2006](27.78%)和Karsch等人[2014](16.76%)有显著改进。请注意,即使我们的LDR网络(27.32%)也与Khan等人的方法相当,并且相对于Karsch等人[2014]有显著改进。
除了我们的自动方法相对于这些先前方法提供的显著改进外,请注意我们的结果可以通过简单地调整全局强度缩放进一步改进(见图17(c))。这对于Khan等人(无法恢复不同的光源来创建阴影等效果)和Karsch等人(经常弄错光源方向且需要大量努力来纠正)来说是不可能的。

图20. 典型的失败案例包括光源的空间范围或方向不正确(通常是模糊的,上图)、具有复杂几何的场景(中图)以及具有强烈局部光照变化的图像(下图的下半部分被照亮,而上半部分没有)。
9 讨论
本文的主要贡献在于将室内场景的光照估计构建为一个端到端的学习问题。我们方法的主要优势在于它学习了从图像到光照的直接映射。因此,除了假设场景是在室内拍摄的之外,它不对场景做任何假设,也不需要显式地估计其他场景属性(如场景或相机几何),更不需要使用那些优化速度慢且容易陷入局部最优的逆向渲染方法。为了实现这一学习过程,我们引入了两个额外的贡献:
1) 一种在LDR全景图中检测光源的方法,其性能超越了现有技术水平;
2) 一种全景图扭曲操作,使我们能够为从全景图中提取的不同裁剪照片调整光照条件。
这些步骤共同使我们能够自动从SUN360数据集[Xiao等人,2012]中创建带标签的数据,并训练一个LDR光照预测网络。我们使用一个新的HDR环境贴图数据集对该网络进行了微调,以预测HDR场景光照。对我们方法的定量和感知评估均表明,它显著优于现有技术。
局限性与未来工作。虽然我们的网络在预测光源位置方面表现良好,但在推断光源的空间范围(尤其是视场外光源)和取向上有时存在问题。这可能部分归因于我们网络内部的滤波操作。其结果是,大面积的面积光源可能被检测为较小的光源。更常见的情况是,锐利的光源变得模糊,无法产生其特有的清晰投射阴影。最后,对于具有复杂、模糊几何或光度线索的图像,网络可能会失败。图20展示了其中的一些情况。总体而言,网络在恢复光源位置方面通常优于恢复光照强度,因为预训练步骤(使网络检索光源位置)的训练集远大于微调步骤。另一个相关因素是输入LDR图像的曝光,光照强度估计器对此的敏感性远高于光源位置估计器。
我们的网络被训练用于预测光照强度,并使用了简单的方案来分配颜色。毋庸置疑,光源颜色在图像外观中扮演着重要角色,我们也希望能鲁棒地推断它。我们训练网络为输入图像预测一种光照解决方案。然而,如前所述,室内光照本质上是局部性的,甚至可能在一张图像内变化(图20,底部)。我们的长期目标是能够恢复这种空间变化的光照分布——这是一个具有挑战性的问题,必然需要带有几何和光照标注的数据集。
最后,虽然我们的工作仅着眼于光照估计问题,但该问题与几何重建和本征图像等其他场景推断任务密切相关。联合推断所有这些属性可能对每个单独的任务都有裨益。
致谢
作者感谢 Yannick Hold-Geoffroy 在设置渲染和用户研究方面的帮助。我们还要感谢 Henrique Weber 在 EnvyDepth 方面的帮助,以及 Jean-Michel Fortin 在 HDR 数据采集方面的工作。
这项工作的部分内容是在 Marc-André Gardner 于 Adobe 研究院实习期间完成的。本工作部分得到了 REPARTI 战略网络和 FRQNT 新研究者基金 2016NC189939 的支持。我们诚挚感谢 Nvidia 为本研究捐赠了使用的 GPU,感谢 Adobe 提供资金覆盖 HDR 数据集采集成本,以及 Adobe 向 J.-F. Lalonde 提供的慷慨资助。



1607

被折叠的 条评论
为什么被折叠?



