简介

主页:https://liuyuan-pal.github.io/NeuRay/

黄色:输入视图
绿色:测试视图
蓝色:物体表面
(a)无遮挡情况下,局部图像特征在表面点上是一致的。
(b)由于遮挡,表面点的局部图像特征不一致。
©非表面点的局部图像特征不一致。

由于特征的一致性,传统方法可以正确地为(a)中的曲面点分配较大的密度。但是,当(b)和©的特征不太一致时,这些方法要正确确定密度是比较困难的。也就是说,空间的一个点,由于遮挡原因导致从不同输入视图得到的信息不一致。

因此,关键的挑战是如何估计一个看不见的场景的可见性。这是一个先有鸡还是先有蛋的问题,因为能见度的估计需要知道表面位置,而估计的能见度是为了在辐射场建设中更好地估计表面。为了打破这种循环,应用多视图立体(MVS)算法,如cost volume constructionpatch-match stereo,来重建场景几何形状,然后从重建几何形状中提取NeuRay的像素对齐特征向量。最后,将NeuRay应用于能见度的计算,以改进辐射场的构造。

为了降低计算复杂度,在NeuRay中使用累积分布函数(Cumulative Distribution Function, CDF)直接参数化可见性,避免了沿射线的密度累积,只需要 N 个网络正向传递就可以计算所有 N 个输入视图的可见性。

贡献点

  1. 在不进行特定场景优化的情况下,已经产生了令人满意的渲染结果,大大优于其他泛化方法
  2. 与其他泛化模型相比,对NeuRay进行微调可以获得更好的结果,并且获得比NeRF更好的渲染质量

可以在NeuRay的帮助下通过缓存输入视图上的特征和预测粗糙的表面位置来加快渲染,渲染一个800 × 600大小的图像需要花费约3秒

实现流程


从输入视图构建 on-the-fly 辐射场,通过体绘制合成测试视图图像。首先对测试射线上的点进行采样,然后聚合输入视图的局部特征,确定采样点的alpha值和颜色,最后通过体绘制的方法积累颜色,计算输出颜色。在输入视图上构造NeuRay来预测样本点的可见性,从而允许在这些样本点上进行遮挡感知特征聚合。

输入一个已知相机姿态的场景的 N 个输入视图,目标是在任意新的测试视图上渲染图像

Volume rendering

从测试视图发射的摄像机射线称为测试射线,其参数化为 p(z) = o+zr , z∈ R + R^+ R+,其中 o 为摄像机中心的起点,r 为射线的单位方向向量,采样 K t K_t Kt​ 点 { p i ≡ p ( z i ) ∣ i = 1 , … , K t } \{p_i ≡ p(z_i) | i = 1,…, K_t\} {pi​≡p(zi​)∣i=1,…,Kt​},随着 z i z_i zi​ 沿射线的增加。该相机射线的相关像素的颜色表示为

c ∈ R 3 c∈R^3 c∈R3 是像素的渲染颜色, c i ∈ R 3 c_i∈R^3 ci​∈R3 是采样点 p i p_i pi​ 的颜色, h i h_i hi​∈R 是光线在深度 z i z_i zi​ 之前没有被任何深度遮挡,并且击中范围为 ( z i , z i + 1 ) (z_i, z_{i+1}) (zi​,zi+1​) 的曲面的概率。

α i α_i αi​ 是深度范围 ( z i , z i + 1 ) (z_i, z_{i+1}) (zi​,zi+1​) 内的 α 值

Occlusion-aware radiance field construction

Radiance field construction on-the-fly

与 NeRF 学习特定场景的神经辐射场相比,泛化渲染方法通过聚集局部特征动态构建辐射场,给定射线上三维点 p i ∈ R 3 p_i∈R^3 pi​∈R3,泛化渲染方法首先通过 CNN 提取输入视图上的特征,然后通过在该点上聚合输入视图上的特征

其中 f i , j f_{i,j} fi,j​ 是投影在第 j 个输入视图上的样本点 p i p_i pi​ 的局部图像特征,M 是将来自不同视图的特征聚合在一起产生特征 f i f_i fi​ 的网络。然后,由其他网络从聚合特征 f i f_i fi​ 中解码出这个点 p i p_i pi​ 的alpha值 α i α_i αi​ 和颜色 c i c_i ci​

Occlusion-aware construction

与以往方法一样,该方法也能实时地构建辐射场,预测了一个可见性项 v i , j v_{i,j} vi,j​,表示第 j 个输入视图对于遮挡感知特征聚合的这个3D点 p i p_i pi​ 是可见的或不可见的

聚合网络 M 能够关注聚合特征 f i f_i fi​ 中的可见视图,减少了不可见视图的干扰

NeuRay representation

给定从输入视图发射的摄像机射线(称为输入射线),NeuRay能够预测可见性函数 v(z),该函数指示深度为 z 的点对该输入射线可见或不可见。

在每个输入视图上,NeuRay用一个可见性特征映射 G ∈ R H × W × C G∈R^{H×W ×C} G∈RH×W×C表示,设 g ∈ R C g∈R^C g∈RC 为 G 上给定输入射线的对应特征向量,将从 g 上计算该输入射线的可见性 v(z),那么可见性函数 v(z) 应在 z 上不递增且 0≤v(z)≤1

NeuRay在每个输入视图上都包含一个可见性特征映射G。G的每一个特征向量 g 都可以被MLP解码为 logistics distribution 的混合。该分布说明了从 g 的位置发射的输入射线的可见性函数 v(z), 是深度 z 之后曲线下的面积。

Visibility from occlusion probability

用累积密度函数(CDF) t(z) 表示可见性函数 v(z) = 1−t(z)

其中混合 N l N_l Nl​ 个 logistics distributions, μ i μ_i μi​ 为第 i 个 logistics distributions 的均值, σ i σ_i σi​ 为标准差, w i w_i wi​ 为混合权重, ∑ i w i = 1 \sum_i w_i = 1 ∑i​wi​=1,S(·) 为 sigmoid 函数。

所有参数 [ μ i , σ i , w i ] [μ_i, σ_i, w_i] [μi​,σi​,wi​]= F (g) 通过MLP F从特征 g 中解码,t(z) 是一个非递减的CDF,因此 1−t(z) 是一个有效的可见性函数。

t(z)实际上对应的是一个遮挡概率,即输入射线在深度 z 之前被遮挡,称之为对应的概率密度函数(PDF)命中概率密度。能见度 v(z) 实际上是在 z 之后PDF曲线下的面积。一般情况下,射线只会击中一个表面,所以一个 logistics distributions 就足够了。然而,当光线击中半透明表面或表面边缘时,使用混合的 logistics distributions 可以提高性能。

或者,可以用NeRF类密度参数化可见性。然而,使用这种策略计算可见性的计算量太大。在这个公式中,直接用MLP φ 从 g 解码密度d(z) = φ(z;g)。为了计算可见性 v(z),需要先对 z k < z z_k < z zk​<z 的 K r K_r Kr​ 深度 { z k } \{z_k\} {zk​} 采样,计算它们的密度 d ( z k ) d(z_k) d(zk​) 和对应的alpha值 α k = 1 − e x p ( − R e L U ( d k ) ) α_k =1−exp(−ReLU(d_k)) αk​=1−exp(−ReLU(dk​)) ,最后得到可见性 v ( z ) = ∏ k = 1 K r ( 1 − α k ) v(z) = \prod^{K_r}_{k=1}(1−α_k) v(z)=∏k=1Kr​​(1−αk​) 。虽然这个公式是一个有效的可见性函数,但它在计算上是不切实际的,因为它需要 K r K_r Kr​ 次 φ 的计算来计算输入视图对某个点的可见性

Generalize with NeuRay

在不可见场景中渲染时, 从cost volume constructionpatch-match stereo中提取可见性特征图 G。在每个输入视图上构建成本卷时, 使用它的 N s N_s Ns​ 个相邻输入视图来构建一个 H × W × D 大小的成本卷。然后在成本卷上应用一个CNN,生成该输入视图的可见性特征映射 G ∈ R H × W × C G∈R^{H×W ×C} G∈RH×W×C。

或者,也可以直接从patch-match stereo估计的深度图中提取特征图 G,其中估计的大小为 H × W 的深度图经过一个CNN处理,生成可见性特征图 G。

  1. 在输入视图上,通过 MVS 算法估计cost volumes 或者 depth maps,CNN使用它们预测可见性特征图 G。
  2. 可见性特征映射用于计算输入视图到3D点的可见性 v i , j v_{i,j} vi,j​
  3. 对于3D点,将输入视图中的局部特征 f i , j f_{i,j} fi,j​ 与可见性 v i , j v_{i,j} vi,j​ 结合起来,以计算这些点的alpha值和颜色。
  4. 体渲染应用于累积alpha值和颜色来合成图像。

整个渲染框架可以在训练场景上进行预训练,然后直接应用于不可见的场景进行渲染。为了预训练渲染框架,在训练场景中随机选择一个视图作为测试视图,并使用其他视图作为输入视图来渲染所选的测试视图

c 为预测颜色, c g t c_{gt} cgt​ 为真实颜色

Finetune with NeuRay

渲染框架可以在特定场景上进一步微调,以在该场景上获得更好的渲染质量。在给定的场景中,随机选择一个输入视图作为伪测试视图,并使用其他输入视图呈现伪测试视图进行训练。此外,增加NeuRay的可训练参数一致性损失

在对场景进行微调时,每个输入视图上,构造的 constructed cost volume 或者( the estimated depth map) 与 可见性特征图 G 之间的一个中间特征图 G ’ ∈ R H × W × C G’∈R^{H×W ×C} G’∈RH×W×C 作为该输入视图的 NeuRay 的可训练参数,把 G’ 之前的卷积层称为初始化网络,把 G’ 和 G 之间的卷积层称为可见性编码器。

参数 G’ 不是从头开始训练,而是由初始化网络使用构造的代价体积或估计的深度图进行初始化,然后,丢弃初始化网络,对 G’ 及其他网络参数进行优化调优

使 G’ 可训练并将可见性编码器应用于可训练的 G’ 上,可以提高可见性预测,因为可见性编码器中的卷积层在 G’ 上关联邻近像素的特征向量,这些邻近像素通常具有相似的可见性。

除了渲染损失,还在微调中使用一致性损失。由于构建的亮度场和 NeuRay 的可见性都描述了场景的几何形状,可以在微调时加强它们之间的一致性。具体来说,在微调中,在伪测试射线上采样点 p i ≡ p ( z i ) p_i≡p(z_i) pi​≡p(zi​),并计算从构造的辐射场中采样点的命中概率 h i h_i hi​ 。同时,伪测试视图也是一个输入视图,在这个输入视图上有一个NeuRay表示来解码这个伪测试射线的分布 t(z)。基于 t(z),在每个采样点 p i p_i pi​ 上计算一个新的命中概率 h ~ i \tilde{h}_i h~i​

其中 z i z_i zi​ 是点的深度。因此,可以强制 h ~ i \tilde{h}_i h~i​ 和 h i h_i hi​ 之间的一致性来构造一个损失

CE是交叉熵损失。

对特定场景进行优化可以细化网络参数,以更好地聚合特征,从而更好地构建场景上的辐射场。进一步加入NeuRay的可训练参数一致性损失,使渲染框架能够细化NeuRay表示,带来更好的遮挡推断,显著提高了渲染质量

Speeding up rendering with NeuRay

在一条测试射线上,大多数采样点 p i p_i pi​ 的命中概率 h i h_i hi​ 几乎为零,因此不影响输出颜色。然而,大部分计算都浪费在这些空点的特征聚合上。一个粗略的碰撞概率 h ^ i \hat{h}_i h^i​ 可以直接从NeuRay用很少的计算。然后,只在 h ^ i \hat{h}_i h^i​ 较大的点周围采样很少的细点进行特征聚合。

为了计算测试射线上定义的命中概率 h ^ i \hat{h}_i h^i​,首先在输入射线上定义深度范围 ( z 0 , z 1 ) (z_0, z_1) (z0​,z1​) 中的alpha值 α ˉ \bar{α} αˉ

然后,我们计算样本点 p i p_i pi​上的 h ^ i \hat{h}_i h^i​

其中 z i , j z_{i,j} zi,j​ 是第 j 个输入视图上的点的深度, l i = z i + 1 − z i l_i = z_{i+1}−z_i li​=zi+1​−zi​ 是点 p i p_i pi​ 与测试射线上的后续点 p i + 1 p_{i +1} pi+1​ 之间的距离。 h ^ \hat{h} h^ 的计算非常快,因为它只涉及输入视图上 t(z) 的简单组合。

效果



59、Neural Rays for Occlusion-aware Image-based Rendering相关推荐

  1. 论文理解之增加换脸效果 FaceShifter: Towards High Fidelity And Occlusion Aware Face Swapping

    论文:FaceShifter: Towards High Fidelity And Occlusion Aware Face Swapping 论文地址:https://arxiv.org/pdf/1 ...

  2. Occlusion Aware Facial Expression RecognitionUsing CNN With Attention Mechanism阅读笔记

    论文链接:https://ieeexplore.ieee.org/document/8576656 代码链接:https://github.com/mysee1989/PG-CNN 主要目的 通过注意 ...

  3. 论文阅读:Semantic Aware Attention Based Deep Object Co-segmentation(ACCV2018)

    协同分割论文:Semantic Aware Attention Based Deep Object Co-segmentation(ACCV2018) 论文原文     code 目录 1.简介 2. ...

  4. 《Occlusion Aware Facial Expression RecognitionUsing CNN With Attention Mechanism》论文阅读(2019TIP)

    1. 本论文提出的ACNN框架 ACNN将人脸图像作为输入,并使用VGG-16网络对图像进行编码.然后,对于pACNN,通过区域分解方案将来自最后一个卷积层(VGG16网络中的conv4_2)的特征映 ...

  5. 【深度学习人类语言处理】1 课程介绍、语音辨识1——人类语言处理六种模型、Token、五种Seq2Seq Model(LAS、CTC、RNN-T、Neural Transducer、MoChA)

    Deep Learning for Human Ianguage Processing 1. DLHLP-Introduction 1.1 概述 1.2 六种模型与应用 1.2.1 语音到文本 1.2 ...

  6. 59、crontab用法简介

    1.格式 minute hour day month dayofweek command 2.示例 1)12 3 * * * root tar czf /usr/local/backups/daily ...

  7. 59、可燃材料仓库的防火检查要求

    可燃材料仓库,应满足一下防火要求: 1.可燃材料仓库内宜使用低温照明灯具,不应使用卤钨灯等高温照明灯具: 2.对照明灯具的发热部件采取隔热等防火措施: 3.配电箱应设置在仓库外: 4.开关应设置在仓库 ...

  8. 1、Neural Rendering

    Rendering简介 Photo-realistic Image Synthesis Need 3D Content for Rendering Computer Vision for Recons ...

  9. 【SpringBoot】59、SpringBoot使用Sa-Token-Quick-Login插件快速登录认证

    一.解决的问题 Sa-Token-Quick-Login 可以为一个系统快速的.零代码 注入一个登录页面 试想一下,假如我们开发了一个非常简单的小系统,比如说:服务器性能监控页面, 我们将它部署在服务 ...

最新文章

  1. 独家 | 磁共振斑块成像的技术研发、案例与数据挑战(附视频)
  2. AC日记——热浪 codevs 1557 (最短路模板题)
  3. XFire WebService demo
  4. 西南交大计算机专硕就业怎么样,国内四所交通大学,有985也有211,就业、深造容易,值得报考...
  5. 32 commons-lang包学习
  6. Java多线程常用方法 wait 和 notify
  7. WebCrack:网站后台弱口令批量检测工具
  8. 【CodeForces - 1027B 】Numbers on the Chessboard (没有营养的找规律题,无聊题)
  9. 如何将知识引入机器学习模型提升泛化能力?
  10. 一張表的數據導入到另一張表
  11. Project Pacific的第一次接触(转)
  12. 外文翻译原文附在后面_劳动合同翻译都有哪些技巧和注意事项?
  13. 有了malloc/free为什么还要new/delete ?
  14. Configuration Manager 2012 R2系统需求
  15. R-CNN解读+代码梳理
  16. java po vo bo是什么以及_Java中VO , PO , BO, DAO ,POJO是什么意思
  17. Win7旗舰版 安装步骤
  18. 计算机怎么怎么打文件夹加密文件,电脑文件夹怎么加密 4种文件夹加密方法
  19. 宝塔linux面板 伪静态,AMH主机面板伪静态规则大全,
  20. java判断一个点在不在直线上,判断点在直线左侧或者右侧

热门文章

  1. day3-代理和selenium
  2. FPGA设计中inout端口信号的仿真测试
  3. UEFI源码学习01-ARM AARCH64编译、ArmPlatformPriPeiCore(SEC)
  4. 用已有数据利用Matlab画折线图(个人笔记)
  5. 为什么爆火的是 ChatGPT ?OpenAI 做对了什么?
  6. tomcat启动闪退问题
  7. 内衣报白?内衣报白?内衣报白?
  8. ubuntu安装mysql5.7_Ubuntu安装mysql5.7(诲人不倦,记点干货)
  9. Python APScheduler 定时任务详解
  10. android ndk: aborting . stop,编译时出现android ndk aborting stop怎么破