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) 的文本形式:
- 使用场景语言生成模型 F \mathcal{F} F 获取原始场景 G ori \mathcal{G}_{\text {ori}} Gori 的文本描述 T dsc \mathcal{T}_{\text {dsc}} Tdsc;
- 将文本描述 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 ;
- 使用大语言模型辅助 A \mathcal{A} A 解析用户信息 T usr \mathcal{T}_{\text {usr }} Tusr 得到候选编辑区域的文本形式 T RoI \mathcal{T}_{\text {RoI}} TRoI;
2. 候选编辑区域的场景对齐
将候选编辑区域的文本形式对齐到 GS 场景中:
- 将候选编辑区域的文本形式 T RoI \mathcal{T}_{\text {RoI}} TRoI 转换为图像形式 I RoI \mathcal{I}_{\text {RoI}} IRoI;
- 将图像形式的候选编辑区域 I RoI \mathcal{I}_{\text {RoI}} IRoI 转换为 3D-GS 形式 G RoI \mathcal{G}_{\text {RoI}} GRoI;
3. 候选编辑区域的场景编辑
对 GS 的候选编辑区域进行编辑:
- 选择任意视角的渲染图象 I r d \mathcal{I}_{rd} Ird,使用扩散模型编辑得到 I e d \mathcal{I}_{ed} Ied;
- 计算 I r d \mathcal{I}_{rd} Ird 和 I e d \mathcal{I}_{ed} Ied 之间的损失;
- 在 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)
具体流程如下:
- 使用 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 是采样的图像数量;
- 将每张渲染图像传入多模态模型
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),k∈M - 将每张图像的文本描述
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. 候选编辑区域的文本描述提取
提取了原始场景的文本描述后,就可以结合用户指令得到候选编辑区域的文本描述。具体流程如下:
- 将场景的文本描述
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) - 使用大语言模型
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 )
三. 候选编辑区域的场景对齐
-
使用分割模型 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 ) -
将图像形式的候选编辑区域 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∑(IRoIrd⋅IRoI)+λ2∑((1−IRoIrd)⋅IRoI)where IRoIrd=i∈N∑riσij=1∏i−1(1−αj) -
为了更加精细地控制候选编辑区域,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}
四. 候选编辑区域的场景编辑
- 选择任意视角的渲染图象
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 ) - 计算
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+βLD−SSIM - 在 3D 候选编辑区域 G RoI \mathcal{G}_{\text {RoI}} GRoI 上优化参数;
五. 实验
六. 总结
本篇的 GaussianEditor 对 GS 场景的编辑主要适用于风格迁移,对于增加或删除元素的编辑任务,效果相当有限。