【paper reading】Self-calibrating Deep Photometric Stereo Networks
最近CVPR’ 19的接收论文列表公开了,后知后觉的我看到了这篇HKU的论文,它被接收为CVPR 2019上的Oral,而且作者在Github上开放了源代码。顺带一提,作者还有一篇类似的工作“PS-FCN: A Flexible Learning Framework for Photometric Stereo”。
1.简介
这篇论文中,作者提出了一种基于深度学习的uncalibrated photometric stereo方法。在photometric stereo领域中的一些传统方法由于场景复杂度的限制,通常会对物体表面的反射属性或者光源的分布进行各种假设。但是本方法致力于放宽这一限制,在未知的照明方向下对任意反射属性的物体进行表面恢复,同时标定出照明的方向和亮度。
Photometric stereo旨在通过拍摄静止物体在不同照明条件下的图像序列,从中恢复出物体表面的法向图。Calibrated photometric stereo通常假设照明的方向和亮度已知,虽然在这方面取得了很好的效果,但是实际应用中,标定照明的方向和亮度需要复杂的操作以及仪器的协助,显然uncalibrated photometric stereo能更好的适应实际应用。
Photometric stereo问题中的一个难点是如何模拟物体复杂的表面反射,很多传统方法致力于引入计算机图形学领域中较为成熟的渲染模型,而随着深度学习在各个计算机视觉领域中的成功,也被引入到Calibrated photometric stereo领域中。它不是明确地模拟复杂的表面反射,而是直接学习从观测到的像素值到给定照明条件下的表面法向的映射,正所谓算法课上老师讲的"using dirty method handle dirty work"。但是在这里,传统方法如果切实的找到了物体的表面反射函数,就能够直接生成虚拟照明下的物体视图,这一点还是比基于深度学习方法更加便捷。而在uncalibrated photometric stereo问题上,最简单的思路就是训练一个端到端的网络,直接学习从图像到法向图之间的映射,但是目前这种模型的性能相比calibrated的任务中会下降很多。
2.图像生成模型
在这篇论文中,假设相机是具有线性辐射响应的正交相机,照明是只来自上半球方向的白色照明,观察方向定义为指向观察者。比较常见的照明形式是之前提到的基于二次球面谐波的自然光照明、点光源照明和平行光照明。文章中的照明假设的是最简单的平行光,因此光源只具有两个性质,那就是两自由度的方向和一自由度的亮度。对于非朗伯体表面,它的反射属性通常使用各向同性的BRDFs 函数
ρ
\rho
ρ来描述,对于给定法向方向
n
∈
R
3
n\in\mathbb R^3
n∈R3的表面点,第
j
j
j个照明光的方向记为
l
j
∈
R
3
l_j\in \mathbb R^3
lj∈R3,强度记为
e
j
∈
R
e_j\in \mathbb R
ej∈R。那么图像生成模型可以表示为
m
j
=
e
j
ρ
(
n
,
l
j
)
max
(
n
T
l
j
,
0
)
+
ϵ
j
m_j=e_j\rho(n,l_j)\max(n^Tl_j, 0)+\epsilon_j
mj=ejρ(n,lj)max(nTlj,0)+ϵj
m
j
m_j
mj为第
j
j
j幅图像中该点对应的亮度值,
max
\max
max操作是为了应对法向方向背离光照方向,即自阴影的情况,否则亮度值会出现负值,最后的
ϵ
\epsilon
ϵ项综合了投射阴影、自反射以及噪声的影响。
3.SDPS-Net
为了解决uncalibrated photometric stereo问题,文中提出了一个名为 Self-calibrating Deep Photometric Stereo Networks(SDPS-Net)的两阶段模型。在SDPS-Net的第一阶段是 Lighting Calibration Network (LCNet),将任意数量的图像作为输入并估计其相应的照明方向和强度。SDPS-Net的第二阶段是 Normal Estimation Network (NENet),基于由LCNet估计的照明情况和输入图像来估计物体的表面法线图。这种两阶段而不是端到端的设计有其自身的意义,首先照明信息在整个photometric stereo问题中十分重要,因为它是阴影等线索信息的主要来源,同时,从图像中先估计出三自由度的光照信息比联合估计法向和照明来得简单。另外,通过明确地学习估计照明的方向和强度,该模型可以利用中间监督,从而产生更加可解释的行为。同时LCNet或者NENet能够与现有的其他方法进行无缝集成。
3.1 Lighting Calibration Network
为了从图像中估计出光照方向和亮度,一个直接的方法是直接回归出照明参数。但是作者在尝试后发现在这里将照明估计的问题转变为一个分类问题能够更好的处理,因为将照明参数分类到一个确定的类别中比回归出精确值的学习难度要下降不少,并且将离散值作为输入可以使后面的NENet更好地容忍照明估计上的小误差。
正如之前所述,论文中方法只考虑来自上半球方向上的照明。而上半球的光照方向可以用方位角
ϕ
∈
[
0
∘
,
18
0
∘
]
\phi \in [0^\circ,180^\circ]
ϕ∈[0∘,180∘]和仰角
θ
∈
[
−
9
0
∘
,
9
0
∘
]
\theta \in [-90^\circ, 90^\circ]
θ∈[−90∘,90∘]来表示,因此可以通过将方位角和仰角均匀地分成
K
d
K_d
Kd个区域来离散化照明方向,最终将照明方向离散为
K
d
2
K_d^2
Kd2个值。但是解决这个
K
d
2
K_d^2
Kd2类的分类问题有时候也会有困难,比如
K
d
=
36
K_d=36
Kd=36时
K
d
2
=
1296
K_d^2=1296
Kd2=1296,类数太多,softmax概率向量维度太高。因此作者在这里将分类问题化为两步,先后估计方位角和仰角,将一个
K
d
2
K_d^2
Kd2类的分类问题变成两个
K
d
K_d
Kd类的分类问题。同样,对于照明强度,也在
[
0.2
,
2.0
]
[0.2, 2.0]
[0.2,2.0]的范围内均匀地划分为
K
e
K_e
Ke。
估计每个图像的照明的简单方法是简单地将单个图像作为输入,使用CNN将其编码成特征图,并将特征图传送到照明预测层。这种简单的解决方案的结果肯定不尽人意,正如在SfSNet那篇中所述,由于图像是由物体形状,光照,反射属性决定的,想从单张图像中唯一的分解出光照是不现实的。因此作者在这里将局部特征融合成全局特征以从多个观察中提取更加全面的信息。具体来说,每个图像及其物体蒙版分别输入到共享权重的特征提取器提取出局部特征。然后通过max pooling操作将输入图像的所有局部特征聚合成全局特征,在全局特征中隐式地包含了物体的形状以及反射属性的信息,从而可以帮助解决光照的多义性。之后将每个局部特征与全局特征连接起来,传输到共享权重的照明估计子网络中预测每个图像中单独的照明。通过这种局部-全局特征融合方法,相比单独使用局部特征能产生更加可靠的结果。
最终构建出的网络如图1中所示,是一个多输入多输出网络,由共享权重的特征提取器,聚合层(max pooling )和共享权重的照明估计子网络组成。输入是每幅原始图像以及物体蒙版,输出是三个照明参数的softmax概率向量。之后通过简单地选取具有最高概率的范围的中间值最为光照的估计结果(这里还可以通过计算数学期望或者其他方法来确定最终的取值,但经过实验发现这些操作并没有带来性能上的提升)。最后的loss就是方位角、仰角和强度三个值的多类交叉熵损失。
3.2 Normal Estimation Network
NENet的网络架构和作者的另一篇工作中的PS-FCN类似,是一个多输入单输出网络,由共享权重的特征提取器,聚合层和法向回归子网络组成。
这里需要注意的是,在将图像输入NENet前,需要使用LCNet预测的光照强度来对输入的图像进行归一化,然后将LCNet预测的照明方向与图像连接作为输入(这里不太懂额,照明方向是一个二维向量,怎么和一个RGB图像连接啊?)。对于给定的
h
×
w
h\times w
h×w大小的图像,NENet的损失函数是预测的法向方向与GT的法向方向之间的差异
L
n
o
r
m
a
l
=
1
h
w
∑
i
h
w
(
1
−
n
i
T
n
~
i
)
L_{normal}=\frac{1}{hw}\sum_i^{hw}(1-n_i^T\tilde n_i)
Lnormal=hw1i∑hw(1−niTn~i)
n
i
n_i
ni和
n
~
i
\tilde n_i
n~i分别表示像素i处的预测法向量和GT法向量。
3.3 训练数据
整个网络是在合成数据上进行训练的,使用MERL数据集中的BRDF作为模型的反射属性,总共创建了85212个模型,每个模型使用从上半球均匀采样的64个不同方向的平行光进行照明,并且考虑投射阴影与自反射,使用基于物理的raytracer Mitsuba来渲染,因此最后有 85212 × 64 85212\times 64 85212×64张图像,每张图像大小为 128 × 128 128\times 128 128×128。同时为了模拟照明光的不同强度,随机生成 [ 0.2 , 2.0 ] [0.2,2.0] [0.2,2.0]范围内的光强,并用它缩放图像的亮度。原文是
To simulate images under different light intensities, we randomly generated light intensities in the range of [0.2, 2.0] to scale the magnitude of the images (i.e., the ratio of the highest light intensity to the lowest one is 10).
我觉得有点奇怪,为什么不在渲染时直接调整光照的强度,而是渲染后调整图像呢?还是我理解错了?
输入图像的颜色亮度归一化到[0,1]的范围。在训练中,在[-0.025,0.025]范围内应用噪声扰动进行数据增强,LCNet和NENet的输入图像大小都为
128
×
128
128\times 128
128×128。但是在测试时,NENet可以处理不同尺寸的图像输入,而对于LCNet因为包含全连接层,要求输入图像具有固定的分辨率
128
×
128
128\times 128
128×128。
4. 实验结果
为了评估预测的照明方向和表面法向的准确度,采用广泛使用的平均角度误差(MAE)作为标准。而由于测试图像中的光强度存在比例上的模糊性,作者引入了尺度不变的相对误差
E
e
r
r
=
1
q
∑
i
q
(
∣
s
e
i
−
e
~
i
∣
e
~
i
)
E_{err}=\frac{1}{q}\sum_i^q \bigg(\frac{| se_i-\tilde e_i|}{\tilde e_i}\bigg)
Eerr=q1i∑q(e~i∣sei−e~i∣)
e
~
i
\tilde e_i
e~i和
e
i
e_i
ei分别是GT照明强度和预测的照明强度,q是同一图像序列中的图像数量。缩放比例s是通过计算
a
r
g
min
s
∑
i
n
(
s
e
i
−
e
~
i
)
2
\mathrm{arg}\min_{s}\sum_i^n(se_i-\tilde e_i)^2
argmins∑in(sei−e~i)2得到的。
4.1 照明空间的离散化程度比较
为了研究照明方向的离散化如何影响法向的估计精度,对于3.1节中提到的
K
d
K_d
Kd的值,作者从2取到180。用离散化后具有最大可能角度偏差的四个光方向中的每一个替换每个地面实况光方向,然后使用这些光方向作为PS-FCN的输入来推断表面法线,最后比较误差的上界。当
K
d
≥
30
K_d\ge30
Kd≥30时,再增加离散值的取值数没有什么意义了。
4.2 LCNet的有效性
作者将LCNet与三个基准进行比较,
L
C
N
e
t
r
e
g
\mathrm {LCNet}_\mathrm {reg}
LCNetreg是一个基于回归的模型,直接回归照明方向和强度值,整体结构和LCNet一样,只不过后面全连接的输出换了。
L
C
N
e
t
w
/
o
m
a
s
k
\mathrm {LCNet}_\mathrm {w/o mask}
LCNetw/omask仅将图像作为输入,没有输入图像蒙版。
L
C
N
e
t
l
o
c
a
l
\mathrm {LCNet}_\mathrm {local}
LCNetlocal和LCNet一样是基于分类的模型,但是它独立地估计每个观察的照明,即没有局部-全局特征融合,最后的比较结果如下,证明了LCNet结构的有效性,将回归问题转变为分类问题降低了学习难度并提高了性能。
4.3 NENet的有效性
在参数值差不多的情况下LCNet+NENet显现出最好的性能,甚至可以与calibrated photometric stereo的PS-FCN相比。虽然对UPS-FCN网络,将它加深或加宽能够提高性能,但是不是最好的方法。
对于输入图像数量,毫无疑问,越多的输入图像能够提供越多的信息,从而使得结果越好。
4.4 与非学习方法进行比较
作者使用4种不同的BRDF渲染BUNNY模型,光源分布分两种,一种均匀分布,另一种整体有一定的偏向性。可以看到传统方法PF14对于漫射或近漫射表面的法向和照明方向估计良好,但在处理非朗伯表面时快速退化。而SDPS-Net在不同类型的BRDF上表现良好,即使是在表面上呈现镜面高光时。处理有偏差的光照分布时,两种方法的照明方向和法向估计的性能都呈下降趋势,而光照强度估计的性能略有提高。
4.5 真实数据集上的实验结果
作者在三个公开可用的非朗伯光度立体数据集上评估了SDPS-Net:DiLiGenT benchmark,Gourd&Apple dataset 和 Light Stage Data Gallery。
值得一提的是不仅LCNet+NENet取得了最好的结果,在表3©中,仅仅是将LCNet与原来的calibrated photometric stereo方法进行结合就已经达到了uncalibrated photometric stereo中的基准性能。