D-Nerf:用于动态场景表示的神经辐射场

news2024/11/26 19:33:34

Pumarola A, Corona E, Pons-Moll G, et al. D-nerf: Neural radiance fields for dynamic scenes[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021: 10318-10327.

D-Nerf 较 NeRF 的改进 1 就是能够建模移动或变形的物体,包括铰接运动以及人类的复杂姿势。通过在输入中增加时间变量 t t t,可以预测某空间点在该时刻的位移,再结合 NeRF 的标准网络就能够建模动态场景。

在这里插入图片描述

目录

  • 一. 研究思路
    • 1. 场景表示
    • 2. 新视图渲染
  • 二. 动态神经辐射场
    • 1. 标准网络
    • 2. 变形网络
  • 三. 新视图渲染
  • 四. 实验结果
    • 1. 实验细节
    • 2. 数据集
    • 3. 实验效果
    • 4. 对比实验
    • 5. 副产品
  • 五. 总结
  • 六. 复现

一. 研究思路

  • 神经渲染 (neural rendering) 用于视图合成已经取得了重大成果,以 NeRF 及其变体为代表尤为突出。
  • 但目前的 NeRF 方法都是基于静态场景的假设,无法建模移动或变形的物体。
  • 文章放宽了 NeRF 的静态场景假设,提出了一种端到端的 NeRF 变体,用于建模静态、移动或变形物体组成的动态场景,称为 D-Nerf。

    端到端 (end-to-end):直接从输入数据到最终输出进行训练,而不需要手动设计中间步骤、设计特征提取或者增加额外组件。

和现有的 4D 视图合成技术不同,D-Nerf 只需要一台摄像机,不需要显式的三维重建,并且还可以进行端到端的训练。

文中全面评估了 D-NeRF 在各种场景下的表现,从铰接运动到人类的复杂姿势。通过将场景学习分解为标准场景和场景流以及控制时间变量,D-NeRF 能够渲染高质量的图像。

D-NeRF 还有一个副产品,就是能够产生完整的三维网格,捕捉时变几何。

1. 场景表示

在 NeRF 的场景表示函数的五维输入 ( x , y , z , θ , ϕ ) (x, y, z, θ, ϕ) (x,y,z,θ,ϕ) 的基础上,增加时间变量 t t t。但仅仅使用 ( x , y , z , θ , ϕ , t ) → ( c , σ ) (x, y, z, θ, ϕ, t) \rightarrow (\bold{c}, σ) (x,y,z,θ,ϕ,t)(c,σ) 并不能得到满意的结果,因为没有充分利用时间冗余信息。

时间冗余 (temporal redundancy):当处理连续时间中的动态场景时,通常会有许多相似的或几乎相同的场景信息在相邻的时间步骤中出现。这种情况下,将每个时间步骤都视为独立的输入会导致低效的学习和生成结果。

因此将场景的学习过程分为两个模块:

  • 空间映射: ( x , y , z , t ) → ( Δ x , Δ y , Δ z ) (x, y, z, t) \rightarrow (\Delta x, \Delta y, \Delta z) (x,y,z,t)(Δx,Δy,Δz),即变形场;
  • 回归预测: ( x + Δ x , y + Δ y , z + Δ z , θ , ϕ ) → ( c , σ ) (x+\Delta x, y+\Delta y, z+\Delta z, θ, ϕ) \rightarrow (\bold c, \sigma) (x+Δx,y+Δy,z+Δz,θ,ϕ)(c,σ),即原始 NeRF;

这两个模块都使用没有卷积层的深度全连接网络(即多层感知机)来学习得到。

2. 新视图渲染

学习得到 D-Nerf 的场景表示后,可以使用 ( θ , φ , t ) (θ, φ, t) (θ,φ,t) 控制新视图的渲染了。
在这里插入图片描述

文中还提出以下假设:

  • 场景中的每个点可以变换位置,但不能凭空出现或消失;

二. 动态神经辐射场

D-Nerf 的核心就是建立映射 M : ( x , d , t ) → ( c , σ ) \mathcal{M}: (\bold x, \bold d, t) \rightarrow (\bold{c}, σ) M:(x,d,t)(c,σ)。将其分解为 Ψ x \Psi_x Ψx Ψ t \Psi_t Ψt 两个映射: Ψ x \Psi_x Ψx 表示 NeRF 的 标准配置 (canonical configuration) Ψ t \Psi_t Ψt 表示 t t t 时刻的变形场景到标准 NeRF 的 位移 (displacement)。于是,不同时刻的场景间不再独立,而是通过一个标准配置连接起来。
在这里插入图片描述

1. 标准网络

标准网络 (Canonical Network) 就是原始的 NeRF:
Ψ x ( x , d ) ↦ ( c , σ ) \Psi_x(\bold{x}, \bold{d}) \mapsto (\bold{c}, \sigma) Ψx(x,d)(c,σ)

2. 变形网络

变形网络 (Deformation Network) 用于表示 t t t 时刻的真实场景到标准网络的位移:
Ψ t ( x , t ) = { Δ x ,  if  t ≠ 0 0 ,  if  t = 0 \Psi_t(\mathbf{x}, t)= \begin{cases} \Delta \mathbf{x}, & \text { if } t \neq 0 \\ 0, & \text { if } t=0 \end{cases} Ψt(x,t)={Δx,0, if t=0 if t=0

和 NeRF 中一样,直接使用多层感知机处理输入在生成视图时表现较差。因此标准网络和变形网络的多层感知机都使用 γ ( p ) \gamma(p) γ(p) 进行位置编码。

三. 新视图渲染

同 NeRF,从指定视角 o \bold{o} o 发出的方向为 d \bold{d} d 的光线,在 h h h 时刻能够到达的空间点为:
x ( h ) = o + h d \bold{x}(h)=\bold{o}+h \bold{d} x(h)=o+hd
t t t 时刻观察到像素点 p p p 的颜色为:
C ( p , t ) = ∫ h n h f T ( h , t ) σ ( p ( h , t ) ) c ( p ( h , t ) , d ) d h C(p, t)=\int_{h_n}^{h_f} \mathcal{T}(h, t) \sigma(\mathbf{p}(h, t)) \mathbf{c}(\mathbf{p}(h, t), \mathbf{d}) d h C(p,t)=hnhfT(h,t)σ(p(h,t))c(p(h,t),d)dh
其中:
p ( h , t ) = x ( h ) + Ψ t ( x ( h ) , t ) [ c ( p ( h , t ) , d ) , σ ( p ( h , t ) ) ] = Ψ x ( p ( h , t ) , d ) T ( h , t ) = exp ⁡ ( − ∫ h n h σ ( p ( s , t ) ) d s ) \mathbf{p}(h, t)=\mathbf{x}(h)+\Psi_t(\mathbf{x}(h), t) \\ [\mathbf{c}(\mathbf{p}(h, t), \mathbf{d}), \sigma(\mathbf{p}(h, t))]=\Psi_x(\mathbf{p}(h, t), \mathbf{d})\\ \mathcal{T}(h, t)=\exp \left(-\int_{h_n}^h \sigma(\mathbf{p}(s, t)) d s\right) p(h,t)=x(h)+Ψt(x(h),t)[c(p(h,t),d),σ(p(h,t))]=Ψx(p(h,t),d)T(h,t)=exp(hnhσ(p(s,t))ds)

分层采样后使用离散积分方法进行累加:
C ′ ( p , t ) = ∑ n = 1 N T ′ ( h n , t ) α ( h n , t , δ n ) c ( p ( h n , t ) , d ) C^{\prime}(p, t)=\sum_{n=1}^N \mathcal{T}^{\prime}\left(h_n, t\right) \alpha\left(h_n, t, \delta_n\right) \mathbf{c}\left(\mathbf{p}\left(h_n, t\right), \mathbf{d}\right) C(p,t)=n=1NT(hn,t)α(hn,t,δn)c(p(hn,t),d)
其中:
α ( h , t , δ ) = 1 − exp ⁡ ( − σ ( p ( h , t ) ) δ ) T ′ ( h n , t ) = exp ⁡ ( − ∑ m = 1 n − 1 σ ( p ( h m , t ) ) δ m ) δ n = h n + 1 − h n \alpha(h, t, \delta)=1-\exp (-\sigma(\mathbf{p}(h, t)) \delta)\\ \mathcal{T}^{\prime}\left(h_n, t\right)=\exp \left(-\sum_{m=1}^{n-1} \sigma\left(\mathbf{p}\left(h_m, t\right)\right) \delta_m\right)\\ \delta_n=h_{n+1}-h_n α(h,t,δ)=1exp(σ(p(h,t))δ)T(hn,t)=exp(m=1n1σ(p(hm,t))δm)δn=hn+1hn

四. 实验结果

1. 实验细节

同 NeRF,训练过程中使用小批量随机梯度下降,损失函数为真实像素和生成像素的均方误差:
L = 1 N s ∑ i = 1 N s ∥ C ^ ( p , t ) − C ′ ( p , t ) ∥ 2 2 \mathcal{L}=\frac{1}{N_s} \sum_{i=1}^{N_s}\left\|\hat{C}(p, t)-C^{\prime}(p, t)\right\|_2^2 L=Ns1i=1Ns C^(p,t)C(p,t) 22

2. 数据集

  • Hell Warrior:
  • Mutant:
  • Hook:
  • Bouncing Balls:
  • Lego:
  • T-Rex:
  • Stand Up:
  • Jumping Jacks:

3. 实验效果

在这里插入图片描述
如图所示,第 1 行分别展示了 Mutant 和 Stand Up 数据集下的标准网络(即 t = 0 t = 0 t=0)的新视图生成,从左到右分别是:渲染的 RGB 图像、三维网格表示的体积密度、深度图表示的体积密度、变形场表示的位移。第 2 ~ 4 行分别表示了时间累计下(即 t = 0.5 t = 0.5 t=0.5 t = 1 t = 1 t=1)的视图渲染情况。

在这里插入图片描述
文章还通过实验回答了 D-NeRF 如何建模阴影的效果 2,即模型如何编码同一个点的外观变化。如图绘制了在特定时刻的标准网络和真实场景之间的对应点对,D-NeRF 能够通过扭曲标准网络来合成阴影效果。

4. 对比实验

在这里插入图片描述

5. 副产品

五. 总结

D-NeRF 最大的创新点是可以建模移动或变形物体组成的动态场景。

D-NeRF 的缺点主要有两个:相机观测位置需要人工标注(同 NeRF);时间变量带来的变形导致模型无法收敛。

六. 复现


  1. 论文笔记:D-NeRF:Neural Radiance Fields for Dynamic Scenes ↩︎

  2. 论文随记|D-NeRF: Neural Radiance Fields for Dynamic Scenes
    ↩︎

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

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

相关文章

2021年上半年上午易错题(软件设计师考试)

1.在CPU中,用(A)给出将要执行的下一条指令在内存中的地址。 A.程序计数器 B.指令寄存器 C.主存地址寄存器 D.状态条件寄存器 3.采用DMA方式传送数据时,每传送一个数据都需要占用一个(C)。 A.指令周期…

最新Microsoft Edge浏览器如何使用圆角

引入 最近我看了edge官方的文档,里面宣传了edge的最新UI设计,也就是圆角,但是我发现我的浏览器在升级至最新版本之后,却没有圆角 网上有很多人说靠实验性功能即可解锁,但是指令我都试过了,每次都是搜索无结…

生鲜冻货经营小程序商城的效果如何

海鲜肉类也是人们的主要餐食之一,现产和冻货都有很高的市场需求度,由于受众广,因此对商家来说,除了本地生意外,外地生意才有更大的拓展空间。 但信息发展下,仅依靠电话、微信私信显然难以完善,…

SpringBoot集成与应用Neo4j

文章目录 前言集成使用定义实体配置定义Repository查询方法方式一:Query方式二:Cypher语法构建器方式三:Example条件构建器方式四:DSL语法 自定义方法自定义接口继承自定义接口实现自定义接口neo4jTemplateNeo4jClient 自定义抽象…

服务器资源检查

1.检查CPU情况 # 型号及核数 cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c # 查看物理cpu个数 cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l # 查看逻辑cpu个数 cat /proc/cpuinfo | grep "processor" | wc -l cat /proc/…

python随手小练9(南农作业题)

题目1: 用python提供的相关函数计算数学表达式的值 具体操作: a float(input("x:")) #input()输入(默认为字符串str形式) #float()将()内类型转换为浮点型(即有小数点) b a (3*a)/4 #…

《你不知道的Javascript系列》——不可变性immutable

基础 JavaScript中存在以下数据类型: 原生(基本)类型 —— Boolean, Number, String非原始(引用)类型或对象 —— Object, Array, Function特殊 —— Null, Undefined 原生数据类型默认是不可变的,对于常…

好消息FL Studio21.2中文版本发布了!新功能详细介绍

为庆祝 FL Studio 21.2 的发布,所有 FL Studio 用户都可免费使用一个月的 FL Cloud。只需打开 FL Studio 21.2,点击浏览器中的 "声音 "标签即可开始使用。FL Cloud 提供完全集成的采样库、人工智能母带处理和由 DistroKid 支持的数字发行&…

bbr 流相互作用图示

类似 AIMD 收敛图,给出 bbr 的对应图示: bbr 多流相互作用非常复杂,和右下角的 AIMD 相比,毫无美感,但是看一眼左下角的 bbr 单流情况,又过于简陋,而 bbr 的核心就基于这简陋的假设。 浙江温…

【rust/esp32】在idf中使用embedded-graphics控制st7789 LCD屏幕

文章目录 说在前面模块详情准备工作开始编译烧录结果 说在前面 esp32版本:s3运行环境:esp-idf(std)开发环境:wsl2LCD模块:ST7789V2 240*280 LCDgithub地址:这里 模块详情 某宙的esp32s3开发板 某雪的1.69inch LCD模块…

78 子集

子集 题解1 回溯模板 题解2 迭代(mask思想) 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 输入…

AcWing 第127场周赛 构造矩阵

构造题目,考虑去除掉最后一行最后一列先进行考虑,假设除了最后一行和最后一列都已经排好了(你可以随便排),那么分析知最后一个数字由限制以外其他都已经确定了,无解的情况是k为-1 并且n,m的奇偶…

网络编程套接字(1)——简单的UDP网络程序

文章目录 一.预备知识1.理解源IP地址和目的IP地址2.理解源MAC地址和目的MAC地址3.理解源端口号和目的端口号4.PORT VS PID5.认识TCP协议和UDP协议6.网络字节序 二.socket编程接口1.socket常见API2.sockaddr结构 三.简单的UDP网络程序1.服务端创建套接字2.服务端绑定3.字符串IP …

ctf md5爆破

1.知道组成的字符为数字,然后知道加密后的MD5,求组成的字符 import hashlibimport stringdef crackMd5(dst):dst dst.lower()for a in range(0,10):for b in range(0,10):for c in range(0,10):for d in range(0,10):word str(a) str(b) str(c) str(d) "_heetian&q…

【报错】kali安装ngrok报错解决办法(zsh: exec format error: ./ngrok)

问题描述 kali安装ngrok令牌授权失败 在安装配置文件的时候报错:zsh: exec format error: ./ngrok 原因分析: 在Kali Linux上执行./ngrok时出现zsh exec格式错误的问题可能是由于未安装正确版本的ngrok或操作系统不兼容ngrok导致的。以下是一些可能的解…

k8s安装时初始化报错:error execution phase preflight

服务器配置与k8s版本 系统版本: CentOS Linux release 7.9.2009 (Core)内核版本: [rootk8s-node02 tmp]# uname -r 5.4.259-1.el7.elrepo.x86_64k8s版本 v1.15.1 [rootk8s-node1 tmp]# kubeadm version kubeadm version: &version.Info{Major:&q…

(免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐

摘 要 随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理。在现实运用中,应用软件的工作规则和开发步骤,采用Java技术建设农产品销售管理系统。…

人工智能(AI)在医疗领域的应用

人工智能(AI)在医疗领域的应用 人工智能(AI)在医疗领域的应用近年来得到了广泛的关注。其中,AI辅助治疗疾病的技术成为了研究热点。本文将介绍AI辅助治疗疾病的技术,包括其定义、应用场景、案例分析和发展…

jdk10的var局部变量类型推理

注:本人参考了openjdk官网,由于openjdk是开源的,所以不存在侵权行为,本章只为学习,我觉得没有什么比官网更具有话语权 1、jdk10的var的类型推测:就是这种处理将仅限于具有初始值设定项的局部变量、增强型 -…

Android问题笔记四十三:JNI 开发如何快速定位崩溃问题

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&…