文章目录
概述
论文链接: https://openaccess.thecvf.com/content_ECCV_2018/papers/Qi_Guo_Tackling_3D_ToF_ECCV_2018_paper.pdf
数据及代码链接: https://research.nvidia.com/publication/2018-09_Tackling-3D-ToF
作者单位: 英伟达以及哈佛
被引: 31
场景移动,MPI以及sensor的噪声都会给基于tof相机的深度重建引入误差。
这篇文章提出了一个两阶段的、基于深度学习的方法,对以上的这些问题同时进行解决。
此外,文章还引入了一个所谓的”FLAT“的合成数据集,“FLAT”在这里特指“Flexible Large Augmentable Time-of-flight”,该数据集总有2000次非理想情况下的ToF数据测量,且允许不同相机硬件的模拟。
使用Kinect 2相机作为baseline,文章展现了在合成数据集以及真实数据上超过SOTA的能力。
ToF相机模型
介绍ToF相机模型的主要目的之一就是证明在理想情况下,基于ToF的重建过程是一个可微的过程。换句话说,整个重建过程是可微分的,那么也就是可以反向传播的。
此外,还通过数学表达展示了MPI对于深度重建的影响,这将有助于将整个任务进行数学化表达。
网络将直接针对于原始测量进行,也就是说在其展开为相位之间,而目的则是纠正那些有如MPI所引起的误差。
由于文章使用Kinect v2作为baseline,因此也会对于Kinect v2的硬件特性尽可能地进行描画,这也有助于文章更好地去进行数据模拟,尽可能地减少模拟数据与真实数据之间的gap。
理想的相机模型
AMCW(Amplitude-Modulated Continuous-Wave)的ToF相机向场景中所投射的正弦波信号可以表示为:
g
(
t
)
=
g
1
cos
(
ω
t
)
+
g
0
g(t)=g_{1} \cos (\omega t)+g_{0}
g(t)=g1cos(ωt)+g0。假设场景静止,相机以及光源同时放置,那么像素接收到的信号则可以表示为:
s
(
t
)
=
∫
−
∞
t
a
(
τ
)
cos
(
ω
t
−
2
ω
τ
)
d
τ
s(t)=\int_{-\infty}^{t} a(\tau) \cos (\omega t-2 \omega \tau) d \tau
s(t)=∫−∞ta(τ)cos(ωt−2ωτ)dτ
其中
a
(
τ
)
a(\tau)
a(τ)是场景响应函数,即信号在时间
τ
\tau
τ接触到像素的信号。在一个理想的场景中,光只会被反射一次,且场景的相应是一个脉冲,即
a
(
τ
)
=
a
δ
(
τ
−
τ
0
)
a(\tau) = a \delta(\tau - \tau_0)
a(τ)=aδ(τ−τ0)。
飞行时间
τ
0
\tau_0
τ0可以直接被转换为深度。
一个零差(homodyne)的ToF相机对于同频率的、相位延迟的参考信号进行调制,即
b
c
o
s
(
ω
t
−
ϕ
)
bcos(\omega t-\phi)
bcos(ωt−ϕ)。
相机的曝光时间往往被设置为
T
>
>
2
π
/
ω
T >> 2\pi /\omega
T>>2π/ω。
通过简单的三角函数,可以实现raw相关测量
i
ψ
,
ω
i_{\psi,\omega}
iψ,ω的数学表达,即:
i
ψ
,
ω
=
∫
−
T
/
2
T
/
2
s
(
t
)
b
cos
(
ω
t
−
ψ
)
d
t
≈
a
(
τ
0
)
b
cos
(
ψ
−
2
ω
τ
0
)
=
a
f
ψ
,
ω
(
τ
0
)
i_{\psi, \omega}=\int_{-T / 2}^{T / 2} s(t) b \cos (\omega t-\psi) d t \approx a\left(\tau_{0}\right) b \cos \left(\psi-2 \omega \tau_{0}\right)=a f_{\psi, \omega}\left(\tau_{0}\right)
iψ,ω=∫−T/2T/2s(t)bcos(ωt−ψ)dt≈a(τ0)bcos(ψ−2ωτ0)=afψ,ω(τ0)
其中,将
f
ψ
,
ω
(
τ
)
=
b
c
o
s
(
ψ
−
2
ω
τ
)
f_{\psi,\omega(\tau)} = bcos(\psi - 2\omega\tau)
fψ,ω(τ)=bcos(ψ−2ωτ)视作ToF相机函数。已知单频率
ω
\omega
ω以及
K
≥
2
K\ge 2
K≥2的相位
ψ
=
(
ψ
1
,
ψ
2
,
.
.
.
,
ψ
K
)
\psi = (\psi_1,\psi_2,...,\psi_K)
ψ=(ψ1,ψ2,...,ψK)的Raw测量值,那么每一个像素的深度可以表示为:
d = c / ( 2 ω ) arctan [ ( sin ψ ⋅ i ψ , ω ) / ( cos ψ ⋅ i ψ , ω ) ] d=c /(2 \omega) \arctan \left[\left(\sin \boldsymbol{\psi} \cdot \boldsymbol{i}_{\boldsymbol{\psi}, \omega}\right) /\left(\cos \boldsymbol{\psi} \cdot \boldsymbol{i}_{\boldsymbol{\psi}, \omega}\right)\right] d=c/(2ω)arctan[(sinψ⋅iψ,ω)/(cosψ⋅iψ,ω)]
然而,由于多频测量(
ω
=
ω
1
,
.
.
.
ω
L
,
L
≥
2
\omega = \omega_1,...\omega_L, L\ge 2
ω=ω1,...ωL,L≥2)的需要,以及解调深度大于
π
c
ω
\frac{\pi c}{\omega}
ωπc的情况,不妨将频率
ω
l
\omega_l
ωl所对应的测量值标记为
i
ψ
,
ω
l
i_{\psi,\omega_l}
iψ,ωl,则可进一步地将距离
d
d
d改写为:
d
=
∑
ω
A
l
(
ω
)
arctan
[
(
sin
ψ
⋅
i
ψ
,
ω
l
)
/
(
cos
ψ
⋅
i
ψ
,
ω
l
)
]
+
B
(
ω
)
d=\sum_{\boldsymbol{\omega}} A_{l}(\boldsymbol{\omega}) \arctan \left[\left(\sin \boldsymbol{\psi} \cdot \boldsymbol{i}_{\boldsymbol{\psi}, \boldsymbol{\omega}_{l}}\right) /\left(\cos \boldsymbol{\psi} \cdot \boldsymbol{i}_{\boldsymbol{\psi}, \boldsymbol{\omega}_{l}}\right)\right]+B(\boldsymbol{\omega})
d=ω∑Al(ω)arctan[(sinψ⋅iψ,ωl)/(cosψ⋅iψ,ωl)]+B(ω)
显然,由上式可见,我们很容易获得微分 ∂ d / ∂ i ψ , ω l \partial d / \partial \boldsymbol{i}_{\boldsymbol{\psi}, \omega_{l}} ∂d/∂iψ,ωl,也就是说,这个过程是完全可微可反向传播的。
多路径效应的影响
在有多路径情况存在时,接触到像素的场景信号则并非是一个脉冲,进而,相关测量的形式将被改写为:
i
ψ
,
ω
=
∫
−
T
/
2
T
/
2
(
∫
−
∞
t
a
(
τ
)
cos
(
ω
t
−
2
ω
τ
)
d
τ
)
b
cos
(
ω
t
−
ψ
)
d
t
≈
∫
−
∞
t
a
(
τ
)
b
cos
(
ψ
−
2
ω
τ
)
d
τ
=
∫
−
∞
t
a
(
τ
)
f
ψ
,
ω
(
τ
)
d
τ
\begin{aligned} i_{\psi, \omega} &=\int_{-T / 2}^{T / 2}\left(\int_{-\infty}^{t} a(\tau) \cos (\omega t-2 \omega \tau) d \tau\right) b \cos (\omega t-\psi) d t \\ & \approx \int_{-\infty}^{t} a(\tau) b \cos (\psi-2 \omega \tau) d \tau=\int_{-\infty}^{t} a(\tau) f_{\psi, \omega}(\tau) d \tau \end{aligned}
iψ,ω=∫−T/2T/2(∫−∞ta(τ)cos(ωt−2ωτ)dτ)bcos(ωt−ψ)dt≈∫−∞ta(τ)bcos(ψ−2ωτ)dτ=∫−∞ta(τ)fψ,ω(τ)dτ
当我们对不同频率
ω
l
\omega_{l}
ωl和不同相位
ψ
k
\psi_k
ψk的正弦信号进行测量时,我们可以获得多通道的raw测量值。
对于某一个像素的多通道测量值,我们可以将其视作在多维空间中的一个点,尽管难以通过理论分析对其进行建模,但是却可以
通过学习的方式来习得空间结构。
如果只有单频的话,准确识别MPI几乎是不可能的,因为MPI所导致的误差值与真实的测量值在一个域内,而如果是多频的话,则会产生一个非线性的子空间,MPI所影响的值则不会在该子空间内。MPI问题可以被认为是真实测量的映射。
移动(Motion)的影响
真实场景很少会是完全静止的。
由于物体相对于相机横向和轴向的运动,后续的相关测量 i ψ , ω i_{\psi,\omega} iψ,ω往往并不对齐。
此外,相对于相机轴向的运动还会进一步地对响应函数
a
(
τ
)
a(\tau)
a(τ)产生影响,具体地,我们不考虑MPI问题,仅仅考虑单次反射的情况,会产生测量强度与距离平方成反比的情况。
在室内试验中,发现这种情况会对深度恢复产生非常大的影响。
而其他由于运动所导致的blur和多普勒效应几乎可以忽略不计。
Kinect v2的特性
Kinect v2是一个广泛应用的ToF相机,且其自带一个SDK(libfreenect2,简称LF2)。
文章仔细地研究了相机函数,shot噪声、vignetting、像素延迟这些特性,目的是尽可能进行准确的仿真。
Kinect2使用了三个调制频率,每个调整频率测量了三个相位,共产生9个相机函数
f
ψ
,
ω
(
τ
)
f_{\psi,\omega}(\tau)
fψ,ω(τ)。为了对相机函数进行标定,我们仔细地对准光轴,使其垂直于朗伯校准平面。我们在Kinect光源前放置一个光吸收管,以缩小光束发射角度,限制MPI。
将平面转换为一已知的距离
{
d
j
}
j
=
1..
N
\left\{d_{j}\right\}_{j=1 . . N}
{dj}j=1..N,并获得相对应的raw测量值
{
i
ψ
,
ω
(
d
j
)
}
j
=
1..
N
\left\{\boldsymbol{i}_{\boldsymbol{\psi}, \boldsymbol{\omega}}\left(d_{j}\right)\right\}_{j=1 . . N}
{iψ,ω(dj)}j=1..N,该raw测量值将接近于
(
d
j
)
−
2
f
ψ
,
ω
(
2
d
j
/
c
)
\left(d_{j}\right)^{-2} \boldsymbol{f}_{\psi, \boldsymbol{\omega}}\left(2 d_{j} / c\right)
(dj)−2fψ,ω(2dj/c)。
在去除掉光照衰减
(
d
j
)
−
2
(d_j)^{-2}
(dj)−2后,可以获得一系列的观测值。
下图表现了三个相机函数的拟合示意图,其中红色和蓝色表示
b
c
o
s
(
ψ
−
2
ω
τ
)
b cos(\psi - 2\omega \tau)
bcos(ψ−2ωτ),绿色表示
m
a
x
(
m
i
n
(
b
1
c
o
s
(
ψ
−
2
ω
τ
)
,
b
2
)
,
−
b
2
)
max(min(b_1 cos(\psi-2\omega \tau),b_2),-b_2)
max(min(b1cos(ψ−2ωτ),b2),−b2)。
至于shot噪声,假设每一个像素都独立于其他像素,从15个场景中获取数据,对于每一个raw相关值,都计算了其100次测量的平均期望值。对于每一个期望值,都收集了其噪声样本的经验分布,且在之后将用于仿真过程中的噪声数据生成。
FLAT的数据集
文章认为,一个理想的用于训练及验证ToF算法的数据集应当是大型的,且允许模拟不同的相机响应函数,允许MPI、shot noise以及运动,且允许raw测量值的体现。
因此,制作了FLAT数据集,该数据集中包含了2000个场景响应函数
{
a
j
(
τ
,
x
,
y
)
}
j
=
1.2000
\left\{a^{j}(\tau, x, y)\right\}_{j=1.2000}
{aj(τ,x,y)}j=1.2000。
这一段主要介绍了如何对FLAT数据进行仿真,得到一个尽可能近似于Kinect2的仿真数据集,且能够模拟shot noise、MPI 等。
如果读者感兴趣的话,推荐去读原文,这里就不赘述。
网络结构
网络包括两个模块,如下图所示:
第一个模块称之为MOM,是Motion Module的缩写,整体是一个编码-解码的结构(受FlowNet启发),其目标是输出一个velocity图,进而将Kinect获取的9张raw图进行对齐。具体地,MOM对不同的相机函数所测量得到的raw相关进行处理,模块输入为9张没有对齐的raw图,同时输出8张光流图。另一个模块是MRM,是Multi-Reflection Module的缩写,这个模块基于kernel-predicting network(简称KPN)所设计。KPN的具体结构见Mildenhall等(2018)的工作。MRM为每一个像素输出9个空间各异的核,每一个核都与局部的raw测量有关,输出9个的目的是生成一个干净的raw测量,所谓的“干净”是指去除掉shot和MPI噪声。
表一表现了基础DNN结构不同变种的细节:
当使用MRM模块时,修改了LF2中的双边滤波部分,因为MRM已经执行过去噪点的过程。
MRM的输入是MOM的输出。训练的损失函数是raw相关测量的L2损失函数。
此后,使用L2深度损失函数对MRM进行finetune。
实验
MPI纠正
首先对MRM模块去除MPI的效果进行评估。
对比的baseline有LF2、DToF、Phasor。
对比的深度范围在[1.5m, 5m]。
由于Phasor对shot noise未做处理,因此在其生成深度图后再施加双边滤波进行去噪处理。
下图结果可见,DToF所产生的深度图精度要差一些。此外,还注意到LF2的中位误差是有偏的,这是因为LF2几乎没有对MPI进行处理,而这种有偏情况,或者说MPI所造成的误差,有效地被MRM减轻。总的来说,方法接近于Phasor的精度,且并不需要额外的硬件设备来制造非常高的频率(比如 1063.3MHz以及1034.1 MHz),事实上,MRM所需要的硬件是Kinect2,频率低于50MHz。
下图则展示了在FLAT数据集中典型场景各个方法的表现,其中,Phasor以及MRM在去除MPI上的效果远超过其他方法。
还注意到,高频对于噪声来说非常敏感。在实践中,使用双边滤波对Phasor的输出进行处理,尽管这有效地减少了随机噪声,但是却无法去除系统噪声(如由于物体移动造成的噪声),而这则会大大地增加Phasor的误差,相较之下,MRM则显得稳健的多。
此外,对于一些在真实场景下墙角的情况,MRM也能够很好的处理,这在后续的实验中将会介绍。
运动纠正以及消融实验
在这一小节中,通过消融实验对MOM以及MOM-MRM在FLAT测试集上的效果进行了评测。
比较了LF2、MOM以及MOM-MRM的深度重建效果,三者均采用了LF2的掩膜方式对不可靠的点进行滤除。
重建像素比例如下图所示,在某种程度上,我们可以将重建像素比例这一指标用于评测物体移动对结果的影响程度:
尽管MOM相对于LF2来说,似乎深度重建精度略高一些,但这并非其具备大优势之处,其主要的优势在于去除那些不可靠的像素,从而使得重建像素比例从93.56%提升至95.50%,在目视层面上,直观体现是补上了深度图上有洞的地方,使得深度图看起来更加的完整。
而MRM则进一步地提升了深度图的精度,以及重建完整性。
示意图见下图:
Putting Everything Together
不同方法在合成数据集以及真实数据集上的表现为:
MOM-MRM的DNN架构在NVIDIA TianV GPU上大概需要跑90ms。
文章表示,这样的DNN架构是经过了一番思考论证的,已然尝试过许多种架构,包括直接输出深度图的端到端的结构(Su 等人,2018),然而文章发现,直接输出深度图的结构的误差要大于其DNN结构,究其原因,端到端的结构需要网络学习从raw观测到深度的非线性映射,而不是利用已知的物理事实进行设计。
在下图中,则进一步地体现了MOM-MRM相对于LF2等方法的优势:
方法限制
- MRM的感受野为 72 ∗ 72 72 * 72 72∗72,其主要强调短距离的MPI纠正,对于长距离的MPI来说,应对能力相对弱一些;
- 数据集不包括镜面反射的物体,因此对于镜面反射的物体来说,无法进行深度估计;
- MOM无法对很大的运动进行处理,具体来说,对于遮挡而言并无效果,只是尽可能地减少运动伪影;
- 仅在室内光的情况下,对噪声进行仿真。
结论
运动、MPI和散粒噪声对ToF成像深度重建的精度有显著影响。文章证明,基于ToF相机的Raw测量数据,可以利用深度学习来减弱运动和MPI所带来的负面影响。
参考文献
[1] Xiang, L., Echtler, F., Kerl, C., Wiedemeyer, T., Lars, hanyazou, Gordon, R., Facioni, F., laborer2008, Wareham, R., Goldhoorn, M., alberth, gaborpapp, Fuchs, S., jmtatsch, Blake, J., Federico, Jungkurth, H., Mingze, Y., vinouz, Coleman, D., Burns, B., Rawat, R., Mokhov, S., Reynolds, P., Viau, P., Fraissinet-Tachet, M., Ludique, Billingham, J., Alistair: libfreenect2: Release 0.2 (April 2016)
[2] Su, S., Heide, F., Wetzstein, G., Heidrich, W.: Deep end-to-end time-of flight imaging. In: The IEEE Conference on Computer Vision and Pattern Recognition (CVPR). (June 2018)
[3] Mildenhall B, Barron J T, Chen J, et al. Burst denoising with kernel prediction networks[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018: 2502-2510.