• 55、MINE: Towards Continuous Depth MPI with NeRF for Novel View Synthesis


    简介

    github主页:https://github.com/vincentfung13/MINE
    在这里插入图片描述
    通过对单幅图像进行密集三维重建来进行新的视图合成和深度估计,通过引入神经辐射场(NeRF)对多平面图像(MPI)进行连续深度泛化。给定单一图像作为输入,MINE预测任意深度值的4通道图像(RGB和体积密度),共同重建相机截锥,填充遮挡内容。重建和内绘的截锥可以很容易地渲染成新颖的RGB或使用可微渲染的深度视图

    贡献点

    1. 从单一图像执行连续和 occlusion-inpainted 的3D重建。
    2. MINE是通过引入NeRF思想对MPI进行持续的深度推广。
    3. 在室内外视图合成和深度估计方面明显优于现有的先进方法。

    实现流程

    在这里插入图片描述
    网络是一个编码器-解码器架构,它接受输入图像并输出重建的源相机截锥。然后,将重建的源摄像机截锥渲染成一个新的视图

    3D Representation

    Planar Neural Radiance Field

    利用透视几何图形来表示相机的截锥。设像平面上的像素坐标为 [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]TR2 的RGB值 c z : [ x , y ] T → R 3 c_z: [x, y]^T→R^3 cz:[x,y]TR3 和体积密度 σ z : [ x , y ] T → R + σ_z: [x, y]^T→R+ σz:[x,y]TR+ 组成。体积密度 σ(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)。称其为平面神经辐射场,因为使用平面而不是射线的截锥。

    Volume Rendering

    上面定义的 C 和 σ 是连续二维函数,表示锥体中所有可能的位置.
    从两个方面对平面亮度场进行离散

    1. 锥体由N个平面组成 { c z i , σ z i ∣ i = 1 , ⋅ ⋅ ⋅ , N } \{c_{zi}, σ_{zi} | i = 1,···,N\} {cziσzii=1⋅⋅⋅N}
    2. 每个平面 ( c z i , σ z i ) (c_{zi}, σ_{zi}) (cziσzi)简化为深度为zi的4通道图像平面

    离散化只是为了方便渲染。离散化表示仍然能够在任何3D位置获得RGBσ值,首先,每个平面可以位于任意深度 z i ∈ [ z n , z f ] z_i∈[z_n, z_f] zi[zn,zf],其次,在每个4通道平面上亚像素采样是微不足道的.

    Rendering the input image I ^ s r c \hat{I}_{src} I^src

    在这里插入图片描述

    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的方法进行渲染
    在这里插入图片描述

    Rendering a novel view I ^ t g t \hat{I}_{tgt} I^tgt

    在这里插入图片描述
    在摄像机旋转 R ∈ R 3 × 3 R∈R^{3×3} RR3×3,平移 t ∈ R 3 t∈R^3 tR3 的情况下,渲染到一个新视图需要三个步骤

    1. 应用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}) (cziσzi)只是到目标相机的投影

    2. 体绘制依赖于每个位置的密度 σ 和沿射线的每个点之间的距离
      在这里插入图片描述
      假设一条射线从目标相机原点出发,与目标图像相交于像素坐标 [ 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)表示两个交点之间的欧氏距离

    3. 将c, σ, δ替换为 c’, σ’, δ’,应用式2,可得到一个新的视图。

    Network and Training Design

    离散平面亮度场需要一组深度样本 { z i ∣ i = 1 , ⋅ ⋅ ⋅ , N } \{z_i | i = 1,···,N\} {zii=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} 进行随机抽样。

    Encoder-Decoder Structure

    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}

    Disparity Encoding

    直接将 d i d_i di 输入解码器性能较差,在输入到解码器之前对 d i d_i di 应用了一个编码函数 γ: R→ R L R^L RL
    在这里插入图片描述

    Supervision with RGB Videos

    使用多视图图像或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 进行比较。

    Scale Calibration

    由于系统的输入是单幅图像,所以深度标度是模糊的,高达标度因子 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 给出标定后的平移量。

    Loss Functions

    损失函数中有四项: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为参数

    RGB L1 and SSIM loss

    在这里插入图片描述
    鼓励合成的目标图像与真值 I t g t I_{tgt} Itgt 匹配。和 I t g t I_{tgt} Itgt 都是大小为 H × W 的3通道RGB图像。

    Edge-aware disparity map smoothness loss

    对合成的视差图施加一个边缘感知的平滑损失,以惩罚原始图像平滑位置上的视差的剧烈变化,并正确对齐视差图和原始图像中的边缘
    在这里插入图片描述
    其中∂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^

    Sparse disparity loss

    在采用 SfM 对输入图像/视频进行预处理以解决尺度模糊的情况下,利用稀疏视差损失来促进深度/视差预测

    尽管如此,请注意这是可选的。特别是在KITTI等尺度固定为s = 1的数据集中,不需要SfM,稀疏视差损失也不适用。遵循对数视差样式
    在这里插入图片描述
    需要缩放视差图,因为平移 t 是用 s 校准的。平移和深度应该一起校准

    效果

    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    Spring 框架中都用到了哪些设计模式:单例模式、策略模式、代理模式
    数据结构之图(有向无环图结构表达式)
    (附源码)计算机毕业设计SSM居民个人健康服务平台
    浅析搭建视频监控汇聚平台的必要性及场景应用
    Leetcode(69)——x 的平方根
    Windows配置Redis远程访问
    详解容灾架构中的数据复制技术
    python获取上一年,上一月,上一日relativedelta
    椭圆曲线算法
    JavaScript之while和do while循环的用法
  • 原文地址:https://blog.csdn.net/weixin_50973728/article/details/127127728