当前位置: 首页 > news >正文

论文阅读《Block-NeRF: Scalable Large Scene Neural View Synthesis》

论文地址:https://arxiv.org/pdf/2202.05263.pdf
复现源码:https://github.com/dvlab-research/BlockNeRFPytorch


概述

  Block-NeRF是一种能够表示大规模环境的神经辐射场(Neural Radiance Fields)的变体,将 NeRF 扩展到渲染跨越多个街区的城市规模场景。该方法将场景分解为单独训练的 NeRF,使渲染时间与场景大小解耦,并允许对环境进行每个街区的更新。Block-NeRF为每个单独的 NeRF 添加外观嵌入(appearance embeddings)、学习姿态优化(learned pose refinement)和可控曝光(controllable exposure),并引入了一种在相邻 NeRF 之间对齐外观(aligning appearance)方法来融合不同场景信息。
在这里插入图片描述


模型架构

在这里插入图片描述
  将场景分为多组Block-NeRF,每个Block可以并行独立训练,并在推理过程中进行融合。使得可以对单独的block更新而无需对整个场景进行重新训练。在此过程中,动态选择相关的 Block-NeRF 进行渲染,在跨越场景时以平滑的方式合成场景。为了实现这种平滑的合成方式,优化了Appearance代码来适应照明条件,并使用每个Block-NeRF到新视图的距离来计算插值权值。

Block 大小与位置

  在每个十字路口放置一个Block-NeRF,覆盖十字路口本身与任意连接街道的75%的场景,使得任何两个相邻的街区之间有50%的场景重叠。

独立Block-NeRF的训练过程

在这里插入图片描述

外观编码:使用 MLP 来学习不同外观变化的条件,如不同的天气与光照条件。还可以通过控制外观编码(appearance embedding)来对不同环境进行线性插值,得到不同条件下的环境信息(如多云和晴朗的天空,或者白天与晚上),如图3与图4所示:
在这里插入图片描述
位姿优化:Learned Pose Refinement是通过在每个Block-NeRF中训练一个额外的神经网络来实现的,这个神经网络可以根据输入的图像和初始的相机姿态,输出一个修正后的相机姿态。使得Block-NeRF就可以利用更准确的相机姿态来生成更高质量的新视角图像。
输入图像曝光:将相机曝光信息输入到模型的外观预测部分,使得NeRF补偿视觉上的差异,使用 4 层的 sinsinsin 来对曝光信息进行编码。
在这里插入图片描述
瞬态(移动)物体:Transient Objects是指在训练图像中出现的临时物体,如行人、车辆等,它们会影响Block-NeRF学习场景的静态结构,因为它们会导致视角不一致。通过以下步骤来消除场景中的瞬态物体的影响:

  • 首先,对于每个训练图像,使用一个分割算法来检测并去除Transient Objects,得到一个纯净的背景图像。
  • 然后,对于每个Block-NeRF,使用去除了Transient Objects的背景图像来训练神经网络,从而学习场景的静态结构。
  • 最后,在渲染新视角图像时,使用原始的训练图像(包含Transient Objects)作为输入,并将分割算法得到的掩码作为额外的输入送入Block-NeRF中,从而在输出图像中保留或去除Transient Objects。
    这样做的好处是,Block-NeRF可以灵活地处理不同场景下的Transient Objects,并且可以在渲染时根据用户需求选择是否显示它们。
    场景可见性预测:Visibility Prediction的具体实现是这样的:
  • 首先,对于每个Block-NeRF,构建一个小的多层感知机(MLP)fvf_vfv ,以位置信息 xxx 和方向信息 ddd 作为输入,用来学习样本点可见性的近似值。
  • 然后,对于每个Block-NeRF,使用其训练图像中的采样点作为输入,计算其可见性近似值,并将其与由密度函数得到的透射率TiT_iTi作为监督信号进行训练。
  • 最后,在合并多个Block-NeRF时,使用 fvf_vfv 来判断一个给定的场景区域是否对该Block-NeRF可见,并根据可见性近似值来加权不同Block-NeRF的输出颜色。
    Visibility Prediction可以有效地解决不同Block-NeRF之间的遮挡问题,并且可以提高渲染质量和效率。

Block_Nerf合并

Block-NeRF选择:一个大型场景由多个 Block 组成,Block-NeRF使用两种策略进行Block选择(1)只考虑在目标视点设定半径范围内的Block-NeRF。(2)计算每个候选Block的相关可见性,如果平均可见性小于阈值,则舍弃该Block。如图2所示,可见性可以由一个独立的模块计算,且不需要在目标图像的分辨率下进行渲染。通过筛选,通常剩余1-3个Block-NeRF有待合并。
Block-NeRF合成:使用相机原点 ccc 与每个Block-NeRF 的中心 xix_ixi 之间的逆距离加权系数对候选 Block 插值(wi∝distance(c,xi)−pw_i\propto distance(c, x_i)^{-p}widistance(c,xi)p, ppp 影响Block之间的混合速率)。插值在二维图像中进行,在不同Block-NeRF之间产生平滑的过渡。
场景外观匹配
在这里插入图片描述
Appearance Matching是为了在不同block之间消除外观上的不一致性,使得渲染结果更加自然和真实。具体步骤如下:

  • 对于每个block,为其分配一个外观编码(appearance code),这是一个随机初始化的向量,用于控制block的颜色和光照。
  • 对于每对相邻的block,选择一个三维区域作为匹配位置(matching location),这个区域要求在两个block中都有较高的可见度。
  • 对于每个匹配位置,冻结两个block对应的NeRF网络的权重,只优化其中一个block的外观编码,使得两个block在该位置渲染出来的颜色值之间的L2损失最小。
  • 重复上述步骤,直到所有相邻的block都进行了外观匹配。
    以此实现大场景中不同block之间外观上的对齐,如图6所示。

实验结果

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

http://www.lryc.cn/news/37204.html

相关文章:

  • 【Matlab】如何设置多个y轴
  • 圆桌(满足客人空座需求,合理安排客人入座圆桌,准备最少的椅子)
  • 如何入门大数据?
  • 如何在Vite项目中使用Lint保证代码质量
  • Spark高手之路1—Spark简介
  • 社科院与杜兰大学金融管理硕士项目——人生没有太晚的开始,不要过早的放弃
  • Spatial-Temporal Graph ODE Networks for Traffic Flow Forecasting
  • IP协议+以太网协议
  • 可视化组件届的仙女‖蝴蝶结图、玫瑰环图、小提琴图
  • 人的高级认知:位置感
  • MATLAB——信号的采样与恢复
  • Docker Nginx 反向代理
  • 手把手教你实现书上的队列,进来试试?
  • 【springboot】springboot介绍
  • PMP项目管理项目整合管理
  • ADS中导入SPICE模型
  • C++:异常
  • 3.初识Vue
  • 【C语言复习】程序的编译与链接
  • Golang sql 事务如何进行分层
  • linux系统openssh升级
  • 力扣-求关注者的数量
  • 近红外荧光染料修饰氨基IR 825 NH2,IR 825-Amine,IR-825 NH2
  • Android Crash和ANR监控
  • 【02 赖世雄英语语法:复句的语法】
  • 北斗导航 | 多参考一致性监测算法(MRCC)(附伪码)—— B值计算
  • 数字孪生与 UWB 人员定位:双剑合璧的智能物联新时代
  • 奇点云DataSimba发版全解析:“企业级”版本升级,提供最佳组合
  • 2-7 SpringCloud快速开发入门: Eureka 注册中心高可用集群搭建
  • STL中的函数对象