【三维编辑】Seal-3D:基于NeRF的交互式像素级编辑

在这里插入图片描述

文章目录

  • 摘要
  • 一、引言
  • 二、方法
    • 2.1.基于nerf的编辑问题概述
    • 2.2.编辑指导生成
    • 2.3.即时预览的两阶段学生训练
  • 三、实验
  • 四、代码
  • 总结


项目主页: https://windingwind.github.io/seal-3d/
代码:https://github.com/windingwind/seal-3d/
论文: https://arxiv.org/pdf/2307.15131

摘要

随着隐式神经表征(即NeRF)的流行,迫切需要编辑方法与隐式3D模型交互,如后处理重建场景和3D内容创建。之前的工作在编辑的灵活性、质量和速度方面都受到了限制,为了能够直接响应编辑指令立即更新。提出的Seal-3D 它允许用户以像素级和自由的方式使用各种NeRF类主干来编辑NeRF模型,并立即预览编辑效果。为了实现这些效果,我们 提出的代理函数将编辑指令映射到NeRF模型的原始空间,以及采用 局部预训练和全局微调的师生训练策略,解决了这些挑战。建立了一个NeRF编辑系统来展示各种编辑类型,可以以大约1秒的交互速度实现引人注目的编辑效果。


一、引言

得益于高重建精度和相对低的内存消耗,NeRF及其变体在许多3D应用中显示出了巨大的潜力,如3D重建、新视图合成和虚拟/增强现实。当前迫切需要人类友好的编辑工具来与这些3D模型交互。由于捕获数据的噪声和重建算法的局限性,从现实世界中重建的对象很可能包含伪影

之前的作品曾尝试编辑由NeRF表示的3D场景,包括对象分割[19,41Edit NeRF]、对象去除[18 Nerf-in]、外观编辑[Palettenerf 13,Nerf-editing25]、对象混合[Template nerf7]等,主要集中在粗粒度的对象级编辑上,其收敛速度不能满足交互式编辑的要求。最近的一些方法[Neumesh 45,Nerf-editing 5]通过引入网格作为编辑代理,将NeRF的编辑转换为网格编辑。这需要用户操作一个额外的网格划分工具,这限制了交互性和用户友好性。

点云、纹理网格和occupancy volume等 显式3D表示,存储对象和场景的显式几何结构;隐式表示使用神经网络来查询3D场景的特征,包括几何和颜色。现有的三维编辑方法,以基于网格的表示为例,可以通过替换与目标对象的表面面积和对象纹理对应的顶点来改变对象的几何图形。如果视觉效果和潜在表征之间没有明确可解释的对应关系,编辑隐式3D模型是间接的和具有挑战性的。此外,很难在场景的局部区域找到隐式的网络参数,这意味着网络参数的适应可能会导致不希望发生的全局变化。这给细粒度编辑带来了更多的挑战。

本文提出了一种交互式像素级编辑的三维场景隐式神经表示方法和系统,Seal-3D(借用了软件Adobe PhotoShop )。如图1所示,编辑系统的密封工具包括四种编辑:1)边界箱工具。它可以转换和缩放边界框内的东西,就像复制-粘贴操作一样。2)刷子工具。它在选定的区域上油漆指定的颜色,并可以增加或减少表面高度,就像油漆刷或擦伤器一样。3)固定工具。它允许用户自由地移动一个控制点,并根据用户的输入影响其邻居空间。4)使用颜色的工具。它会编辑对象表面的颜色

首先,为了建立显式编辑指令与隐式网络参数更新之间的对应关系,我们提出了将目标三维空间(由用户从交互式GUI编辑指令决定)映射到原始三维场景空间的代理功能,以及师生精馏策略,利用代理功能从原始场景获得的相应内容监督来更新参数。其次,为了实现局部编辑,即减轻局部编辑效应对非局部隐式表示下全局三维场景的影响,我们提出了一个两阶段的训练过程:预训练阶段只更新编辑区域,同时冻结后续MLP解码器以防止全局退化,微调阶段更新嵌入网格和MLP解码器的全局光度损失。通过这种设计,预训练阶段更新了局部编辑特性(预训练可以非常快速地收敛,并且只在大约1秒内呈现局部编辑效果),而微调阶段将局部编辑区域与未编辑空间的全局结构和未编辑空间的颜色混合起来,以实现视图的一致性。

二、方法

交互式像素级编辑的Seal-3D,框架如图2所示,它包括一个像素级的代理映射函数、一个师生训练框架和一个在该框架下的学生NeRF网络的两阶段训练策略。我们的编辑工作流从 代理函数 开始,它根据用户指定的编辑规则映射查询点和射线方向。然后是一个NeRF-to-NeRF教师-学生蒸馏框架,其中一个具有编辑几何和颜色映射规则的教师模型监督学生模型的训练(3.2节)。交互式细粒度编辑的关键是对学生模型的两阶段训练(3.3节)。额外的预训练阶段,对教师模型中编辑空间内的点、射线方向和推断的GT进行采样、计算和缓存;只有具有局部性的参数被更新,导致全局变化的参数被冻结。预训练之后,全局训练阶段 finetune 学生模型。
在这里插入图片描述

2.1.基于nerf的编辑问题概述

2.1.1 NeRF 基础知识,请见我的博客:【三维重建】NeRF原理+代码讲解

2.1.2 基于nerf编辑的挑战

三维场景由网络参数隐式表示,缺乏可解释性,难以操纵。在场景编辑方面,很难在显式编辑指令和网络参数的隐式更新之间找到一个映射。以前的工作试图通过几种受限的方法来解决这个问题:

NeRF-Editing和NeuMesh引入了一个网格支架作为几何代理来辅助编辑,这将NeRF编辑任务简化为网格修改。虽然符合现有的基于网格的编辑,但编辑过程需要提取一个额外的网格,这很麻烦。此外,编辑后的几何图形高度依赖于网格代理结构,使得在表示这些空间时很难编辑不容易或不能用网格表示的空间是隐式表示的一个关键特征。Liu等人[ Editing conditional radiance fields] 设计了额外的颜色和形状损失来监督编辑。然而,它们的设计loss 仅发生在二维光度空间中,这限制了三维NeRF模型的编辑能力。

2.2.编辑指导生成

我们的设计将 NeRF编辑看作一个知识蒸馏的过程。给定一个预先训练的NeRF网络拟合一个特定的场景作为教师网络,我们用预先训练的权值初始化一个额外的NeRF网络作为学生网络。教师网络 fθT 根据用户输入的编辑指令生成编辑指导,而学生网络 fθS 通过从教师网络输出的编辑指导中提取编辑知识进行优化

首先,从交互式NeRF编辑器中读取用户编辑指令作为像素级信息。源空间S⊂R3 为原始NeRF模型的三维空间,目标空间T⊂R3 为编辑后的NeRF模型的三维空间。目标空间T通过Fm 扭曲到原始空间S:T→S。Fm 根据以下编辑规则对目标空间内的点及其相关方向进行变换:函数中,每个三维点和观察方向的“伪”期望编辑效果cT,σT ,可以通过查询教师NeRF模型 fθT 。过程可表示为:
在这里插入图片描述
其中,xs、ds 表示源空间点的位置和方向,xt、dt 表示目标空间点的位置和方向。简单起见,此过程可定义为教师模型的预测:Ft := fθT ◦ Fm:(xt,dt)→(cT,σT

推理结果cT,σT 模拟编辑后的场景,作为网络优化阶段由学生网络提取信息的教师标签。Fm 的映射规则可以根据任意的编辑目标进行设计(本文为4种类型的编辑)

  1. 边界形状工具(Bounding shape tool)

3D编辑软件常见功能,包括 复制粘贴、旋转和调整大小。用户提供一个边界形状来指示要编辑的原始空间S,并旋转、翻转和缩放边界框,以指示目标效果。然后,目标空间 T 和映射函数 Fm 由接口进行解析:

在这里插入图片描述

其中R是旋转,S是尺度,cs,ct 分别是S,T的中心.。该工具甚至支持跨场景对象转移,这可以通过引入转移对象的NeRF作为一个额外的教师网络,负责目标区域内的部分教师推理过程。图7是效果图

  1. 刷子工具(Brushing tool)

类似于造型刷,提升或下降绘制的表面。用户使用笔刷画出草图,通过将射线投影在刷过的像素上生成 S。笔刷标准值 n 和压力值 p(·)∈[0,1] 由用户定义,它决定了映射:
在这里插入图片描述

  1. 锚工具(Anchor tool)

用户定义一个控制点xc和一个平移向量t。xc 周围的区域将被平移函数拉伸(·;xc、t)拉伸。那么这个映射是它的倒数:

在这里插入图片描述
拉伸的显式表达式(·;xc、t)请参考补充材料。

  1. 颜色工具(Color tool)

通过颜色空间映射(单一颜色或纹理)编辑颜色(空间映射相同)。我们直接在HSL空间中映射网络输出的颜色,这有助于提高颜色的一致性。该方法能够在修改后的表面上保留阴影细节(例如阴影)。我们通过将原始表面颜色上的亮度(在HSL空间中)偏移量转移到目标表面颜色来实现这一点。这个阴影保存策略的实现细节在补充中提出。

2.3.即时预览的两阶段学生训练

蒸馏训练策略,直接应用等式累积的像素值 C ^ \hat{C} C^ D ^ \hat{D} D^之间的photometric 损失,教师模型为学生模型提供 编辑指导。该训练过程收敛速度较慢(≈30s或更长)因而采用两阶段的训练策略:第一阶段的目标是立即收敛(在1秒内),这样一个粗编辑结果就可以立即作为预览呈现给用户;第二阶段进一步细化粗预览以获得最终的细化。

1. 即时预览的局部预训练。通常,编辑空间相对较小,对全局光度损失的训练导致收敛慢。为实现编辑即时预览,我们在全局训练开始前采用了局部预训练

1)均匀采样目标空间内一组点 X⊂T 和单位球上的方向D,将其输入教师推理过程Ft ,得到教师标签cT、σT,并提前缓存;
2)通过局部预训练损失对学生网络进行训练:

在这里插入图片描述

其中,cS,σS是学生网络预测的采样点(x∈X)的颜色和密度,cT,σT 是缓存的教师标签。预训练只需1秒,学生网络会显示出与编辑说明一致的合理的颜色和形状

然而,由于非局部隐式神经网络,只对编辑区域的局部点进行训练,可能会导致其他与编辑无关的全局区域的退化。我们观察到,在混合隐式表示(如Intant NGP)中,局部信息主要存储在位置嵌入网格中,而后续的MLP对全局信息进行解码。因此,在这个阶段,MLP解码器的所有参数都被冻结,以防止全局退化。见实验插图12

在这里插入图片描述
2. 全局微调

经过预训练后,我们继续微调 fθS,将粗预览细化为完全收敛的结果。这个阶段类似于标准的NeRF训练,除了监督标签是由教师推理过程而不是图像像素生成的。

在这里插入图片描述

其中R表示小批中采样的射线集合。

值得一提的是,学生网络能够产生比它所学习的教师网络质量更好的结果。这是因为教师推理过程中的映射操作可能会在伪GT中产生一些视图不一致的artifacts。然而,在蒸馏过程中,由于加强视图一致性稳健性的多视图训练,学生网络可以自动消除这些伪影,如图6所示。

在这里插入图片描述

三、实验

  1. 实验设置

实验采用 Instant-NGP作为编辑框架的NeRF骨干。设置λ1 = λ2 = 1,学习速率固定为0.05。在微调阶段,我们设置了λ3 = λ4 = 1,初始学习率为0.01。

训练数据选合成 NeRF Blender Dataset,以及真实世界捕获的 Tanks 和
Temples [12] and DTU [10] 数据集。

  1. 效果

边界形状(图4和6)效果:
在这里插入图片描述
brushing 效果:
在这里插入图片描述

锚点(图5)和颜色(图1)效果:
在这里插入图片描述

与NueMesh的对比:
在这里插入图片描述

四、代码

渲染代码:nerf/rendering.py line256 函数run_cuda,得到射线的颜色和深度:

xyzs, dirs, deltas = raymarching.march_rays(n_alive, n_step, rays_alive, rays_t, rays_o, rays_d, self.bound, self.density_bitfield, self.cascade, self.grid_size, nears, fars, 128, perturb if step == 0 else False, dt_gamma, max_steps)

raymarching.march_rays调用了raymarching/raymarching.py 中line297的类: _march_rays(Function)的forward




总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

k8s-----集群调度

目录 一:调度约束 二:Pod 启动创建过程 三:k8s调度过程 1、Predicate 有一系列的常见的算法 2、常见优先级选项 3、指定调度节点 (1)nodeName指定 (2)nodeSelector指定 四:亲和…

并发编程面试题2

并发编程面试题2 一、AQS高频问题: 1.1 AQS是什么? AQS就是一个抽象队列同步器,abstract queued sychronizer,本质就是一个抽象类。 AQS中有一个核心属性state,其次还有一个双向链表以及一个单项链表。 首先state…

Mac 卸载appium

安装了最新版的appium 2.0.1,使用中各种问题,卡顿....,最终决定回退的。记录下卸载的过程 1.打开终端应用程序 2.卸载全局安装的 Appium 运行以下命令以卸载全局安装的 Appium: npm uninstall -g appium 出现报错:Error: EACCES: permiss…

阿里云服务器带宽计费模式怎么选?有什么区别?

阿里云服务器公网带宽计费模式按固定带宽和按使用流量哪个划算?阿里云百科以北京地域为例,按固定带宽计费1M带宽一个月23元,按使用流量计费1GB流量0.8元,如果云服务器带宽使用率低于10%,那么首选按使用流量计费&#x…

stepin设置菜单icon的两种方式——基础积累

最近在看大佬写的stepin后台管理系统,框架是vue3antd3.xvite,下面记录一下,菜单图标的使用方法。 1.第一种方法就是使用antd中的icon图标 书写方式如下: {path: /,name: 首页,redirect: /analysis,meta: {title: 首页,renderMen…

Untiy Json和Xml的序列化和反序列化

Json的序列化和反序列化 1.定义数据类 [Serializable] public class ZoomPoint {// 点名称, 将作为Key被字典存储public string name;// 轴心X坐标public Vector2 pivot Vector2.one / 2;// 放大倍率,小于1是为缩小倍率,小于0是取绝对值,不…

redis学习笔记(九)

文章目录 python对redis基本操作(1)连接redis(2)数据类型操作 python对redis基本操作 (1)连接redis # 方式1 import redisr redis.Redis(host127.0.0.1, port6379) r.set(foo, Bar) print(r.get(foo))# …

【MOOC】北京理工大学Python网络爬虫与信息提取慕课答案-综合挑出了一些很难评的慕课测验题

1 Requests库中的get()方法最常用,下面哪个说法正确?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬…

mysql 技术总结

一、mysql 索引(左小右大) 下图中为二叉树 mysql索引类型以及数据结构 BTREE结构 BTree又叫多路平衡搜索树,一颗m叉的BTree特性如下: 树中每个节点最多包含m个孩子。 除根节点与叶子节点外,每个节点至少有[ceil(m/2…

【LeetCode每日一题】——575.分糖果

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 哈希表 二【题目难度】 简单 三【题目编号】 575.分糖果 四【题目描述】 Alice 有 n 枚糖&…

Qt5开发视频播放器

一、播放器界面UI设计 控件对象名位置(坐标点)对象名称组件名称备注Widget(0, 0, 809, 572)WidgetQWidgetlabellabelQLabel播放窗口label_2label_2QLabelvoice_controlvoice_controlQSlider音量滑动条btn_openbtn_openQPushButton打开文件按钮label_4la…

uniapp软键盘谈起遮住输入框和头部被顶起的问题解决

推荐: pages.json中配置如下可解决头部被顶起和表单被遮住的问题。 { "path": "pages/debug/protocol/tagWord", "style": { "app-plus": { "soft…

JAVA多线程和并发基础面试问答(翻译)

JAVA多线程和并发基础面试问答(翻译) java多线程面试问题 1. 进程和线程之间有什么不同? 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用。而线程是在进程中执行的一个任务。Java运行环境是一个包含了不同的类和程序…

web基础和tomcat的安装,部署jpress应用

目录 1. 简述静态网页和动态网页的区别。 2. 简述 Webl.0 和 Web2.0 的区别。 3. 安装tomcat8,配置服务启动脚本,部署jpress应用。 1. 简述静态网页和动态网页的区别。 【1】定义区别 请求响应信息,发给客户端进行处理,由浏览…

snapshotter not loaded: overlayfs: invalid argument

测试containerd是否能创建和启动成功 执行如下命令拉取镜像并创建容器: 拉取容器 ctr i pull docker.io/library/nginx:alpine 创建容器 ctr c create --net-host docker.io/library/nginx:alpine nginx ctr task start -d nginx查看Containerd服务启动信息&…

LAXCUS分布式操作系统:技术创新引领高性能计算与人工智能新时代

随着科技的飞速发展,高性能计算、并行计算、分布式计算、大数据、人工智能等技术在各个领域得到了广泛应用。在这个过程中,LAXCUS分布式操作系统以其卓越的技术创新和强大的性能表现,成为了业界的佼佼者。本文将围绕LAXCUS分布式操作系统的技…

Centos7多台服务器免密登录

准备四台服务器: docker0 docker1 docker2 docker3 在docker0服务器上生成公钥和私钥 [rootwww ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory /root/.ssh. Enter passp…

苹果正在测试新款Mac mini:搭载M3芯片 配备24GB大内存

据悉苹果目前正在测试新的Mac机型,亮点是采用最新的M3芯片。 据报道,首款搭载M3芯片的设备应该是13英寸的MacBook Pro和重新设计的MacBook Air,Mac mini机型并不在名单上。 M3和M2同样拥有最多8个核心,分别为4个性能核和4个能效核…

【Pytroch】基于决策树算法的数据分类预测(Excel可直接替换数据)

【Pytroch】基于决策树算法的数据分类预测(Excel可直接替换数据) 1.模型原理2.数学公式3.文件结构4.Excel数据5.下载地址6.完整代码7.运行结果 1.模型原理 决策树是一种常用的机器学习算法,用于分类和回归任务。它通过树状结构表示数据的决策…

【Python常用函数】一文让你彻底掌握Python中的toad.quality函数

任何事情都是由量变到质变的过程,学习Python也不例外。只有把一个语言中的常用函数了如指掌了,才能在处理问题的过程中得心应手,快速地找到最优方案。本文和你一起来探索Python中的toad.quality函数,让你以最短的时间明白这个函数…