挑战:
- 保留人脸的局部细节。
- 精确的移除、合成重光照图像中的阴影,尤其是硬阴影。
现有方法:
- 图像本征分解:将图像分解为人脸几何、光照和反射。
- 问题:通常会损失高频细节,且由于几何形状和反射估计的误差,会在重光照图像中会留下伪影(artifacts)。
- image-to-image转换:
- DPR:使用primarily diffuse光照训练,仅可以处理软阴影。
- 风格转换:
- 需要使用参考图像,实际使用中不灵活。
文中方法概要:
- 预测比例图(ratio image):使用hourglass网络估计比例图(ratio image),相比于直接预测重光照图,可以更好的保留人脸局部细节。
- 训练过程中使用估计的阴影模板(shadow mask):来增强高对比阴影的边界。
- 估计图像环境光强度(ambient light intensity):使用阴影模板来估计。使得论文可以使用环境光强度差异很大的多个数据库进行模型训练。
- 颜色空间:使用YUV颜色空间(不同于DPR方法的Lab)
- loss
- 比例图预测loss([latex]L_{ratio}[/latex]):
- 将loss定义在log空间保证了图中比例值 [latex]r[/latex] 和 [latex]1/r[/latex]在loss中具有相同的权重。
- 比例图阴影边界loss([latex]L_{i,border}[/latex]):
- 其 i 可为 s 或 t 分别代表源和目标图像,[latex]W_i[/latex]为每个像素的权重,[latex]N_i[/latex]为[latex]W_i[/latex]中非零权重的数量。
- 光照估计loss([latex]L_{lighting}[/latex]):
- 梯度一致loss([latex]L_{gradient}[/latex]):
- 确保预测图像和真值图梯度信息类似
- 保留图像边缘信息,防止产生图像模糊
- 面部特征一致loss([latex]L_{face}[/latex]):
- 确保同一主题在不同光照下的面部特征相同
- 保留面部局部细节
- GAN loss([latex]L_{adversarial}[/latex]):
- 使用两个PatchGAN判别器,进一步提升人脸真实性。一个使用70×70块,一个使用140×140块。
- 结构不一致loss([latex]L_{DSSIM}[/latex]):
- 基于SSIM,增强感知质量。
- 参考:Learning physics-guided face relighting under directional light, CVPR, 2020.
- Final loss:
- 其中 [latex]L_{wratio}=L_{ratio}+L_{s,border}+L_{t,border}[/latex]。
- 比例图预测loss([latex]L_{ratio}[/latex]):
- 阴影边界权重
- 计算阴影模板:使用定向光源和由3DMM拟合得到的三维形状信息计算。
- 平滑阴影模板:使用21×21的均值滤波。
- 确定边界像素:平滑后阴影模板上值在两阈值之间的像素
。
- 各边界像素处计算局部对比度:使用四个方向上梯度的和作为局部对比度;梯度使用21×21的核计算;边界像素(x,y)处的局部对比度记为t(x,y)。
- 使用高斯函数衡量各边界像素局部对比度对阴影边界的贡献:
- 点(x,y)处的阴影边界权重W(x,y):领域内包含点(x,y)的所有边界像素(u,v)对阴影边界贡献的和。
- 最终,将W(x,y)归一化到[0,10]。
- 阴影模板
- 对于处于投射阴影(cast shadow)或者自阴影(self shadow)中的像素置0;对于其他像素置1。
- 环境光:
- 环境光估计:由于只有环境光会作用到阴影像素上,因此可以使用阴影像素亮度的均值作为环境光的估计。
- 汇总方向光和环境光的影响:首先使用点光源模拟图像的方向光,并计算对应的9个球谐系数;然后,将估计的环境光强加到0阶球谐系数上。
- 将环境光影响添加到光照真值中:训练中分别使用源和目标图像的阴影模板计算对应的环境光,并将环境光分别加到对应的光照真值中。
- 训练细节
- 共训练51个epoch。
- 学习率0.0001;使用adam optimizer优化。
- 初始的8个epoch,无skip connection;分别在第9、11、13、15个epoch处增加一个skip connection;在第16个epoch后,才添加面部特征loss ([latex]L_{face}[/latex])。
- gamma校正:由于相机通常无法正确的捕捉物理亮度,在训练中对输入和目标图像亮度进行gamma校正([latex]\gamma=1/2.2[/latex]),并学习校正后图像亮度的比例图。