GaussianEditor:根据用户指令编辑三维 GS 场景

Paper: Fang J, Wang J, Zhang X, et al. Gaussianeditor: Editing 3d gaussians delicately with text instructions[J]. arXiv preprint arXiv:2311.16037, 2023.
Introduction: https://gaussianeditor.github.io/
Code: Unreleased

本篇的 GaussianEditor 和 NTU 的 GaussianEditor 是同期工作,两篇都中了 CVPR 2024。本篇的 GaussianEditor 能够根据用户指令,在 20 分钟内完成对原有 3D GS 表示的三维场景的编辑任务。

GaussianEditor 先根据用户指令在 GS 场景中提取候选区域,然后使用扩散模型对场景的渲染视图进行编辑,最后反向传播优化候选区域的 Gaussians 参数。

在这里插入图片描述

目录

  • 一. 研究思路
    • 1. 候选编辑区域的文本描述提取
    • 2. 候选编辑区域的场景对齐
    • 3. 候选编辑区域的场景编辑
  • 二. 候选编辑区域的文本描述提取
    • 1. 原始场景的文本描述提取
    • 2. 候选编辑区域的文本描述提取
  • 三. 候选编辑区域的场景对齐
  • 四. 候选编辑区域的场景编辑
  • 五. 实验
  • 六. 总结

一. 研究思路

由于 3D-GS 显示表达的优势,可以通过调整 Gaussians 参数来实现对三维场景的编辑。GaussianEditor 分为以下三个步骤:
在这里插入图片描述

记原始 GS 场景为 G ori \mathcal{G}_{\text {ori}} Gori,用户指令为 T \mathcal{T} T,GaussianEditor 为 E \mathcal{E} E,编辑后场景为 G ed \mathcal{G}_{\text {ed}} Ged,因此有 G ed = E ( G ori , T ) \mathcal{G}_{\text {ed}}=\mathcal{E}(\mathcal{G}_{\text {ori}}, \mathcal{T}) Ged=E(Gori,T)

1. 候选编辑区域的文本描述提取

根据用户编辑指令,结合原始 GS 场景,得到需要编辑的 候选区域 (region of interest, RoI) 的文本形式:

  1. 使用场景语言生成模型 F \mathcal{F} F 获取原始场景 G ori \mathcal{G}_{\text {ori}} Gori 的文本描述 T dsc \mathcal{T}_{\text {dsc}} Tdsc
  2. 将文本描述 T dsc \mathcal{T}_{\text {dsc}} Tdsc 和用户指令 T \mathcal{T} T 结合,使用模板 T tmp \mathcal{T}_{\text {tmp}} Ttmp 得到用户信息 T usr  \mathcal{T}_{\text {usr }} Tusr 
  3. 使用大语言模型辅助 A \mathcal{A} A 解析用户信息 T usr  \mathcal{T}_{\text {usr }} Tusr  得到候选编辑区域的文本形式 T RoI \mathcal{T}_{\text {RoI}} TRoI

2. 候选编辑区域的场景对齐

将候选编辑区域的文本形式对齐到 GS 场景中:

  1. 将候选编辑区域的文本形式 T RoI \mathcal{T}_{\text {RoI}} TRoI 转换为图像形式 I RoI \mathcal{I}_{\text {RoI}} IRoI
  2. 将图像形式的候选编辑区域 I RoI \mathcal{I}_{\text {RoI}} IRoI 转换为 3D-GS 形式 G RoI \mathcal{G}_{\text {RoI}} GRoI

3. 候选编辑区域的场景编辑

对 GS 的候选编辑区域进行编辑:

  1. 选择任意视角的渲染图象 I r d \mathcal{I}_{rd} Ird,使用扩散模型编辑得到 I e d \mathcal{I}_{ed} Ied
  2. 计算 I r d \mathcal{I}_{rd} Ird I e d \mathcal{I}_{ed} Ied 之间的损失;
  3. 在 3D 候选编辑区域 G RoI \mathcal{G}_{\text {RoI}} GRoI 上优化参数;

二. 候选编辑区域的文本描述提取

在这里插入图片描述

1. 原始场景的文本描述提取

想要提取候选编辑区域的文本描述,需要先使用场景语言生成模型 F \mathcal{F} F 获取原始场景 G ori \mathcal{G}_{\text {ori}} Gori 的文本描述 T dsc \mathcal{T}_{\text {dsc}} Tdsc
T dsc  = F ( G ori ) \mathcal{T}_{\text {dsc }}=\mathcal{F}\left(\mathcal{G}_{\text {ori}}\right) Tdsc =F(Gori)

具体流程如下:

  1. 使用 splatting 技术采样并渲染一组 2D 图像: I rd = { I 1 , I 2 , … , I M } \mathcal{I}_{\text {rd}}=\{\mathcal{I}_1, \mathcal{I}_2, \dots, \mathcal{I}_\mathcal{M}\} Ird={I1,I2,,IM},其中 M \mathcal{M} M 是采样的图像数量;
  2. 将每张渲染图像传入多模态模型 C \mathcal{C} C(实验中使用 BLIP2)中,结合预先定义的 prompt 文本 P c \mathcal{P}_c Pc(如 “What is the content of the image”)得到每张图像的文本描述 T img = { T 1 , T 2 , … , T M } \mathcal{T}_{\text {img}}=\{\mathcal{T}_1, \mathcal{T}_2, \dots, \mathcal{T}_\mathcal{M}\} Timg={T1,T2,,TM}
    T k = C ( P c , I k ) , k ∈ M \mathcal{T}_k=\mathcal{C}\left(\mathcal{P}_c, \mathcal{I}_k\right), k \in \mathcal{M} Tk=C(Pc,Ik),kM
  3. 将每张图像的文本描述 T img \mathcal{T}_{\text {img}} Timg 传入大语言模型 A \mathcal{A} A(实验中使用 GPT-3.5 Turbo),结合预先定义的 prompt 文本 P m \mathcal{P}_m Pm 来理解场景,得到场景的文本描述 T dsc \mathcal{T}_{\text {dsc}} Tdsc
    T dsc = A ( P m , T img  ) \mathcal{T}_{\text {dsc}}=\mathcal{A}\left(\mathcal{P}_m, \mathcal{T}_{\text {img }}\right) Tdsc=A(Pm,Timg )

2. 候选编辑区域的文本描述提取

提取了原始场景的文本描述后,就可以结合用户指令得到候选编辑区域的文本描述。具体流程如下:

  1. 将场景的文本描述 T dsc \mathcal{T}_{\text {dsc}} Tdsc 和用户指令 T \mathcal{T} T 结合,使用模板 T tmp \mathcal{T}_{\text {tmp}} Ttmp 得到用户信息 T usr  \mathcal{T}_{\text {usr }} Tusr (形如 ““Text description: … Edit Instruction: … Answer: ?”):
    T usr = T tmp ( T dsc , T ) \mathcal{T}_{\text {usr}}=\mathcal{T}_{\text {tmp}}(\mathcal{T}_{\text {dsc}}, \mathcal{T}) Tusr=Ttmp(Tdsc,T)
  2. 使用大语言模型 A \mathcal{A} A,结合预先定义的 prompt 文本 P e \mathcal{P}_e Pe(如 “Let me know which region should be changed”),解析用户信息 T usr  \mathcal{T}_{\text {usr }} Tusr  得到候选编辑区域的文本形式 T RoI \mathcal{T}_{\text {RoI}} TRoI
    T RoI  = A ( P e , T usr  ) \mathcal{T}_{\text {RoI }}=\mathcal{A}\left(\mathcal{P}_e, \mathcal{T}_{\text {usr }}\right) TRoI =A(Pe,Tusr )

三. 候选编辑区域的场景对齐

  1. 使用分割模型 S \mathcal{S} S(实验中使用 Grounding-DINO + SAM)将候选编辑区域的文本形式 T RoI \mathcal{T}_{\text {RoI}} TRoI 转换为图像形式 I RoI \mathcal{I}_{\text {RoI}} IRoI
    I R o I = S ( I r d , T RoI  ) \mathcal{I}_{RoI}=\mathcal{S}\left(\mathcal{I}_{r d}, \mathcal{T}_{\text {RoI }}\right) IRoI=S(Ird,TRoI )

  2. 将图像形式的候选编辑区域 I RoI \mathcal{I}_{\text {RoI}} IRoI 转换为 3D-GS 形式 G RoI \mathcal{G}_{\text {RoI}} GRoI。具体流程如下:
    (1)为每个 Gaussian 增加属性 R \mathcal{R} R,表示该 Gaussian 是否属于 G RoI \mathcal{G}_{\text {RoI}} GRoI r r r 全部初始化为 0;
    (2)最小化损失函数来监督 r r r 的训练,其中 N \mathcal{N} N 是 Gaussians 的数量:
    L proj  = λ 1 ∑ ( I RoI r d ⋅ I RoI ) + λ 2 ∑ ( ( 1 − I RoI r d ) ⋅ I RoI ) where  I R o I r d = ∑ i ∈ N r i σ i ∏ j = 1 i − 1 ( 1 − α j ) \mathcal{L}_{\text {proj }}=\lambda_1 \sum\left(\mathcal{I}_{\text {RoI}}^{r d} \cdot \mathcal{I}_{\text {RoI}}\right)+\lambda_2 \sum\left(\left(1-\mathcal{I}_{\text {RoI}}^{r d}\right) \cdot \mathcal{I}_{\text {RoI}}\right) \\ \text {where }\mathcal{I}_{RoI}^{r d}=\sum_{i \in \mathcal{N}} r_i \sigma_i \prod_{j=1}^{i-1}\left(1-\alpha_j\right) Lproj =λ1(IRoIrdIRoI)+λ2((1IRoIrd)IRoI)where IRoIrd=iNriσij=1i1(1αj)

  3. 为了更加精细地控制候选编辑区域,GaussianEditor 还支持用户额外地增加或删除以及限制区域:
    G RoI = ( G RoI tr  ∪ G RoI add  − G RoI del  ) ∩ B 3 D \mathcal{G}_{\text {RoI}}=\left(\mathcal{G}_{\text {RoI}}^{\text {tr }} \cup \mathcal{G}_{\text {RoI}}^{\text {add }}-\mathcal{G}_{\text {RoI}}^{\text {del }}\right) \cap \mathcal{B}_{3 D} GRoI=(GRoItr GRoIadd GRoIdel )B3D

最终的候选 GS 编辑区域可以表示为:
G RoI = H ( I RoI , O ) where  O = { G RoI add  , G RoI del  , B 3 D } \mathcal{G}_{\text {RoI}}=\mathcal{H}\left(\mathcal{I}_{\text {RoI}}, \mathcal{O}\right)\\ \text {where }\mathcal{O}=\left\{\mathcal{G}_{\text {RoI}}^{\text {add }}, \mathcal{G}_{\text {RoI}}^{\text {del }}, \mathcal{B}_{3 D}\right\} GRoI=H(IRoI,O)where O={GRoIadd ,GRoIdel ,B3D}

四. 候选编辑区域的场景编辑

  1. 选择任意视角的渲染图象 I r d \mathcal{I}_{rd} Ird,使用扩散模型(实验中使用 InstructPix2Pix)编辑得到 I e d \mathcal{I}_{ed} Ied
    I ed  = D ( I r d , t ; T , I ori  ) \mathcal{I}_{\text {ed }}=\mathcal{D}\left(\mathcal{I}_{r d}, t ; \mathcal{T}, \mathcal{I}_{\text {ori }}\right) Ied =D(Ird,t;T,Iori )
  2. 计算 I r d \mathcal{I}_{rd} Ird I e d \mathcal{I}_{ed} Ied 之间的损失:
    L = ( 1 − β ) L 1 + β L D − S S I M \mathcal{L}=(1-\beta) \mathcal{L}_{\mathbb{1}}+\beta \mathcal{L}_{D-S S I M} L=(1β)L1+βLDSSIM
  3. 在 3D 候选编辑区域 G RoI \mathcal{G}_{\text {RoI}} GRoI 上优化参数;

五. 实验

在这里插入图片描述
在这里插入图片描述

六. 总结

本篇的 GaussianEditor 对 GS 场景的编辑主要适用于风格迁移,对于增加或删除元素的编辑任务,效果相当有限。

在这里插入图片描述

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

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

相关文章

《父母的语言:3000万词汇塑造更强大的学习型大脑》早期家庭语言环境的重要性(二)

目录 简介 经典内容摘录 简介 本书作者是美国芝加哥大学妇科及儿科教授达娜萨斯金德博士。作者发起了“3000万词汇倡议”,“3000万词汇倡议”发现了一个秘密,即低收入家庭的孩子为什么“输在起跑线”上。调查显示,低收入家庭…

【零基础学习03】嵌入式linux驱动中自旋锁功能基本实现

大家好,为了进一步提升大家对实验的认识程度,每个控制实验将加入详细控制思路与流程,欢迎交流学习。 今天给大家分享一下,linux系统里面自旋锁操作的具体实现,操作硬件为I.MX6ULL开发板。 第一:自旋锁基本简介 ①、自旋锁保护的临界区要尽可能的短,可以使用一个变量来表…

119.龙芯2k1000-pmon(18)-全自动安装linux系统

经过两天的测试和完善,现在基本已经正常可用了。 (全自动是假,接近全自动吧。) 需要使用配测电脑的网络功能,windows即可,脱离linux虚拟机。(理论上讲u盘也是可以的) 测试平台&…

JDBC底层原理

1、什么是JBDC? JBDC(Java Database Connectivity),JDBC只是一套规范接口,真正实现的是各数据库厂商驱动。 2、JBDC的底层的主要接口对象是什么? JBDC的底层主要是三个接口对象,Connection、Statement、ResultSet。Co…

C#实现二分查找算法

C#实现二分查找算法 以下是一个使用 C# 实现的二分查找算法示例&#xff1a; using System;class Program {static int BinarySearch(int[] arr, int target){int low 0;int high arr.Length - 1;while (low < high){int mid (low high) / 2;// 如果目标值等于中间元素…

javaEE6(网站第3章-jsp练习中三个例题动手做一遍;课后题2(1),(2))

两个数求和 用javascript实现。 输入、处理、输出用同一个页面(自己处理自己)。 输入1.jsp&#xff0c;处理和输出2.jsp。 &#xff08;4&#xff09;输入1.jsp&#xff0c;处理2.jsp&#xff0c;处理完转回1.jsp显示结果。 &#xff08;5&#xff09;输入1.jsp&#xff0c;处…

Python: 如何绘制核密度散点图和箱线图?

01 数据样式 这是数据样式&#xff1a; 要求&#xff08;我就懒得再复述一遍了&#xff0c;直接贴图&#xff09;&#xff1a; Note&#xff1a;数据中存在无效值NA&#xff08;包括后续的DEM&#xff09;&#xff0c;需要注意 02 提取DEM 这里我就使用gdal去提取一下DEM列…

Mixamo动画素材导入UE5的最简单方法

一、Mixamo素材 官网&#xff1a;https://www.mixamo.com/ Mixamo是Adobe公司出品的免费动画库&#xff0c;可商用。软件分为characters(角色&#xff09;、Animations&#xff08;动画)两个部分。 二、辅助工具MIXAMO CONVERTER 官网&#xff1a;https://terribilisstudio…

海外媒体发稿:新闻媒体发稿7种方法-华媒舍

新闻报道媒体发稿营销推广是当代企业形象宣传的重要手段之一&#xff0c;合理推广可以提升品牌知名度、吸引住潜在用户。在这篇文章中&#xff0c;我们将要详细介绍七种科学合理的形式&#xff0c;帮助你完全把握新闻报道媒体发稿营销推广。 1.明确目标群体明确目标群体是实现推…

阅读欣赏推荐之(三)——纪录片《地平线系列:大数据时代》

现今的我们正处于一个时代转型中&#xff0c;因为科技的发展与互联网的日益强大&#xff0c;数据将逐步取代旧事物&#xff0c;创造出新事物。当今社会以一种前所未有的方式&#xff0c;通过对海量数据进行分析&#xff0c;获得巨大价值的产品和服务&#xff0c;或深刻的洞见。…

SSM整合项目(显示+添加+修改家居)

文章目录 1.显示全部家居1.需求分析2.思路分析3.编写Service层1.FurnService.java 添加方法2.FurnServiceImpl.java 实现方法3.单元测试 4.编写Controller层1.FurnController.java 添加方法2.postman完成测试 5.前端展示家居1.HomeView.vue 修改el-table使其prop跟Furn的属性名…

PLC远程故障诊断

随着工业自动化水平的不断提升&#xff0c;可编程逻辑控制器&#xff08;PLC&#xff09;在生产线控制、设备自动化等领域发挥着越来越重要的作用。然而&#xff0c;PLC在运行过程中难免会出现故障&#xff0c;影响生产线的稳定运行。因此&#xff0c;如何迅速、准确地诊断并解…

有c语言基础,如何快速学会C++核心知识?

有c语言基础&#xff0c;如何快速学会C核心知识&#xff1f; 在开始前我分享下我的经历&#xff0c;我刚入行时遇到一个好公司和师父&#xff0c;给了我机会&#xff0c;一年时间从3k薪资涨到18k的&#xff0c; 我师父给了一些 电气工程师学习方法和资料&#xff0c;让我不断提…

Python deepFM推荐系统,推荐算法,deepFM源码实战,deepFM代码模板

1.DeepFM介绍&#xff1a; DeepFM&#xff08;Deep Factorization Machine&#xff09;是一种结合了深度学习和因子分解机的推荐模型。它在CTR&#xff08;点击率&#xff09;预测任务中表现出色&#xff0c;并能够有效地处理稀疏特征。 DeepFM模型由两个部分组成&#xff1a;因…

截断表

oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 截断表 事务处理本身是保护数据完整性的一个手段&#xff0c;但是在使用事务处理的过程之中需要注意一点 在用户更新数据后还未进行事务提交时&#xff0c;如果发生了 DDL…

1688 API接口在数据分析与营销决策中的应用探索

在当今数字化快速发展的时代&#xff0c;数据分析与营销决策已成为企业运营中不可或缺的重要环节。而1688 API接口&#xff0c;作为阿里巴巴旗下的一个强大的数据交互平台&#xff0c;为企业在数据分析与营销决策方面提供了丰富的数据源和灵活的操作方式。本文将深入探讨1688 A…

https代理相对socks5代理有什么优势?

随着互联网的快速发展&#xff0c;代理服务已成为许多人在访问敏感或地理位置受限的网站时所依赖的工具。其中&#xff0c;HTTPS代理和SOCKS5代理是两种最常用的代理服务类型。本文将探讨HTTPS代理相对SOCKS5代理的优势。 1、安全性 HTTPS代理使用SSL/TLS协议对客户端和代理服…

RabbitMQ - 01 - 快速入门

目录 界面总览 创建队列 选择默认交换机 发布消息 查看消息 通过实现以下目标快速入门 界面总览 RabbitMQ Management 界面总览 通道: 传输消息的通道 路由: 接收和路由(分发)消息 队列: 存储消息 消息队列的流程: 生产者将消息发送给路由,路由分发消息到各个队列存储…

Android Kotlin知识汇总(四)Kotlin 协程实践

Kotlin的重要优势及特点之——结构化并发 Kotlin 协程是一种并发设计模式&#xff0c;可以在 Android 平台上让异步代码像阻塞代码一样易于使用。协程可大幅简化后台任务管理&#xff0c;例如网络调用、本地数据访问等任务的管理。 简单来说&#xff0c;协程就是一种轻量级的非…

Windows从0到1部署项目

文章目录 1.创建虚拟机2.文件的传输--共享文件夹共享文件夹的访问 3.安装jdk&#xff0c;Tomcat3.1jdk的安装与配置配置环境变量 3.2Tomcat的安装与配置 4.安装mysql数据库5.下载nginx6.虚拟域名 因为Windows项目部署有很多操作都是博主之前做过的了&#xff0c;所及就只放了博…
最新文章