github主页:https://github.com/vincentfung13/MINE
通过对单幅图像进行密集三维重建来进行新的视图合成和深度估计,通过引入神经辐射场(NeRF)对多平面图像(MPI)进行连续深度泛化。给定单一图像作为输入,MINE预测任意深度值的4通道图像(RGB和体积密度),共同重建相机截锥,填充遮挡内容。重建和内绘的截锥可以很容易地渲染成新颖的RGB或使用可微渲染的深度视图
、
贡献点
网络是一个编码器-解码器架构,它接受输入图像并输出重建的源相机截锥。然后,将重建的源摄像机截锥渲染成一个新的视图
利用透视几何图形来表示相机的截锥。设像平面上的像素坐标为 [x, y]>∈
R
2
R^2
R2,针孔相机内禀坐标为 K∈
R
3
×
3
R^{3×3}
R3×3。摄像机截锥中的3D点表示为
[
x
,
y
,
z
]
T
[x, y, z]^T
[x,y,z]T,其中 z 是该点相对于摄像机的深度。定义从透视三维坐标
[
x
,
y
,
z
]
T
[x, y, z]^T
[x,y,z]T 到笛卡尔坐标
[
x
,
y
,
z
]
T
[x, y, z]^T
[x,y,z]T的转换 C(·) 为
可以在相机截锥内采样任意数量的平面,其深度值
z
∈
[
z
n
,
z
f
]
z∈[z_n, z_f]
z∈[zn,zf]。每个平面由该平面上每个点
[
x
,
y
]
T
∈
R
2
[x, y]^T∈R^2
[x,y]T∈R2 的RGB值
c
z
:
[
x
,
y
]
T
→
R
3
c_z: [x, y]^T→R^3
cz:[x,y]T→R3 和体积密度
σ
z
:
[
x
,
y
]
T
→
R
+
σ_z: [x, y]^T→R+
σz:[x,y]T→R+ 组成。体积密度 σ(x, y, z) 表示射线在
[
x
,
y
,
z
]
T
[x, y, z]^T
[x,y,z]T 处终止于无穷小粒子的微分概率。在深度
[
z
n
,
z
f
]
[z_n, z_f]
[zn,zf] 范围内的摄像机截锥是连续重建的,因为任何位置
[
x
,
y
,
z
]
T
[x, y, z]^T
[x,y,z]T 的RGB c(x, y, z) 和 σ(x, y, z) 是通过在深度 z 处采样,并查询
c
z
(
x
,
y
)
c_z(x, y)
cz(x,y) 和 σ(x, y, z)。称其为平面神经辐射场,因为使用平面而不是射线的截锥。
上面定义的 C 和 σ 是连续二维函数,表示锥体中所有可能的位置.
从两个方面对平面亮度场进行离散
离散化只是为了方便渲染。离散化表示仍然能够在任何3D位置获得RGBσ值,首先,每个平面可以位于任意深度 z i ∈ [ z n , z f ] z_i∈[z_n, z_f] zi∈[zn,zf],其次,在每个4通道平面上亚像素采样是微不足道的.
NeRF 渲染公式
是平面 i + 1 到 i 的距离图
体渲染需要数据集合为 { ( c z i , σ z i , z i ) ∣ i = 1 , ⋅ ⋅ ⋅ , N } \{(c_{zi}, σ_{zi}, z_i) | i = 1,···,N\} {(czi,σzi,zi)∣i=1,⋅⋅⋅,N}, ( c z i , σ z i ) (c_{zi}, σ_{zi}) (czi,σzi) 是网络的输出,以 I s r c I_{src} Isrc(特征图) 和 d i = 1 / z i d_i = 1/z_i di=1/zi(深度/视差)为输入
在透视几何图形中采样视差
d
i
=
1
/
z
i
{d_i = 1/z_i}
di=1/zi,
[
d
n
,
d
f
]
[d_n, d_f]
[dn,df] 被划分到 N 个均匀间隔的容器中,并从每个容器中均匀抽取一个样本
抽样策略确保网络在训练过程中暴露在截锥体中的每个深度值,从而学习一个连续的
(
c
z
i
,
σ
z
i
)
(c_{zi}, σ_{zi})
(czi,σzi),输入图像的深度图可以用类似于Eq. 2的方法进行渲染
在摄像机旋转
R
∈
R
3
×
3
R∈R^{3×3}
R∈R3×3,平移
t
∈
R
3
t∈R^3
t∈R3 的情况下,渲染到一个新视图需要三个步骤
应用homography warpingW(.) 建立源像素坐标
[
x
s
,
y
s
]
T
[x_s, y_s]^T
[xs,ys]T 与目标像素坐标
[
x
t
,
y
t
]
T
[x_t, y_t]^T
[xt,yt]T 的对应关系。遵循标准inverse homography来定义 W(.)。目标平面中的像素坐标
[
x
t
,
y
t
]
T
[x_t, y_t]^T
[xt,yt]T 与源平面中的像素坐标
[
x
s
,
y
s
]
T
[x_s, y_s]^T
[xs,ys]T 的对应关系由
其中
n
=
[
0
,
0
,
1
]
T
n =[0,0,1]^T
n=[0,0,1]T 是前平行平面
(
c
z
i
,
σ
z
i
)
(c_{zi}, σ_{zi})
(czi,σzi) 相对于源摄像机的法向量
在相对于源相机,深度为 z i z_i zi 的平面,将上面的弯曲表示为 [ x s , y s ] T = W z i ( x t , y t ) [x_s, y_s]^T = W_{zi} (x_t, y_t) [xs,ys]T=Wzi(xt,yt),,然后计算目标坐标系上的平面投影 ( c z i ′ , σ z i ′ ) (c'_{zi}, σ'_{zi}) (czi′,σzi′) 为: c z i ′ ( x t , y t ) = c z i ( x s , y s ) c'_{zi}(x_t, y_t) = c_{zi} (x_s, y_s) czi′(xt,yt)=czi(xs,ys), σ z i ′ ( x t , y t ) = σ z i ( x s , y s ) σ'_{zi} (x_t, y_t) = σ_{zi} (x_s, y_s) σzi′(xt,yt)=σzi(xs,ys)
N个平面是与源相机正面平行的,因此 ( c ’ z i , σ ’ z i ) (c’_{zi}, σ’_{zi}) (c’zi,σ’zi)只是到目标相机的投影
体绘制依赖于每个位置的密度 σ 和沿射线的每个点之间的距离
假设一条射线从目标相机原点出发,与目标图像相交于像素坐标
[
x
t
,
y
t
]
T
[x_t, y_t]^T
[xt,yt]T,以便更好地理解式6。这条射线相对于源相机在像素坐标
W
z
i
(
x
t
,
y
t
)
W_{zi} (x_t, y_t)
Wzi(xt,yt) 处与
(
c
z
i
,
σ
z
i
)
(c_{zi}, σ_{zi})
(czi,σzi) 平面相交
光线在源相机像素坐标 W z i + 1 ( x t , y t ) W_{zi+1} (x_t, y_t) Wzi+1(xt,yt) 处与 ( c z i + 1 , σ z i + 1 ) (c_{zi+1}, σ_{zi+1}) (czi+1,σzi+1) 平面相交。 δ z i ′ ( x t , y t ) δ'_{zi} (x_t, y_t) δzi′(xt,yt)表示两个交点之间的欧氏距离
将c, σ, δ替换为 c’, σ’, δ’,应用式2,可得到一个新的视图。
离散平面亮度场需要一组深度样本 { z i ∣ i = 1 , ⋅ ⋅ ⋅ , N } \{z_i | i = 1,···,N\} {zi∣i=1,⋅⋅⋅,N}和 4 通道图像 { ( c z i , σ z i ) ∣ i = 1 , ⋅ ⋅ ⋅ , N } \{(c_{zi}, σ_{zi}) | i = 1,···,N\} {(czi,σzi)∣i=1,⋅⋅⋅,N}。根据式3对深度样本 { z i } \{z_i\} {zi} 或视差样本 { d i = 1 / z i } \{d_i = 1/z_i\} {di=1/zi} 进行随机抽样。
4通道图像 { ( c z i , σ z i ) } \{(c_{zi}, σ_{zi})\} {(czi,σzi)} 是来自网络的预测,该网络以单幅图像和 { z i } \{z_i\} {zi} 为输入。
使用Resnet-50作为编码器,将图像作为输入,并产生一系列特征映射
解码器的设计类似于Monodepth2。该解码器以特征图和单视差值 d i = 1 / z i d_i = 1/z_i di=1/zi 为输入,生成4通道图像 ( c z i , σ z i ) (c_{zi}, σ_{zi}) (czi,σzi)。
在训练和推理中,编码器对每个图像(或每小批图像)只运行一次,而解码器运行 N 次,生成离散平面集 { ( c z i , σ z i ) ∣ i = 1 , ⋅ ⋅ ⋅ , N } \{(c_{zi}, σ_{zi}) | i = 1,···,N\} {(czi,σzi)∣i=1,⋅⋅⋅,N}
直接将
d
i
d_i
di 输入解码器性能较差,在输入到解码器之前对
d
i
d_i
di 应用了一个编码函数 γ: R→
R
L
R^L
RL
使用多视图图像或RGB视频训练网络,在训练过程中,将一个输入图像 I s r c I_{src} Isrc 输入到网络中,然后根据新视图相机旋转 R和缩放校准的相机平移 t’ 渲染到 ( i ^ t g t , z ^ t g t ) (\hat{i}_{tgt}, \hat{z}_{tgt}) (i^tgt,z^tgt) 中。监控的核心是通过将预测结果 与 真实目标图像 I t g t I_{tgt} Itgt 进行比较。
由于系统的输入是单幅图像,所以深度标度是模糊的,高达标度因子 s∈R+。截锥重建的范围 [ z n , z f ] [z_n, z_f] [zn,zf] 被预先定义为一个超参数,将其设为 z n = 1 , z f = 1000 z_n = 1, z_f = 1000 zn=1,zf=1000。不是缩放3D表示,而是在训练和推断中缩放摄像机转换 t 为 t’。
为了解决比例因子 s,在视频运动结构(SfM)的稀疏3D点和Eq. 4 的合成深度图之间执行比例校准。具体来说,在每个视频上使用 COLMAP 运行 SfM,为每个图像获得一个稀疏点集
P
s
=
{
(
x
j
,
y
j
,
z
j
)
}
P_s = \{(x_j, y_j, z_j)\}
Ps={(xj,yj,zj)} 。这里的坐标遵循相同的透视几何结构,即
[
x
j
,
y
j
]
T
[x_j, y_j]^T
[xj,yj]T 是图像上的像素坐标,
z
j
z_j
zj 是对应的3D点的深度。将源图像输入到网络中,并使用公式4渲染预测的深度图后,比例尺估计为
最后由 ’ = t·s 给出标定后的平移量。
损失函数中有四项:RGB L1损失、
L
L
1
L_{L1}
LL1、 RGB SSIM损失Lssim、边缘感知视差图平滑性损失 $L_{smooth},可选稀疏视差损失
L
d
L_d
Ld,总损失为
λ
L
1
,
λ
s
s
i
m
,
λ
s
m
o
o
t
h
,
λ
d
λ_{L1}, λ_{ssim}, λ_{smooth} ,λ_{d}
λL1,λssim,λsmooth,λd为参数
鼓励合成的目标图像与真值
I
t
g
t
I_{tgt}
Itgt 匹配。和
I
t
g
t
I_{tgt}
Itgt 都是大小为 H × W 的3通道RGB图像。
对合成的视差图施加一个边缘感知的平滑损失,以惩罚原始图像平滑位置上的视差的剧烈变化,并正确对齐视差图和原始图像中的边缘
其中∂x 和 ∂y 是图像梯度,
D
^
∗
=
D
^
/
D
ˉ
\hat{D}^∗=\hat{D} / \bar{D}
D^∗=D^/Dˉ是均值归一化视差,其中
D
^
=
1
/
Z
^
\hat{D} = 1/\hat{Z}
D^=1/Z^。
在采用 SfM 对输入图像/视频进行预处理以解决尺度模糊的情况下,利用稀疏视差损失来促进深度/视差预测
尽管如此,请注意这是可选的。特别是在KITTI等尺度固定为s = 1的数据集中,不需要SfM,稀疏视差损失也不适用。遵循对数视差样式
需要缩放视差图,因为平移 t 是用 s 校准的。平移和深度应该一起校准