当前位置:首页 期刊杂志

基于深度学习的室内场景光照估计

时间:2024-05-04

郭智溢

(四川大学视觉合成图形图像技术国防重点学科实验室,成都610065)

0 引言

室内场景光照估计是应用前景十分广泛的技术,在游戏、增强现实、电影电视节目制作方面有广泛的应用。传统的室内光照采集多采用镜面球作为采集媒介,通过多角度对镜面球进行不同曝光度的拍摄,并将照片合成为HDR全景环境贴图[1],来获得当前场景的光照情况。Zhang Edward等人[2]通过RGB-D传感器来恢复场景的几何信息,并以此来判断当前场景的光源分布情况。但由于对设备要求较高,且有大量人工操作,这些采集方式虽然具有较好的效果,但时间、设备成本较高且无法快速部署。因此业界进行了大量的相关研究,希望能以成本更低、更加便捷的方式估计室内场景光照。

近年来,在计算机视觉与图形学的研究中卷积神经网络被广泛应用,以深度学习方法进行室内光照的估计具有一定的研究意义,因此本文将提出一种基于深度学习,使用虚拟数据集进行训练,通过预测光源遮罩掩膜来估计室内场景光照的方法。

1 相关工作

目前业界在使用深度学习估计室内场景光照的研究上已经取得了一定的成果,Gardner Marc-Andre等人[3]实现了通过单张局部场景的图片来估计室内光照的方法,Weber Henrique等人[4]则通过已知表面材质性质的指定物体上的光反射来预测室内光照,Li Zhangqin等人[5]则通对室内场景中常见的不同材质对光源的反射,结合由渲染引擎渲染的数据集进行训练的神经网络,实现了对场景中指定位置的局部光照情况的预测。

为了进一步减少网络的计算量和提高预测速度,Cheng Dachuan等人[6]通过相机拍摄指定地点正前方和正后方的照片,将拍摄所得的两张图像输入至神经网络中,来获得当前光照情况的球谐函数(Spherical Harmonics)系数以恢复光照。Garon Mathieu等人[7]则通过制作高拟真度的三维室内场景数据集,用于训练以DenseNet[8]为基础的神经网络,来预测当前场景的球谐光照系数,在较低的时延下取得了较好的预测效果。

本文考虑到目前已有的深度学习的方法在有限输入条件下,对于整个场景某些光源是否开启的变化以及当前光源分布情况的估计还不够准确,因此以光源开关状况预测为基础,提出了一种基于深度学习的方法,该方法使用三维渲染引擎制作的虚拟数据集,通过将光照变化后的局部场景LDR图像与预先采集的全部光源开启的HDR全景环境贴图输入至网络,得到预测的光源遮罩掩膜,使用预测得到的光源遮罩掩膜经过简易的预处理,与预先采集的HDR全景环境贴图进行运算,获得当前场景在光源开关状况发生变化后的光照情况,因为有原始光照情况为基础,得到的光照分布情况更加精确。下面的章节将详细介绍这种方法。

2 本文方法

2.1 数据集制作

本文使用了虚拟数据集来训练深度学习网络,从SceneNet[9]数据集中选取了23个不同的人工制作的三维场景用于数据集的制作,将场景导入建模软件Blender后,在场景顶部的随机位置添加一定数量光源来模拟现实场景中的光源,同时使用了不同的HDR环境贴图来模拟部分场景中出现的室外光照。将渲染器相机视角设为全景视角来模拟360度全景视角,使用Blender自带的Cycles渲染引擎基于Path Tracing方式进行渲染,即可生成指定位置下的HDR全景环境贴图。由于渲染引擎渲染的图像始终存在一定程度的噪点,Jaakko Lehtinen等人[10]研究表明使用有噪点的渲染图像进行深度学习时,网络仍然具有鲁棒性,所以为了兼顾图像质量与图像生成的速率,将渲染分辨率设定为512×256,每个像素采样值为64,渲染单张图片的耗时约10秒,图像以EXR格式进行保存,结果如图1。

图1 渲染完成的HDR全景环境贴图

在针对每个场景进行渲染时,使用渲染脚本随机选取多个相机位置进行渲染。在每个相机位置都会根据渲染脚本随机让不同光源处于不同的开关状态下,再对场景进行渲染,即可得到单一视角多组光照情况的全景光照贴图,模拟现实中因室内光源的开关状态变化而产生的不同的光照情况。

制作模拟光照变化后的局部场景的LDR图像时,以环境贴图中心点为中心,截取一部分图像以模拟正常相机拍摄的图像,截取的结果如图2,在对截取的图像消除视角畸变并进行色调映射(tone mapping)之后,保存为JPG格式的LDR图像。最终,一共生成了114984张LDR、HDR图片,其中100400张用于训练,14544张用于测试集。

图2 截取后并修正畸变的图像

2.2 光源遮罩掩膜

因为要对光源的开关状况进行预测,需要制作能表示光源状况的光源遮罩掩膜作为训练标签,所以使用单通道黑白图像来表示场景中的光源是否打开。根据之前渲染的HDR全景环境贴图的高动态范围特性,贴图中的光源可以通过人为设定遮罩阈值来筛选。假设HDR全景环境贴图的宽度为w,高度为h,则对每个通道像素值的平均值做如下定义:

其中k的值分别对应图像的R、G、B三个通道,p(i,j,k)即为全景环境贴图上第k个通道上对应像素(i,j)的像素值。对于光源开关情况的掩膜上的每个像素M(i,j)有如下定义:

其中γ=4作为遮罩阈值,通过这种计算即可得到表示光源开关情况的掩膜,如图3右侧图片中的白色部分的像素值为255即为筛选出的光源区域,其余黑色部分的像素值为0,即为非光源部分。

图3 表示光源开光情况的掩膜

2.3 网络结构

卷积神经网络在近年的研究中,被广泛的应用于计算机视觉领域,不同的网络结构用于解决不同的问题。其中AlexNet因为结构简单,在很多研究中被用于图像特征的提取,而UNet则通过多种尺度采样的融合,在语义分割领域有着出色的表现。本文中对于光源遮罩掩膜的预测,与语义分割有相似之处,均为对图片中的部分物体进行识别筛选,因此在本文中使用的网络基于AlexNet与UNet的结合。首先将所有光源都开启的原始HDR全景贴图I hdr作为UNet中编码器的输入。每一张I hdr在输入前,其原图I*hdr的尺寸会由512×256缩放成256×128,并经过了简易的tone mapping[11],方式如下:

其中a=1/30,b=2.2,这样会使得I hdr中最亮的区域与最暗的区域的数值分别接近1和0,HDR图像的数值范围也会被压缩,使其符合深度学习网络的输入范围。网络将光源变化后场景的局部LDR图像I ldr作为AlexNet的输入,在输入之前,I ldr的尺寸由224×224缩放到了192×128,其中本文使用的AlexNet结构将其最后的全连接层取消,改为两次UpSample运算,使AlexNet的输出与UNet的编码器输出能够相匹配,两个输出结果可以进行连接运算。两个网络的输出结合后,其结果被输入到UNet解码器中,其中UNet解码器会通过跳层连接融合之前编码器中下采样的部分特征。最终UNet编码器部分将会输出预测的光源遮罩掩膜,完整的网络结构如图4。

2.4 损失函数

假设网络预测的光源遮罩掩膜为M,实际真实的光源遮罩掩膜为M*,则当M中位置为(i,j)的像素值越接近1,则该像素越有可能位于光源遮罩掩膜中的光源区域,因此使用二进制交叉熵作为网络的损失函数:

其中l i为:

由公式(5)可知,当M与M*的值越接近,则最终的L(M,M*)会越小。

3 实验细节

网络使用ADAM优化器,将batch size设置为16,学习率lr为0.001,权重衰减为1e-8,在CPU为Intel Core i7 5820k,内存64GB,显卡为NVIDIA 1080Ti的基于Ubuntu 18.04系统的工作站上训练,训练轮次Epoch为50,训练时间约40小时。

4 测试方案

本文的测试分别在虚拟数据组成的测试集和在网络上获取的标准格式的室内场景数据中进行测试,使用输入到网络中的HDR全景环境贴图生成所有光源开启的光源遮罩掩膜,将其与网络预测的光源遮罩掩膜在数值上归一化到(0,1)得到M hdr、M pred,最终的光源掩膜M final有如下定义:

将M final与原始光照情况的HDR全景环境贴图的每个通道做相乘,即可得到部分光源被遮罩的HDR全景环境贴图,如图5,将其用于渲染测试。

图5

图4 网络结构

5 实验结果

最终渲染测试结果如图6,如图可以从结果中看出,本文所提出的方法,在虚拟数据集和真实数据集上,通过预测光源遮罩掩膜,均取得了较好的渲染效果,证明了本方法的可行性。

6 结语

本文通过虚拟数据集进行深度学习训练生成光源遮罩掩膜,给出了一种比较高效地进行室内场景光照估计的方法,只需要采集一次所有光源都开启的原始HDR全景光照环境贴图,就可以比较快捷地进行光照估计,在虚拟数据集和真实数据上测试的最终结果都能反映光源变化,在一些AR应用中具备可适用性。

图6 虚拟数据与真实数据中的测试结果

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!