NeRF必读:NeuS--三维重建的milestone以及脑补的作者脑回路

news2024/9/25 19:24:04

前言

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

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

Why NeuS?

基于二维图片的三维重建是计算机视觉中最核心的任务之一,传统方法的发展目前已经收敛于某种上限。从视觉中提取出物体的三维信息并将其直接用于三维重建是一项富有挑战但非常有实际意义的工作,得益于NeRF惊人的新视角合成效果,作者在NeRF的基础上提出了重建物体Surface的模型并在数据集上取得了理想的效果。NeuS打开了三维重建新方法的大门,此后有很多重量级工作都在NeuS的基础上展开,相信Follow的工作还会源源不断。
Alt

Method

输入:

给定一个序列的带位姿的图片 { I k } \{\mathcal{I}_k\} {Ik},这些图片中包含了同一个物体 O \mathcal{O} O(这也是后面论文可以改进的点)

输出:

对物体 O \mathcal{O} O surface的重建结果

Surface Representation

原文叫做Scene Representation, 我的拙见是Surface Representation更直观些:
S = { x ∈ R 3 ∣ f ( x ) = 0 } \mathcal{S}=\{\mathbf{x} \in \mathbb{R}^3 | f(\mathbf{x})=0\} S={xR3f(x)=0}
这里借用了level set的概念, f ( x ) f(\mathbf{x}) f(x)是仅在被观测物体表面上 f ( x ) = 0 f(\mathbf{x})=0 f(x)=0的函数,该函数可以用一个神经网络表征, 文中将其命名为SDF Network那么问题来了,如何将这个SDF Network函数和NeRF建立关联,从而能够利用NeRF的损失函数优化surface的表征 SDF Nertwork呢?这一点是本文最核心的创新点


脑补版本作者脑回路开始

现在,我们来假想一下作者的脑回路

  • 观察经典NeRF的Volume Rendering Formula:
    C ^ ( o , v ) = ∫ t n t f T ( t ) σ ( p ( t ) ) c ( p ( t ) , v ) d t where  p ( t ) = o + t v \mathbf{\hat{C}(\mathbf{o,v})}=\int^{t_f}_{t_n}T(t)\sigma(p(t))\mathbf{c}(p(t),\mathbf{v})dt \\ \text{where} \space p(t)=\mathbf{o}+t\mathbf{v} C^(o,v)=tntfT(t)σ(p(t))c(p(t),v)dtwhere p(t)=o+tv
  • 看来看去,公式里面只有 σ ( p ( t ) ) \sigma(p(t)) σ(p(t))可以和 f ( x ) f(\mathbf{x}) f(x)建立关联,这也符合大多数人的直觉。
  • 问:怎样才能找到一个映射满足 f ( t ) → σ ^ ( t ) f(t)\rightarrow \hat{\sigma}(t) f(t)σ^(t),并且 σ ^ ( t ) \hat{\sigma}(t) σ^(t)还是能满足经典NeRF中 σ ( t ) \sigma(t) σ(t)的特性使得该神经网络也能描述空间的体密度分布呢?
  • 答:要使体密度描述准确,至少要满足下界: 在surface表面或者附近体密度最大(即当 f ( x ) = 0 f(\mathbf{x})=0 f(x)=0时, σ ( x ) \sigma(\mathbf{x}) σ(x)同时也达到最大值,对应文中的性质Unbiased)
  • 问:什么函数在x=0时,值最大,且在x<0时递增,在x>0时递减呢:Sigmoid的导数,logistic density distribution就还不错,先上图:
    Alt
    现在我们有了体密度函数的表达式
    ϕ s ( u ) = s e − s u / ( 1 + e − s u ) u = f ( x ) \phi_s(u)=se^{-su}/(1+e^{-su})\\ u=f(x) ϕs(u)=sesu/(1+esu)u=f(x)
    一顿操作猛如虎,现在将得到的这个体密度表达 ϕ s ( f ( x ) ) \phi_s(f(x)) ϕs(f(x))命名为S-denstiy,将 S − d e n s i t y S-density Sdensity带入Rendering Formula得:
    C ^ ( o , v ) = ∫ t n t f T ( t ) ϕ s ( f ( p ( t ) ) ) c ( p ( t ) , v ) d t where  p ( t ) = o + t v \mathbf{\hat{C}(\mathbf{o,v})}=\int^{t_f}_{t_n}T(t)\phi_s(f(p(t)))\mathbf{c}(p(t),\mathbf{v})dt \\ \text{where} \space p(t)=\mathbf{o}+t\mathbf{v} C^(o,v)=tntfT(t)ϕs(f(p(t)))c(p(t),v)dtwhere p(t)=o+tv
    ω ( t ) = T ( t ) ϕ s ( f ( p ( t ) ) ) \omega(t)=T(t)\phi_s(f(p(t))) ω(t)=T(t)ϕs(f(p(t))),就得到了原文中Naive的solution, 为啥时Naive呢,很多读者都懵了,不是公式都推完了吗?
    因为我们犯了一个致命错误:我们需要做到Unbiased的变量并非 σ ( t ) \sigma(t) σ(t),而是 ω ( t ) = T ( t ) σ ( t ) \omega(t)=T(t)\sigma(t) ω(t)=T(t)σ(t)!,前面的推导我们是不考虑Occlusion-Awared的,也就是文中 ω ( t ) \omega(t) ω(t)函数需要满足的第二个性质,体密度相同,但距离相机的距离不同时,分配给该点像素的权重是应该不一样的,否则会有歧义性。一句话:前面对Unbiased的推导没考虑 T ( t ) T(t) T(t)的影响。那么实际上 T ( t ) T(t) T(t)的加入会对Naive的分布产生影响吗,作者给出了图,确实产生了影响!Naive solution虽然带有Occlusion Awared,但是 ω ( t ) \omega(t) ω(t)不再是unbiased的了,如左下图所示, ω ( t ) \omega(t) ω(t)的极点并非surface所在平面,更偏左一些:
    Alt
  • 问:如何规避这个问题呢?我们能构造一个 ω ( t ) \omega(t) ω(t)同时满足Unbiased 和Occulusion-Aware两个性质吗?
  • 答:想个办法让 ω ( t ) = \omega(t)= ω(t)=logistic density distribution*呗~
  • 问:那Occlusion-Aware呢
  • 答:直白的说就是 T ( t ) σ ( t ) = T(t)\sigma(t)= T(t)σ(t)=logistic density distribution, T ( t ) T(t) T(t)就是Occlusion Aware了。 好家伙,这样就能做到Unbiased的同时,又能够描述Occlusion-Aware了。但是Naived logistic density distribution是不满足求和为1的,所以呢作者做了一个归一化:
    ω ( t ) = ϕ s ( f ( p ( t ) ) ) ∫ 0 + ∞ ϕ s ( f ( p ( t ) ) ) d u \omega(t)=\frac{\phi_s(f(\mathbf{p}(t)))}{\int^{+\infty}_0 \phi_s(f(\mathbf{p}(t)))du} ω(t)=0+ϕs(f(p(t)))duϕs(f(p(t)))

ω ( t ) = T ( t ) ρ ( t ) \omega(t)=T(t)\rho(t) ω(t)=T(t)ρ(t),且 T ( t ) = exp ⁡ ( − ∫ 0 t ρ ( u ) d u ) T(t)=\exp(-\int^t_0\rho(u)du) T(t)=exp(0tρ(u)du),直接根据这个公式求解出 T ( t ) T(t) T(t) ρ ( t ) \rho(t) ρ(t)即可,至此作者完成了NeRF与surface reconstruction的完美结合!


脑补版本作者脑回路完毕

总结

作者为了使得 ω ( t ) \omega(t) ω(t)无偏,将logistic density distribution硬分解成了透射率 T ( t ) T(t) T(t)和体密度 ρ ( t ) \rho(t) ρ(t),好一个霸王硬上弓!

硬上弓还要讲究策略

本节讲述作者如何将 ω ( t ) \omega(t) ω(t)分解为 T ( t ) T(t) T(t) ρ ( t ) \rho(t) ρ(t),吃个晚饭再写。

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

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

相关文章

C++入门(前篇)

&#x1f525;&#x1f525;本章重内容 C入门 1.命名空间2. C输入&输出3. 缺省参数 简单的说一下C语言的出现是为了弥补C语言的不足 由于要补充的东西太多&#xff0c;所以就在C语言的基础上又出了C 所以我认为学习C的前提是你得懂C语言 C中可以使用C的大部分语法 可以这样…

Autowired注解与Resource注解的区别

两者的用法 其实这两个注解的作用都一样,都是在做bean的注入,在使用过程中,两个注解有时候可以替换使用 两者的共同点 Resource注解和Autowired注解都可以用作bean的注入.在接口只有一个实现类的时候,两个注解可以互相替换,效果相同. 两者的不同点 Resource注解是Java自身的…

技术分享 | OceanBase 手滑误删了数据文件怎么办

作者&#xff1a;张乾 外星人2号&#xff0c;现兼任六位喵星人的资深铲屎官。 本文来源&#xff1a;原创投稿 *爱可生开源社区出品&#xff0c;原创内容未经授权不得随意使用&#xff0c;转载请联系小编并注明来源。 手滑误删了数据文件&#xff0c;并且没有可替换的节点时&…

代码随想录第19天 | 235. 二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点

235. 二叉搜索树的最近公共祖先 var lowestCommonAncestor function(root, p, q) {// 使用递归的方法// 1. 使用给定的递归函数lowestCommonAncestor// 2. 确定递归终止条件if(root null) {return root;}if(root.val > p.val && root.val > q.val) {// 向左子…

set、map容器

一、set 1. set基本概念 简介: 所有元素都会在插入时自动被排序 本质: set/multiset属于关联式容器&#xff0c;底层结构是用二叉树实现。 set和multiset区别: set不允许容器中有重复的元素 multiset允许容器中有重复的元素 2. set构造和赋值 构造: set<T> st; …

安装WMware16、centos7记录

将一台闲置电脑安装虚拟机&#xff0c;计划给个8G内存&#xff0c;80G硬盘&#xff0c;打算安装WMware16&#xff0c;对系统要求是win10 一、将win7升级到win10 1.1、正版的win10安装U盘制作教程 https://www.bilibili.com/video/BV1AW411G7Lq/?vd_sourcecaf04463d06774efd…

Okio 网络提速

文章目录网络数据处理流程Page Cache传统 I/O 拷贝的性能问题零拷贝技术DMA 技术零拷贝技术分类mmapsendfilespliceDirect I/O零拷贝技术性能分析小结OkioOkio 的使用Okio 网络提速的原理Okio 总结总结网络数据处理流程 在讲 Okio 之前&#xff0c;为了能更好的了解 Okio 的优…

如何制定项目里程碑 它的作用体现在哪

制定项目里程碑是项目管理中的一个重要步骤&#xff0c;它可以帮助团队确立项目目标、分解任务、评估风险、规划资源和监控进度。在这篇文章中&#xff0c;我们将介绍如何制定项目里程碑和它的作用。 如何制定项目里程碑 制定项目里程碑需要遵循以下步骤&#xff1a; 1、确定…

《程序员面试金典(第6版)》面试题 10.01. 合并排序的数组

题目描述 给定两个排序后的数组 A 和 B&#xff0c;其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法&#xff0c;将 B 合并入 A 并排序。 初始化 A 和 B 的元素数量分别为 m 和 n。 示例: 输入: A [1,2,3,0,0,0], m 3 B [2,5,6], n 3 输出: [1,2,2,3,5,6] 说明: …

简单六步,帮助HR高效管理零工

AIHR发布的《2023人力资源趋势》中提到&#xff0c;过去HR往往只关注全职员工&#xff0c;忽略了其他劳动力生态系统成员&#xff0c;比如零工、外包员工和临时工等&#xff0c;而如今这些劳动力生态系统的成员在公司的服务交付中发挥着越来越重要的作用。△ 传统劳动力生态系统…

Java入坑之集合、流与序列化

一、集合 1.1集合定义 集合概念&#xff1a; 保存和盛装数据的容器&#xff0c;将许多元素组合成一个单一单元的容器对象。集合&#xff0c;可用于存储/检索/操作/传输/聚合数据集合框架&#xff1a; 表示和操作集合的体系&#xff0c;包括接口、实现类&#xff0c;集合框架的…

【Nav2】Ubuntu18+ROS2 Eloquent跑通Navigation2仿真示例

【背景】 打算通过Navigation2来了解ROS2的核心两大件——LifeCircle和BehaviorTree&#xff0c;结果根据官网的教程一顿鼓捣&#xff0c;这个Turtlbot3的仿真就是跑不起来&#xff0c;这怎么能忍&#xff1f;虽然在Ubuntu20上使用Foxy版本可以非常容易就跑通demo&#xff0c;…

3年外包终上岸,我只能说:但凡有点机会,千万别去外包...

我大学学的是计算机专业&#xff0c;毕业的时候&#xff0c;对于找工作比较迷茫&#xff0c;也不知道当时怎么想的&#xff0c;一头就扎进了一家外包公司的软件测试岗&#xff0c;一干就是3年。现在终于跳槽到了互联网公司了&#xff0c;我想说的是&#xff0c;但凡有点机会&am…

behaviac —— Win10下Vs2017编译“腾讯行为树“源码

简介 - 腾讯行为树 behaviac是游戏AI的开发框架组件,也是游戏原型的快速设计工具。支持全平台,适用于客户端和服务器,助力游戏快速迭代开发 。编辑器可以运行在PC上,操作方便直观可靠,支持实时和离线调试;编辑器可以导出xml,bson等多种格式,更可以导出C++、C#源码,提供…

免费1年服务器,部署个ChatGPT专属网页版

作者&#xff1a;小傅哥 博客&#xff1a;https://bugstack.cn 沉淀、分享、成长&#xff0c;让自己和他人都能有所收获&#xff01;&#x1f604; 白皮袄个免费1年服务器&#xff0c;部署个ChatGPT专属网页版&#xff01; api.openai.com port 443: Connection timed out 你是…

Spring Security --- 基于内存模型创建用户角色

授权实现方式 基于内存模型实现授权基于默认数据库模型实现授权基于自定义数据库模型实现授权 基于内存模型创建用户角色 在Spring Security4.x版本中&#xff0c;登陆的用户有一个默认的ROLE_USER角色但是在Spring Security5.x版本中&#xff0c;把这个默认的角色给去掉了需要…

推荐一个3D建模工具集

3D建模工具集, 收录一下几个工具集&#xff1a;数字孪生编辑器 基于WebGL技术&#xff0c;依托丰富的模型资产库&#xff0c;通过拖拽式的操作&#xff0c;方便用户高效便捷的搭建三维数字孪生场景&#xff0c;配合twin服务平台&#xff0c;实现孪生设备姿态控制的虚实…

2023年第十四届蓝桥杯 C++ B组参赛经历和总结

2023年第十四届蓝桥杯 C B组参赛经历和总结 目录2023年第十四届蓝桥杯 C B组参赛经历和总结前言走上算法之路备考备战之路蓝桥杯比赛过程感受总结值不值得打备赛建议前言 写这篇博客的缘故&#xff0c;因为看到好几篇记录自己蓝桥杯经历的博客&#xff0c;于是乎我也想写一篇&…

【论文精读】Arxiv 2023 - Segment Anything

【论文精读】Arxiv 2023 - 分割一切 【论文原文】&#xff1a;Segment Anything 【作者信息】&#xff1a;Kirillov, Alexander and Mintun, Eric and Ravi, Nikhila and Mao, Hanzi and Rolland, Chloe and Gustafson, Laura and Xiao, Tete and Whitehead, Spencer and Ber…

如何设计帮助中心才能真正地帮助客户解决问题?

对于当今如此智能的时代&#xff0c;大多数人都习惯性地自己解决问题&#xff0c;所以在浏览某个网站或是使用某个产品遇到问题时&#xff0c;第一反应不再是找客服&#xff0c;而是到帮助中心去寻找解决问题的办法&#xff0c;因此&#xff0c;帮助中心变得越来越重要了。 那…