- https://openaccess.thecvf.com/content/CVPR2022/papers/Avrahami_Blended_Diffusion_for_Text-Driven_Editing_of_Natural_Images_CVPR_2022_paper.pdf
- https://omriavrahami.com/blended-diffusion-page/
- 问题引入
- 针对的region based image edit问题,且编辑是由text引导的;
- 问题定义:给出image x x x,guided text prompt d d d,binary mask m m m,目标是得到编辑之后的图片 x ^ \hat{x} x^,其中 x ^ ⊙ m \hat{x}\odot m x^⊙m和text相一致,而 x ⊙ ( 1 − m ) ≈ x ^ ⊙ ( 1 − m ) x\odot (1-m)\approx \hat{x}\odot (1-m) x⊙(1−m)≈x^⊙(1−m), ⊙ \odot ⊙表示element wise manipulation操作;
- methods
- Local CLIP-guided diffusion:借鉴的是classifier guidance方法,使用CLIP来引导模型生成mask区域满足text编辑指令的结果,但是原始classifier guidance里面是专门针对noisy图片训练了classifier,此处没有如此操作,而是在去噪的每一步预估
x
0
x_0
x0,通过每一步预测出的噪声
ϵ
θ
(
x
t
,
t
)
\epsilon_\theta(x_t,t)
ϵθ(xt,t),可以得到
x
^
0
=
x
t
α
‾
t
−
1
−
α
‾
t
ϵ
θ
(
x
t
,
t
)
α
‾
t
\hat{x}_0 = \frac{x_t}{\sqrt{\overline{\alpha}_t}} - \frac{\sqrt{1 - \overline{\alpha}_t}\epsilon_\theta(x_t,t)}{\sqrt{\overline{\alpha}_t}}
x^0=αtxt−αt1−αtϵθ(xt,t),得到
x
^
0
\hat{x}_0
x^0之后通过CLIP计算
D
C
L
I
P
(
x
,
d
,
m
)
=
D
c
(
C
L
I
P
i
m
g
(
x
⊙
m
)
,
C
L
I
P
t
x
t
(
d
)
)
D_{CLIP}(x,d,m) = D_c(CLIP_{img}(x\odot m),CLIP_{txt}(d))
DCLIP(x,d,m)=Dc(CLIPimg(x⊙m),CLIPtxt(d)),也就是将
x
^
0
\hat{x}_0
x^0和text
d
d
d都送到CLIP当中之后计算两者之间的cosine距离;除了对mask区域的text约束以外,mask以外的区域还需要满足和原图相同,所以添加一项约束
D
b
g
(
x
1
,
x
2
,
m
)
=
d
(
x
1
⊙
(
1
−
m
)
,
x
2
⊙
(
1
−
m
)
)
,
d
(
x
1
,
x
2
)
=
1
2
(
M
S
E
(
x
1
,
x
2
)
+
L
P
I
P
S
(
x
1
,
x
2
)
)
D_{bg}(x_1,x_2,m) = d(x_1\odot(1-m),x_2\odot(1-m)),d(x_1,x_2) = \frac{1}{2}(MSE(x_1,x_2) + LPIPS(x_1,x_2))
Dbg(x1,x2,m)=d(x1⊙(1−m),x2⊙(1−m)),d(x1,x2)=21(MSE(x1,x2)+LPIPS(x1,x2)),最终的总约束项是两者的加权和
D
C
L
I
P
(
x
^
0
,
d
,
m
)
+
λ
D
b
g
(
x
,
x
^
0
,
m
)
D_{CLIP}(\hat{x}_0,d,m) + \lambda D_{bg}(x,\hat{x}_0,m)
DCLIP(x^0,d,m)+λDbg(x,x^0,m),整体算法为:
- Text-driven blended diffusion:仅靠上述的约束是不够的,前背景都不能达到满意的效果,所以在denoise的过程中不断将原图加噪的结果(background)和去噪的结果(CLIP引导的)相融合,也就是对于step t t t,加入CLIP的引导得到 x t − 1 , f g x_{t - 1,fg} xt−1,fg,同时对原图进行加噪得到 x t − 1 , b g x_{t - 1,bg} xt−1,bg,之后进行混合 x t − 1 = x t − 1 , f g ⊙ m + x t − 1 , b g ⊙ ( 1 − m ) x_{t - 1} = x_{t - 1,fg}\odot m + x_{t - 1,bg}\odot(1-m) xt−1=xt−1,fg⊙m+xt−1,bg⊙(1−m),此时CLIP的引导不包含约束背景的那一项;
- Extending augmentations:还会存在一个问题,就是CLIP引导的时候loss项减小了,但是结果并不满足要求,解决办法就是在去噪过程中加入增广,假设当前step获取到的 x ^ 0 \hat{x}_0 x^0,不直接使用 x ^ 0 \hat{x}_0 x^0计算loss进行引导,而是对其进行增广得到projectively transformed copies,之后使用增广后的结果计算loss来引导模型;