目录
信息
研究人员是来自香港中文大学的王灿
Title:CLIP-NeRF: Text-and-Image Driven Manipulation of Neural Radiance Fields
Paper:https://arxiv.org/pdf/2112.05139v1
Code:https://cassiepython.github.io/ clipnerf/
简介
- 提出了第一个统一文本和图像驱动的NeRF编辑框架CLIP-NERF,使得用户可以使用文本提示或示例图像对3D内容进行灵活编辑;
- 设计两个CLIP映射器来指导形状和外观的变化;
- 前馈代码映射器比之前的基于优化的编辑方法速度更快;
- 提出反向优化方法使得可以从现有真实图像数据改变形状和外观代码。
相关工作
- 可编辑的NERF:重塑形状或者是外观颜色在多视角依赖的nerf中困难重重;
- 条件NERF:在一类形状上训练NERF,可利用预训练的模型通过潜在的空间插值进行操作,但只能局部改变且速度慢;
- DietNerf:设计了CLIP语义一致性损失函数提高few-shot nerf的性能;
- GRAF:提出了shape code和appearance code条件合成nerf;
- CLIP:通过学习映射器,将文本和图像联系起来操作潜在空间编码;
- 文章工作:基于文本提示或图像来改变nerf的形状和外观的解纠缠条件nerf架构,文本或图像作为条件,用CLIP提取特征送mappers来操作3D模型的体积和颜色,并提出了利用真实图像的形状和外观来反向优化codes。
- shape code:学习一个变形场改变体积
- appearance code:控制体渲染的颜色
- CLIP model:学习两个code mappers(映射器)
方法
整体训练框架
-
训练一个解纠缠的条件nerf:
a. 输入:位置编码、观测方向、 Z s Z_{s} Zs(shape code)、 Z a Z_{a} Za(appearance code);
b. 输出:渲染后的image;
c. 变形场: Z a Z_{a} Za通过该场控制体积变化; -
CLIP驱动:
a. 输入:相关的image/文本提示;
b. 输出: Δ Z s \Delta Z_{s} ΔZs、 Δ Z a \Delta Z_{a} ΔZa;
c. CLIP image/text encoder:提取相关的特征输入mappers中去学习 Z s Z_{s} Zs和 Z a Z_{a} Za的改变。
Conditional NeRF
F θ F_{\theta} Fθ:MLP学习到的一个函数映射
- input:5D坐标— x ( x , y , z ) \boldsymbol{x}(x,y,z) x(x,y,z)+ v ( ϕ , θ ) \boldsymbol{v}(\phi,\theta) v(ϕ,θ); z a z_{a} za+ z s z_{s} zs;
- output:密度 σ \sigma σ+颜色 c ( r , g , b ) \boldsymbol{c}(r,g,b) c(r,g,b);
- γ ( ⋅ ) \gamma(\cdot) γ(⋅):位置编码-升维的作用(原来的x和v为数低)。
Disentangled Conditional NeRF
如何理解这个解耦条件?
解耦是一个常被提到的技术术语,它直译过来就是“把一模一样的东西分离开来”或“使其相互不受影响”,但实际上更深刻的含义是:把系统中不同的部分分离开来,使它们之间可以互相独立地运行,互不干扰,不被任何不必要的部分影响到。
在这里可以理解为:条件nerf公式1中
z
a
z_{a}
za和
z
s
z_{s}
zs都可以影响颜色的变化,而我们需要使得
z
a
z_{a}
za只控制颜色,
z
s
z_{s}
zs只控制形状,让这两部分分离开,互相独立不受干扰。
Conditional Shape Deformation
不直接操作
z
s
z_{s}
zs来控制形状,文章提出一个Shape Deformation
τ
:
(
x
,
z
s
)
→
Δ
x
\tau:(\boldsymbol{x},z_{s})\to\Delta \boldsymbol{x}
τ:(x,zs)→Δx 对应位置编码
Γ
(
x
)
\Gamma(\boldsymbol{x})
Γ(x),尽量保留原始shape细节。
变形的位置编码:
Γ
∗
(
p
,
z
s
)
=
{
γ
∗
(
p
,
Δ
p
)
∣
p
∈
p
,
Δ
p
∈
τ
(
p
,
z
s
)
}
\Gamma^{*}(\boldsymbol{p},z_{s})=\lbrace \gamma^{*}(p,\Delta{p})| p\in\boldsymbol{p},\Delta{p}\in\tau(\boldsymbol{p},z_{s}) \rbrace
Γ∗(p,zs)={γ∗(p,Δp)∣p∈p,Δp∈τ(p,zs)}:其中
t
a
n
h
(
⋅
)
∈
[
−
1
,
1
]
tanh(\cdot)\in[-1, 1]
tanh(⋅)∈[−1,1],限制变化量在-1到1之间;这样使得
z
s
z_{s}
zs控制
Δ
x
\Delta \boldsymbol{x}
Δx进而控制位置编码,最后间接控制了全局的shape。
Deferred Appearance Conditioning
并且用
Γ
(
v
)
⊕
z
a
\Gamma(\boldsymbol{v})\oplus z_{a}
Γ(v)⊕za把对颜色的改变推迟,使得颜色预测网络不接触形状信息(
σ
\sigma
σ)。
综上所述,公式1变成了公式4所示:
CLIP-Driven Manipulation
给定文本提示 t t t+初始化 z s ′ z_{s}^{'} zs′、 z a ′ z_{a}^{'} za′,训练出映射器 M s , M a M_{s},M_{a} Ms,Ma来更新code。
- ε ^ t ( ⋅ ) \hat{\varepsilon}_{t}(\cdot) ε^t(⋅):预训练的CLIP文本编码器,将文本投影到CLIP嵌入的特征空间,也就是图中的encoder;
- D C L I P ( ⋅ , ⋅ ) D_{CLIP}(\cdot,\cdot) DCLIP(⋅,⋅):跨模态的距离函数,测量文本和渲染图像的嵌入相似性;
因为一般是用文本控制的,所以暂定为
ε
^
t
(
t
)
\hat{\varepsilon}_{t}(t)
ε^t(t),但是也可使用图像示例进行edit,换成相应的
ε
^
i
(
i
)
\hat{\varepsilon}_{i}(i)
ε^i(i)即可。
训练策略
- 先训练disentangled conditional NeRF:包括条件nerf生成器和变形网络;
- 固定生成器权重,训练CLIP部分(shape and appearance mappers);
- 损失函数部分一览:
反向优化
迭代算法交替优化
z
s
,
z
a
,
v
z_{s},z_{a},\boldsymbol{v}
zs,za,v:
实验结果
参数设置
- 条件NeRF:8层MLP(每层256个隐藏单元,输入维度64,RELU);
- deformation network:4层MLP(每层256个隐藏单元。RELU,输入128维的 z s , z a z_{s},z_{a} zs,za);
- mappers:2层MLP(RELU),通道数分别是128,256,128;
- Adam优化器:lr初始= 1 0 − 4 10^{-4} 10−4;
结果对比
结论
优点
- 提出了NeRF的第一种文本和图像驱动的操作方法,通过设计一个统一的框架,使用文本提示或示例图像为用户提供对3D内容的灵活控制;
- 设计了一种解纠缠的条件NeRF架构,该架构允许在编辑对象时解纠缠形状和外观,并且两个前馈代码映射器能够快速推断编辑不同的对象;
- 提出了一种反演方法,从真实图像中推断形状和外观代码,从而可以编辑现有数据。
限制点
由于潜在空间和预先训练的CLIP的表达能力有限,无法处理细粒度和域外的形状和外观编辑—这可以通过添加更多不同的训练数据来缓解。