NeRF必读五:NeRF in the wild

news2024/9/24 14:31:53

前言

NeRF从2020年发展至今,仅仅三年时间,而Follow的工作已呈井喷之势,相信在不久的将来,NeRF会一举重塑三维重建这个业界,甚至重建我们的四维世界(开头先吹一波)。NeRF的发展时间虽短,有几篇工作却在研究领域开始呈现万精油趋势:

  • PixelNeRF----泛化法宝
  • MipNeRF----近远景重建
  • NeRF in the wild----光线变换下的背景重建
  • NeuS----用NeRF重建Surface
  • Instant-NGP----多尺度Hash编码实现高效渲染

本篇是NeRF必读系列的最后一篇:NeRF in the Wild. 该篇主打一个Appearance Embedding, 由于该方法在生活场景中的普适性被大范围的使用,可以说再以后NeRF的文章中,NeRF-W将成为一篇难以避开的引用文章。
Alt
先插一句题外话,现在各行各业都流行一个通用的Framework, 例如搞detection的都有MMCV,MMDETECTION。基于Framework可以快速迭代自己的idea,在知识迅速爆炸的今天,学会各行各业的框架可谓是至关重要!所以在结束本期的paper解析之后,我将开启NeRFStudio系列的解析文章,开始NeRF领域的迅速迭代之旅!在此奉上NeRFStudio的pipeline,可以发现大部分文章我们都已经在前文中学习,仅剩下NeRF-W以及NeRF减减没有解析。下面补齐这两篇。
Alt

NeRF-W Main Contributions

  1. Appearance Variations Embedding: 户外场景下被重建物体的曝光度,光线,季节、天气等的变换都会影响物体给出的appearance, 作者构造了一个Embedding层用来表征 ∇ V a p p r e a r a n c e \nabla V_{apprearance} Vapprearance的低维描述
  2. Transient Embedding:作者利用将一张图像分解为场景共享部分(shared elements)和依赖于图像的瞬息部分(transient elements,如名胜古迹照的游客),并利用一个Transient Embedding层无监督地将这两个部分分解开来。具体的pipeline 如下:
    Alt

经典Volumetric Rendering:

C ^ ( r ) = R ( r , c , σ ) = ∑ k = 1 K T ( t k ) α ( σ ( t k ) δ k ) c ( t k ) where  T ( t k ) = e x p ( − ∑ k ′ = 1 k − 1 σ ( t k ′ δ k ′ ) ) , \hat{\mathbf{C}}(\mathbf{r})=\mathcal{R}(\mathbf{r, c},\sigma)=\sum^{K}_{k=1}T(t_k)\alpha(\sigma(t_k)\delta_k)\mathbf{c}(t_k)\\ \text{where} \space T(t_k)=exp(-\sum^{k-1}_{k'=1}\sigma(t_{k'}\delta_{k'})), C^(r)=R(r,c,σ)=k=1KT(tk)α(σ(tk)δk)c(tk)where T(tk)=exp(k=1k1σ(tkδk)),
写成MLP的表达式如下:

[ σ ( t ) , z ( t ) ] = M L P θ 1 ( γ x ( r ( t ) ) ) c ( t ) = M L P θ 2 ( z t , γ d ( d ) ) \begin{aligned} [\sigma(t),\bf{z}(t)]=MLP_{\theta_1}(\gamma_{\bf{x}}(\bf{r}(t))) \\ \bf{c}(t)=MLP_{\theta_2}(\bf{z}_t,\gamma_d(d)) \end{aligned} [σ(t),z(t)]=MLPθ1(γx(r(t)))c(t)=MLPθ2(zt,γd(d))

作者为了强调 σ ( t ) \sigma(t) σ(t)与观测角度无关,额外输出了隐变量 z ( t ) \mathbf{z}(t) z(t),做为根据 ( x , d ) \mathbf{(x,d)} (x,d)生成color的condition。
最后是Coarse And Fine Loss:
∑ i j ∥ C ( r i j ) − C ^ c ( r i j ) ∥ 2 2 + ∥ C ( r i j ) − C ^ f ( r i j ) ∥ 2 2 \sum_{ij}\Vert \bf{C}(\bf{r}_{ij}) -\bf{\hat{C}^c}(\bf{r}_{ij}) \Vert^2_{2}+\Vert \bf{C}(\bf{r}_{ij}) -\bf{\hat{C}^f}(\bf{r}_{ij}) \Vert^2_{2} ijC(rij)C^c(rij)22+C(rij)C^f(rij)22
以上便是经典的NeRF操作,下面作者开始介绍作者的魔改:

Latent Appearance Modeling

这一段在论文中4.1节,非常简约,作者给每张image分配了一个关联的隐编码 l i ( a ) \mathcal{l}^{(a)}_i li(a), l i ( a ) \mathcal{l}^{(a)}_i li(a)会随着训练被优化,优化后的公式如下:
C ^ i ( r ) = R ( r , c , σ ) c i ( t ) = M L P θ 2 ( z t , γ d ( d ) , l i ( a ) ) \hat{\mathbf{C}}_i(\mathbf{r})=\mathcal{R}(\mathbf{r, c},\sigma)\\ \bf{c}_i(t)=MLP_{\theta_2}(\bf{z}_t,\gamma_d(d),\mathcal{l}^{(a)}_i) C^i(r)=R(r,c,σ)ci(t)=MLPθ2(zt,γd(d),li(a))
关于 l i ( a ) \mathcal{l}^{(a)}_i li(a)的故事我会在后面详细述说,感兴趣的读者可以三连,点赞破10我加班更新,扑哧~

Transient Objects

瞬息物体对我们需要渲染的主体部分进行了遮挡,因此最后渲染图片的颜色也应该是不同的,作者按照这个思路增加了一个MLP, 并给出了改进后的渲染公式:
C ^ ( r ) = ∑ k = 1 K T ( t k ) ( α ( σ ( t k ) δ k ) c ( t k ) + α ( σ i ( τ ) ( t k ) δ k ) c i ( τ ) ( t k ) ) where  T i ( t k ) = e x p ( − ∑ k ′ = 1 k − 1 ( σ ( t k ′ ) + σ i ( τ ) ( t k ′ ) ) δ k ′ ) \hat{\mathbf{C}}(\mathbf{r})=\sum^{K}_{k=1}T(t_k)(\alpha(\sigma(t_k)\delta_k)\mathbf{c}(t_k)+\alpha(\sigma^{(\tau)}_i(t_k)\delta_k)\mathbf{c}^{(\tau)}_i(t_k))\\ \text{where} \space T_i(t_k)=exp(-\sum^{k-1}_{k'=1}(\sigma(t_{k'})+\sigma^{(\tau)}_i(t_{k'}))\delta_{k'}) C^(r)=k=1KT(tk)(α(σ(tk)δk)c(tk)+α(σi(τ)(tk)δk)ci(τ)(tk))where Ti(tk)=exp(k=1k1(σ(tk)+σi(τ)(tk))δk)
至此便能刻画出在存在Transient Objects的情况下,Volumetric Rendering的过程了,但作者并没有到此为止,更进一步的优化了Loss的分配比重。对于始终都是静态的图像区域,color的分布方差肯定较小,而transient objects较多的区域,color分布的方差会比较大,对于梯度的方向当然要多给跟方差变化较小的区域~
根据此思路,作者选择在渲染过程中直接估计方差 β ^ i ( r ) = R ( r , β i , σ i τ ) \hat{\beta}_i(\mathbf{r})=\mathcal{R}(\mathbf{r},\beta_i,\sigma^{\tau}_i) β^i(r)=R(r,βi,σiτ)

经过上述讨论,构建 MLP θ 3 \text{MLP}_{\theta_3} MLPθ3如下所示:
[ σ i ( τ ) ( t ) , c i ( τ ) ( t ) , β ~ i ( t ) ] = MLP θ 3 ( z ( t ) , l i ( τ ) ) β i ( t ) = β m i n + l o g ( 1 + e x p ( β ~ i ( t ) ) ) [\sigma^{(\tau)}_i(t),\mathbf{c}^{(\tau)}_i(t),\tilde{\beta}_i(t)]=\text{MLP}_{\theta_3}(\mathbf{z}(t),\mathcal{l}^{(\tau)}_i)\\ \beta_i(t)=\beta_{min}+log(1+exp(\tilde{\beta}_i(t))) [σi(τ)(t),ci(τ)(t),β~i(t)]=MLPθ3(z(t),li(τ))βi(t)=βmin+log(1+exp(β~i(t)))
其中下式的意义是将输出从 ( − ∞ , + ∞ ) (-\infty,+\infty) (,+)映射到 ( 0 , + ∞ ) (0,+\infty) (0,+),作者把上述loss构造给了fine model,而coarse model还是使用了经典loss
L i ( r ) = ∥ C i ( r ) − C ^ i ( r ) ∥ 2 2 2 β i ( r ) 2 + l o g β i ( r ) 2 2 + λ μ K ∑ k = 1 K σ i ( τ ) ( t k ) L t o t a l = ∑ i j L i ( r i j ) + 1 2 ∥ C ( r i j ) − C ^ i c ( r i j ) ∥ L_i(\bm{r})=\frac{\Vert\bm{C}_i(\bm{r})-\hat{\bm{C}}_i(\bm{r})\Vert^2_2}{2\beta_i(\bm{r})^2}+\frac{log\beta_i(\bm{r})^2}{2}+\frac{\lambda_\mu}{K}\sum^K_{k=1}\sigma^{(\tau)}_i(t_k)\\ L_{total}=\sum_{ij}L_i(\bm{r}_{ij})+\frac{1}{2}\Vert C(\bm{r}_{ij})-\hat{C}^c_i(\bm{r}_{ij})\Vert Li(r)=2βi(r)2Ci(r)C^i(r)22+2logβi(r)2+Kλμk=1Kσi(τ)(tk)Ltotal=ijLi(rij)+21C(rij)C^ic(rij)

参考文献

Martin-Brualla, Ricardo, et al. “Nerf in the wild: Neural radiance fields for unconstrained photo collections.” Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/452375.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ubuntu 3060显卡驱动+cuda+cudnn+pytorch+pycharm+vscode

文章目录 运行环境:适用:思路:1.1 3060显卡驱动自动安装2.1 CUDA11.1.11)下载CUDA Toolkit 11.1 Update 1 Downloads2)contunue , 然后accept3)回车取消Driver安装,然后install4)添加环境变量5)确认是否安装成功 3.1 cudnn 8.1.11…

【git安装、使用、常用命令】

文章目录 一、git下载与安装二、git的使用1.初次运行配置git2、本地新建版本仓库3、提交代码 总结(git 常用命令) 一、git下载与安装 1、下载链接: Git(Git 主程序)https://git-scm.com/downloads 根据自身电脑操作系…

客户端请求耗时严重原因排查优化 (Nginx导致)

客户端请求耗时严重,初步从几个方面进行排查 1.检查网络连接,是否实现丢包,网络波动,网络拥堵等问题。 2.检查客户端请求耗时和project api 接口耗时差异,判断是nginx问题还是接口问题 如果是nginx耗时导致&#xff0c…

podman pull或者push http镜像遇到http: server gave HTTP response to HTTPS client

原因:Docker自从1.3.X之后docker registry交互默认使用的是HTTPS,但是搭建私有镜像默认使用的是HTTP服务,所以与私有镜像交时出现以上错误 解决方案: #增加以下配置 vi /etc/containers/registries.conf [[registry]] location "…

mac gitstats查看git提交记录

一、介绍: 进一步来讲,Gitstats它是一个git仓库分析软件,它可以检查仓库并生成历史数据的统计信息。可以帮助你查看git仓库的提交状态,根据不同维度分析计算,并自动生成数据图表。 官网介绍:http://gitst…

基于 DolphinDB 机器学习的出租车行程时间预测

DolphinDB 集高性能时序数据库与全面的分析功能为一体,可用于海量结构化数据的存储、查询、分析、实时计算等,在工业物联网场景中应用广泛。本文以纽约出租车行程时间预测为例,介绍如何使用 DolphinDB 训练机器学习模型,并进行实时…

python+vue古诗词鉴赏学习网站vue+django国学经典在线学习系统

国古典诗词,是中华传统文化的瑰宝,民族精神的精华,是中国传统文化的精粹,在中国璀灿的古代文化中占有重要的地位。古诗不仅内涵丰富、包罗万象、意境深邃,具有很高的审美价值和很强的艺术感染力,而且语言凝练、短小精悍,词句优美,韵体和谐,使…

大数据周会-本周学习内容总结011

开会时间:2023.04.23 15:00 线下会议 目录 01【spark】 02【es同步mysql】 03【下周任务】 01【spark】 尚硅谷大数据技术Spark教程-笔记01【Spark(概述、快速上手、运行环境、运行架构)】尚硅谷大数据技术Spark教程-笔记02【SparkCore&am…

vue2 路由相关知识点

文章目录 1. 搭建路由组件1.1 安装 vue-router1.2 配置路由 2. 使用路由3. 路由的跳转3.1 声明式导航3.2 编程式导航 4. 路由传参4.1 路由传递参数 : 字符串形式4.2 路由传递参数 : 对象写法4.3 路由传参相关面试题 5. meta 使用6. 重写 push 和 replace 方法 1. 搭建路由组件 …

6 计时器(六)

6.7 TMI编码器接口 Encoder Interface 编码器接口 编码器接口可接收增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置、旋转方向和旋转速度 每个高级定时器和通…

(二十一)查找算法-插值查找

1 基本介绍 1.1 插值查找 插值查找算法又称插值搜索算法,是在二分查找算法的基础上改进得到的一种查找算法。 插值查找算法只适用于有序序列,换句话说,它只能在升序序列或者降序序列中查找目标元素。作为“改进版”的二分查找算法&#xf…

手动测试台架搭建,让你的车载测试更轻松

目录:导读 引言 1、概述 2、主要内容 3、汽车测试台架分类 4、汽车测试台架分类 5、汽车测试台架分类台架测试输人台架硬件搭建CANoe台架搭建 6、台架测试输入? 7、需求规范是功能测试用例设计来源测试结果的判断﹔包括∶客户需求(功能规范)需求分…

Redis框架与SpringBoot的整合及详细学习汇总

目录 springBoot整合Redis Redis 的优势 Redis安装 Redis数据类型 springboot操作Redis springboot 配置redis RedisTemplate及其相关方法 springBoot实现上传下载 RedisTemplate及其相关方法 springBoot实现上传下载 springBoot CORS(跨域资源共享&#…

【C++11】简介、列表初始化、声明、范围for、STL中的一些变化

简介、列表初始化、声明、范围for、STL中的一些变化 文章目录 简介、列表初始化、声明、范围for、STL中的一些变化一、C11简介二、统一的列表初始化1.{ }初始化2.initializer_list容器 三、声明1.auto2.decltype3.nullptr 四、范围for循环五、STL中一些变化 一、C11简介 在2003…

虚拟数字人遇上ChatGPT,好看的皮囊和有趣的灵魂?

都说好看的皮囊千篇一律,有趣的灵魂万里挑一,博雅仔不禁好奇,到底有没有皮囊又好看,灵魂又有趣的人呢?二者能否得兼?答案是当然可以啊。 虽然在现实生活中,遇到这样的人需要静待缘分的安排&…

pg从磁盘读取文件

**瀚高数据库 目录 环境 文档用途 详细信息 环境 系统平台:Linux x86-64 Red Hat Enterprise Linux 7 版本:14 文档用途 了解存储管理器 详细信息 0. 相关数据类型 打开的每一个段用如下结构表示,pg中有MdfdVec数组并且记录了这个数组的…

微信小程序开发--利用和风天气API实现天气预报小程序

本来是参照《微信小程序开发实战》做一个天气预报小程序的,实际运行的时候提示错误,code 400,参数错误。说明问题应该出在查询API的语句上,没有返回结果。 查阅后才知道,可能书籍出版时间较早,现在的和风获…

大数据学习初级入门教程(十六) —— Hadoop 3.x 完全分布式集群的安装、启动和测试

好久没用 Hadoop 集群了,参考以前写的《大数据学习初级入门教程(一) —— Hadoop 2.x 完全分布式集群的安装、启动和测试_孟郎郎的博客-CSDN博客》和《大数据学习初级入门教程(十二) —— Hadoop 2.x 集群和 Zookeeper…

C++代码使用 gperftools 工具进行性能分析

文章目录 前言gperftools 是什么使用方法安装工具代码插桩引入工具代码修改关键代码完整示例编译链接启动分析程序 数据分析总结 前言 一直想用 gperftools 做一下性能方面的尝试,之前一直忙着开发,目前已经到了后期,忙里抽闲亲自操作一遍&…

战争教育策略游戏 MiracleGame,开启新阶段重塑生态和玩法

香港 Web3 区块链周刚刚在一片喧嚣中结束。各路大V、KOL 们的 report 都对 GameFi 的前景非常自信。2021-2023年期间,大量资金涌入 GameFi 赛道,GameFi 一旦爆发将会是现象级的出圈事件。 MiracleGame 是一款基于 BNB Chain 构建的英雄和元神主题的战争教…