Nerfies:可变形神经辐射场

news2024/11/15 19:46:46

Park K, Sinha U, Barron J T, et al. Nerfies: Deformable neural radiance fields[C]//Proceedings of the IEEE/CVF International Conference on Computer Vision. 2021: 5865-5874.

Nerfies 是 Keunhong Park 在 Google 实习时基于 NeRF 模型开发的 可变形神经辐射场 (Deformable neural radiance fields),它能够使用手机随意拍摄的照片或视频,以逼真的方式重建非刚性的可变形场景。

Nerfies 较 NeRF 的改进就是能够处理非刚性变形场景,尤其是手机自拍得到的短视频。通过额外优化一个连续的变形场,可以将每个观测点映射到 NeRF 标准空间下,并且引入了由粗到细优化和弹性正则增强鲁棒性,可以将随意的自拍照片或视频转为 Nerfies,做任意新视图渲染。

在这里插入图片描述

目录

  • 一. 研究思路
    • 1. 可变形神经辐射场
    • 2. 优化工作
  • 二. 可变形神经辐射场
    • 1. 神经辐射场
    • 2. 神经变形场
  • 三. 优化工作
    • 1. 弹性正则化
    • 2. 背景正则化
    • 3. 由粗到细的变形场正则化
  • 四. 实验结果
    • 1. 实现细节
    • 2. 数据集
    • 3. 模型评价
  • 五. 总结
  • 六. 复现

一. 研究思路

  • 3D 人体扫描需要专业的设备和实验室,如果使用手机自拍就可以实现将会有很广阔的应用前景。
  • 但使用手持相机自拍进行 3D 扫描建模有较大困难:因为我们不可能保持静止不动,而且头发、眼镜、耳环等违反了三维重建的假设 1,增加了重建的难度。
  • 文章提出了基于 NeRF 的 变形 (deformation) 建模方法,可以使用自拍短视频进行高质量的三维重建,提供自由视角下的可视化,并且能够精准捕捉头发、眼镜等建模较为困难的部位。

1. 可变形神经辐射场

为了建模 非刚性变形 (non-rigidly deforming scenes) 场景,文章在标准 NeRF 的基础上引入一个额外的组件:变形场 (deformation field),用于将 观测参照系 (observation frame) 中的三维坐标点 扭曲 (warp) 到标准 NeRF 模型的参照系中。由于不同观测视角扭曲到标准 NeRF 的情况不同,因此每个观测视角都设置一个变形场。变形场也用多层感知器 (MLP) 表示,通过学习该视角下图像的隐分布得到,不同视角的变形场各不相同。

非刚性 (non-rigidly):指物体不是刚体(保持刚性形状且只能平移或旋转),可以发生非线性、弯曲、变形等形式的运动或变化。比如一个人在自拍时,身体的许多部位都可以动,而不是整个人的所有部位之间保持相对静止。
变形 (deforming):指非刚性物体的形状或结构发生了变化。

2. 优化工作

为了稳健地对变形场进行优化,文章提出了一种由粗到细的优化方案(思想类似 NeRF 中渲染新视图时的分层抽样),通过频率调整变形场网络中输入的位置编码。优化开始时将高频归零,网络只能学习平滑的变形情况;然后逐渐引入高频进行细化。

二. 可变形神经辐射场

为了建模非刚性变形场景,文章中将场景分解为一个 NeRF 表示的 模板体 (template volume) 和每个观测视角上一个的变形场。变形场负责将观测参照系中的三维坐标点与模板体中的点进行关联,是扩展 NeRF 表示非刚性物体的关键。

从每个视角的隐空间中提取各自的变形码 ω ω ω 和外观码 ψ ψ ψ,变形码 ω ω ω 用于构建该视角下的变形场,外观码 ψ ψ ψ 用于处理特定视角下的颜色和外观变化。 在观测参考系中追踪摄像机光线的轨迹,使用变形场将光线上的采样点 ( x , y , z ) (x, y, z) (x,y,z) 扭曲到标准 NeRF 模型中得到 ( x ′ , y ′ , z ′ ) (x', y', z') (x,y,z)。渲染视图时使用转换后的样本 ( x ′ , y ′ , z ′ ) (x', y', z') (x,y,z)、观察方向 ( θ , φ ) (θ, φ) (θ,φ) 和外观码 ψ ψ ψ 作为输入传入模板 NeRF,并沿着光线对样本进行积分。
在这里插入图片描述

1. 神经辐射场

关于神经辐射场 NeRF 的详细介绍见 NeRF:将场景表示为神经辐射场以用于视图合成。但 NeRF 的采样过程要求场景不发生变形,而人们在摆姿势拍照时很难保持姿势不变。

本文使用 NeRF 作为场景的规范模板,用于表示场景的相对结构和外观,而渲染时则使用模板的非刚性变形版本。
在这里插入图片描述

2. 神经变形场

每个观测视角 i i i i ∈ { 1 , 2 , … , n } i \in \{1, 2, \dots, n\} i{1,2,,n})处应用一个变形场,用于将观测域中的坐标扭曲到模板域中,该映射记为:
T i : x → x ′ T_i: \bold{x} \rightarrow \bold{x'} Ti:xx
于是整个场景内所有视角下的变形场的映射可以表示为:
T : ( x , ω i ) → x ′ T: (\bold{x}, ω_i) \rightarrow \bold{x'} T:(x,ωi)x

若给定标准域 F F F 和观测域到标准域的映射 T T T,则渲染结果可以表示为:
G ( x , d , ψ i , ω i ) = F ( T ( x , ω i ) , d , ψ i ) G(\bold{x}, \bold{d}, ψ_i, ω_i)=F(T(\bold{x}, ω_i), \bold{d}, ψ_i) G(x,d,ψi,ωi)=F(T(x,ωi),d,ψi)

渲染时只需简单地在观测视角处发射光线并沿着光线取采样点,然后使用变形场将采样点映射到模板上。

三. 优化工作

由于 NeRF 模板体和变形场都是由多层感知机表示,如果一起优化会出现 欠约束的优化问题 (under-constrained optimization problem)。因此,文章引入了变形场景的弹性正则化、背景正则化,以及由粗到细的连续退火技术。

欠约束的优化问题 (under-constrained optimization problem):优化过程中有太多的自由度或变量,但约束条件相对较少,因此可能存在多个可能的解决方案,即约束条件不足以唯一确定一个最优解。在这种情况下,优化算法可能会产生多个合理的解决方案,或者难以找到一个满足所有约束条件的解决方案。

1. 弹性正则化

变形场增加了优化过程中的不确定性。因此在处理非刚性物体变形时,通常引入 弹性能量 (elastic energy) 来捕捉局部形状的非刚性特性,文中通过弹性能量测量局部变形与刚性运动的偏差。

通过计算局部变形场的雅可比矩阵 (Jacobian),可以控制局部变形行为。此外,有多种方法计算雅可比矩阵与最优旋转矩阵之间的差异 2,作者选择使用雅可比矩阵的奇异值并测量其与单位矩阵的差异。这种方法通过对奇异值的对数来平衡扩展和收缩,从而实现更好的性能:
L elastic  ( x ) = ∥ log ⁡ Σ − log ⁡ I ∥ F 2 = ∥ log ⁡ Σ ∥ F 2 L_{\text {elastic }}(\mathbf{x})=\|\log \boldsymbol{\Sigma}-\log \mathbf{I}\|_F^2=\|\log \boldsymbol{\Sigma}\|_F^2 Lelastic (x)=logΣlogIF2=logΣF2

2. 背景正则化

由于变形场不受约束,因此一些本该保持静止的物体也可能发生变形。为了防止这些物体的变形,文章引入了正则化项以限制它们的运动,从而保持其在场景中的固定位置。给定一组静态的三维空间点 { x 1 … , x K } \{\mathbf{x}_1 \ldots, \mathbf{x}_K\} {x1,xK},定义防止变形的正则项为:
L b g = 1 K ∑ k = 1 K ∥ T ( x k ) − x k ∥ 2 L_{\mathrm{bg}}=\frac{1}{K} \sum_{k=1}^K\left\|T\left(\mathbf{x}_k\right)-\mathbf{x}_k\right\|_2 Lbg=K1k=1KT(xk)xk2

该正则项不仅可以防止背景点的移动,还有助于将观测域与模板域对齐。

3. 由粗到细的变形场正则化

在配准和流估计过程中出现的一个常见问题就是在建模微小变形和大型运动之间的权衡,这可能会导致过度平滑的结果或不正确的配准(局部极小值)。文章中使用一个由粗到细的正则化来缓解。

配准(Registration):将两个或多个图像或数据集的内容进行对齐,以便它们在相同的坐标系中可进行比较或叠加。配准通常用于将不同视角或时间点的图像或数据对准,以便进行对象跟踪、目标检测、图像融合等应用。
流估计(Flow Estimation):在连续帧图像之间估计表面上各点的像素位移,用于捕捉对象或场景中的像素级运动信息。流估计用于跟踪对象的运动、分析相机的运动、检测运动物体等应用。

NeRF 在位置编码时使用的超参数 m m m 可以控制编码中的频带数量(即编码的精细程度),用于控制网络的平滑度。 m m m 的值越小,编码中包含的高频信息越少,结果看起来平滑但图像分辨率越低; m m m 的值越大,编码中包含的高频信息越多,图像分辨率越高。

频带数量:可以理解为编码的精细程度,即在使用某种编码方法表达数据时包含了多少细节或高频信息。频带数量越多,精细程度越高,表示的数据越具有细节、高频特征,反之亦然。

在这里插入图片描述

如上图中所示,变形场的 m m m 值较小时模型无法捕捉微笑的微小变形; m m m 较大时模型不能正确旋转头部,因为模板过度拟合到一个未优化的变形场。因此需要选择适当的编码精细度来平衡图像或数据的平滑度和细节捕捉。为此,论文提出从低频偏差开始到高频偏差结束的由粗到细的方法。更多细节见 26、Nerfies:Deformable Neural Radiance Fields。

四. 实验结果

1. 实现细节

  • 模板 NeRF:同原始 NeRF 模型,并在计算体积密度时使用了 Softplus 激活函数 l n ( 1 + e x ) ln(1 + e^x) ln(1+ex)
  • 变形场:深度 6,隐藏层大小 128,并在第 4 层增加了跳跃连接。
  • 光线采样:256 个粗细光线采样,全高清 (1920×1080) 模型。
  • 隐变量:8 维变形码和外观码。
  • 训练资源:8 块 V100 GPU 训练,全高清模型需一周,半分辨率模型需 16 小时。

2. 数据集

3. 模型评价

见 26、Nerfies:Deformable Neural Radiance Fields

五. 总结

Nerfies 首创性地实现了使用手机随意拍摄的照片或视频真实重建非刚性变形场景的方法。通过额外优化一个变形场,将每个观察样本点扭曲成标准的 5D NeRF 坐标。

六. 复现

Nerfies 并不基于 Pytorch 或 Tensorflow,而是使用 JAX 实现的,构建于 JaxNeRF 之上。

  • 平台:Google Colab
  • 源码:https://github.com/google/nerfies

实验记录

  1. 第一次执行 Nerfies Capture Processing v2.ipynb 时上传的视频为 https://nerfies.github.io/static/videos/chair-tp.mp4,执行到 Reconstruction 时报错捕获图像数量不够,改为上传 https://nerfies.github.io/static/videos/teaser.mp4 的视频;

实验结果


  1. 3D视觉基础 ↩︎

  2. 论文随记|Nerfies:Deformable Neural Radiance Fields ↩︎

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

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

相关文章

Qt界面实现中英文切换

要实现的效果,是下拉列表切换中文和English实现按钮文本中英文内容切换。 实现步骤: 1.在VS中鼠标对Translation Files文件右击,选择“添加”--->“模块”. 在弹窗的窗口中选择“Qt”--->“Qt Translation File”。 添加Translation_e…

操作系统(02326)考试题库

博客主页:https://tomcat.blog.csdn.net 博主昵称:农民工老王 主要领域:Java、Linux、K8S 期待大家的关注💖点赞👍收藏⭐留言💬 目录 单选题多选题主观题 单选题 把并发进程中与共享变量有关的程序段称为…

DoLa:对比层解码提高大型语言模型的事实性

DoLa:对比层解码提高大型语言模型的事实性 摘要1 引言2 方法2.1 事实知识在不同层级上演化2.2 动态早期层选择2.3 预测对比 3 实验3.1 任务3.2 实验设置3.3 多项选择3.3.1 TruthfulQA:多项选择3.3.2 FACTOR:维基、新闻 3.4 开放式文本生成3.4…

polyloss详解

1、常见的泰勒展开公式 2、polyloss引入动机 2.1、polyloss定义 polyloss通过泰勒展开来逼近损失函数的简单框架,将损失函数设计为多项式函数的线性组合 2.2、polyloss主要贡献 提出了一个新的框架来理解和设计损失函数 PolyLoss可以让多项式基根据目标任务和数…

JVM虚拟机:Java对象的头信息有什么?

本文重点 在前面的课程中,我们学习了对象头,其中对象头包含Mark Word和class pointer,当然数组还会有一个数组长度。本文主要分析Mark Work中包含的信息。 Mark Word 以下两张图是一个意思: 32位 32位 64位 以上就是Mark Word会存储的信息,这个意思是说Java对象在不同…

如何使用手机蓝牙设备作为电脑的解锁工具像动态锁那样,蓝牙接近了电脑,电脑自动解锁无需输入开机密码

环境: Win10 专业版 远程解锁 蓝牙解锁小程序 问题描述: 如何使用手机蓝牙设备作为电脑的解锁工具像动态锁那样,蓝牙接近了电脑,电脑自动解锁无需输入开机密码 手机不需要拿出来,在口袋里就可以自动解锁&#xff…

「林曦的亲子美育」讲讲关于阅读的那些事儿

「林曦的亲子美育」是“林曦的小世界”2023年策划的一档新栏目。林曦老师作为一个“小男生的妈妈”,在这些年分享了许多关于亲子教育的心得:以“美”作为连接和最高标准,会护持着小朋友的选择和人生。教育是一个生活的过程。做一餐饭、读一本书、看一张画…

存储器概述

一、存储系统基本概念

vector容器初始化和对象

(1)a.assign(b.begin(), b.begin()3); //b为向量,将b的0~2个元素构成的向量赋给a (2)a.assign(4,2); //是a只含4个元素,且每个元素为2 (3)a.back(); //返回a的最后一个元素 &#xf…

Python入口顶部人体检测统计进出人数

程序示例精选 Python入口顶部人体检测统计进出人数 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《Python入口顶部人体检测统计进出人数》编写代码,代码整洁,规则&a…

【OpenCV实现平滑图像形态学变化】

文章目录 概要目标腐蚀膨胀开运算结构元素(内核)小结 概要 形态学变化是一组简单的图像操作,主要用于处理二值图像,即只包含黑和白两种颜色的图像。这些操作通常需要两个输入,原始图像和一个内核(kernel&a…

计算机操作系统重点概念整理-第三章 进程同步【期末复习|考研复习】

第三章 进程同步 【期末复习|考研复习】 计算机系统系列文章传送门: 第一章 计算机系统概述 第二章 进程管理 第三章 进程同步 第四章 内存管理 第五章 文件管理 第六章 输出输出I/O管理 文章目录 第三章 进程同步 【期末复习|考研复习】前言三、进程同步3.1 临界资…

腾讯云优惠券、代金券、云服务器折扣券领取方法及使用教程

腾讯云优惠券是腾讯云为用户提供的一种优惠活动,通常包括代金券和折扣券两种类型,代金券可以在购买腾讯云相关产品时直接抵扣订单金额,而折扣券则可以在购买腾讯云相关产品时享受一定的折扣。 腾讯云作为国内领先的云计算服务提供商&#xff…

构建客户门户的痛点及低代码工具解决方案

企业如何做好数字化转型呢? 如果笼统地说起“数字化转型”,这个概念太大了,它涉及到了企业管理中的方方面面。数字化转型是一个持续不断的过程,既要在整体上进行数字规划,也需要从细节入手,将每一个步骤进…

MQTT(详解)

什么是MQTT MQTT(Message Queuing Telemetry Transport)是一种轻量级的通信协议,用于在设备之间传输消息。它通常用于物联网(IoT)和传感器网络中,可以在不同设备之间进行可靠的通信,而且资源消耗…

单元测试,集成测试,系统测试的区别是什么?

实际的测试工作当中,我们会从不同的角度对软件测试的活动进行分类,题主说的“单元测试,集成测试,系统测试”,是按照开发阶段进行测试活动的划分。这种划分完整的分类,其实是分为四种“单元测试,…

分布式消息队列:Rabbitmq(2)

目录 一:交换机 1:Direct交换机 1.1生产者端代码: 1.2:消费者端代码: 2:Topic主题交换机 2.1:生产者代码: 2.2:消费者代码: 二:核心特性 2.1:消息过期机制 2.1.1:给队列中的全部消息指定过期时间 2.1.2:给某条消息指定过期时间 2.2:死信队列 一:交换机 1:Direct交…

Gloss优化

Gloss优化,Route – Gloss – Parameters .清除不必要的线和过孔,圆滑线,焊盘中间的线,把转角变成圆弧,自动布线总会产生一些布线效果不好、多余过孔等问题。此时可以利用allegro提供的Gloss命令对设计进行优化和调整&…

Facebook广告效果数据获取

一、背景 公司每年在Facebook和Google上投放了大量的广告,我总不能让老板登录Facebook广告投放平台上去看广告效果,其实老板只关注每天花了多少钱引来了多少客户,每个客户平均花费多少钱,其它的他才不关心,有Facebook…

工作小计-GPU硬编以及依赖库 nvcuvidnvidia-encode

工作小计-GPU编码以及依赖库 已经是第三篇关于编解码的记录了。项目中用到GPU编码很久了,因为yuv太大,所以编码显得很重要。这次遇到的问题是环境的搭建问题。需要把开发机上的环境放到docker中,以保证docker中同样可以进行GPU的编码。 1 定…