论文地址:https://arxiv.org/abs/2303.17189
代码地址:https://github.com/ZGCTroy/LayoutDiffusion
目录
1、存在的问题
1、文生图方法存在的问题:当需要生成包含多个对象的复杂图像时,很难设计出适当而全面的prompt,这是由于文本无法精确地描述图像空间位置。
2、可控图像生成的一种主流方法,是将类别、文本等作为condition分支,与图像分支一起利用无分类器指导的技术进行联合训练(例如条件GAN,条件DDPM等)。这类方法涉及多模态融合,即将文本等数据和图像结合起来。
综合以上,本文考虑使用布局作为指导,探究布局生成图像的方法。同时,解决将图片和布局图进行融合的问题。
2、算法简介
本文提出了一种用于布局到图像生成的扩散模型LayoutDiffusion;
将图像的每个块作为一个特殊的对象,以统一的形式完成布局和图像的困难多模态融合;
提出了布局融合模块(LFM)、对象感知交叉注意机制(OaCA)。
3、算法细节
3.1、数据定义
布局图实际上是一系列物体在图片上的布局信息,一个布局序列中的每个对象o都对应着图片中的一个物体,每个对象由2D边界框和该物体的类别标签组成。
l
=
{
o
1
,
o
2
,
⋯
,
o
n
}
o
i
=
{
b
i
,
c
i
}
b
i
=
(
x
0
i
,
y
0
i
,
x
1
i
,
y
1
i
)
c
i
∈
[
0
,
C
+
1
]
\begin{equation} \begin{aligned} l&=\{o_1,o_2,\cdots,o_n\} \\ o_i&=\{b_i,c_i\} \\ b_i &= (x_0^i,y_0^i,x_1^i,y_1^i) \\ c_i&\in[0,\mathcal{C}+1] \end{aligned} \end{equation}
loibici={o1,o2,⋯,on}={bi,ci}=(x0i,y0i,x1i,y1i)∈[0,C+1]
每张图片也是可以理解成一张布局图。
将图片分patch,每个patch代表一个物体,patch的位置信息就看作是该patch的2D边界框,不同尺度的patch则具有不同大小的2D边界框。Patch的深度图像特征则可以看作是该patch的内容信息。
这样一来,就可以将一张图片转化成结构化的布局图,将原本困难的图片和布局图的多模态融合问题转变成了分块图像的布局图和物体的布局图的融合问题。
3.2、Pipeline
1、Layout Embedding Module:构造适合深度网络处理的布局图数据
2、Layout Fusion Module:提取布局图深度特征,完成图中各物体的信息融合
3、Image-Layout Fusion Module:布局图和图像的融合
3.3、Layout Embedding Module
正如3.1所定义的,对于一幅输入图像,其对应的布局图中的每个物体都有相应边界框和类别,所有的物体对应的边界框和类别构成一个布局序列:
l
=
{
o
1
,
o
2
,
⋯
,
o
n
}
o
i
=
{
b
i
,
c
i
}
b
i
=
(
x
0
i
,
y
0
i
,
x
1
i
,
y
1
i
)
c
i
∈
[
0
,
C
+
1
]
\begin{equation} \begin{aligned} l&=\{o_1,o_2,\cdots,o_n\} \\ o_i&=\{b_i,c_i\} \\ b_i &= (x_0^i,y_0^i,x_1^i,y_1^i) \\ c_i&\in[0,\mathcal{C}+1] \end{aligned} \end{equation}
loibici={o1,o2,⋯,on}={bi,ci}=(x0i,y0i,x1i,y1i)∈[0,C+1]
其中,
b
b
b代表位置信息的2D边界框序列,
c
c
c代表类别信息序列。
由于每个布局图中的物体数量都不一样,布局序列的长度也不一样。因此,为了支持可变长度序列的输入,将布局序列
l
l
l扩充到固定的长度
k
k
k,具体做法为:
1、在最前面补上class token,代表覆盖整幅图像的布局,其边界框定义为[0,0,1,1],类别为image
2、在后面补上pad token,代表不存在于图像中的无穷小的物体,其边界框定义为[0,0,0,0],类别为pad
接下来,使用投影矩阵将边界框和类别序列转换为embedding,将
B
B
B和
C
C
C逐元素相加得到布局图特征
L
L
L:
L
=
B
L
+
C
L
L=B_\mathcal{L}+C_\mathcal{L}
L=BL+CL
布局的边界框embedding:
B
L
=
b
W
B
B_\mathcal{L}=bW_\mathcal{B}
BL=bWB
布局的类别embedding:
C
L
=
c
W
C
C_{\mathcal{L}}=cW_C
CL=cWC
其中,
W
B
∈
R
4
×
d
L
W_{\mathcal{B}}\in\mathbb{R}^{4\times d_{\mathcal{L}}}
WB∈R4×dL,
B
L
,
C
L
∈
R
k
×
d
L
B_\mathcal{L},C_\mathcal{L}\in\mathbb{R}^{k\times d_\mathcal{L}}
BL,CL∈Rk×dL
3.4、Layout Fusion Module
此时,布局中的每个对象都与其他对象没有关系,为了使布局中的多个对象之间进行更多交互,使用Layout Fusion Module模块,该模块通过多层的多头自注意力机制实现,完成信息融合后的布局特征用
L
′
L^{\prime}
L′表示:
L
′
=
L
F
M
(
L
)
L^{\prime}=\mathrm{LFM}(L)
L′=LFM(L)
L
′
=
{
O
1
′
,
O
2
′
,
⋯
,
O
k
′
}
∈
R
k
×
d
L
L^{\prime}=\{O_1^{\prime},O_2^{\prime},\cdots,O_k^{\prime}\}\in\mathbb{R}^{k\times d_{\mathcal{L}}}
L′={O1′,O2′,⋯,Ok′}∈Rk×dL
3.5、Image-Layout Fusion Module
3.5.1、数据预处理部分
如前所述,每张图片可以理解成一张布局图,因此,定义高为
h
h
h,宽为
w
w
w的分块图像的边界框序列为:
b
I
=
{
b
I
u
,
v
∣
u
∈
[
0
,
h
)
,
v
∈
[
0
,
w
)
}
b_\mathcal{I}=\{b_{\mathcal{I}_{u,v}}\mid u\in[0,h),v\in[0,w)\}
bI={bIu,v∣u∈[0,h),v∈[0,w)}
b
I
u
,
v
=
(
u
h
,
v
w
,
u
+
1
h
,
v
+
1
w
)
b_{\mathcal{I}_{u,v}}=(\frac uh,\frac vw,\frac{u+1}h,\frac{v+1}w)
bIu,v=(hu,wv,hu+1,wv+1)
接下来,统一图像边界框embedding和布局边界框embedding的大小,记作位置embedding:
图像的边界框embedding:
B
I
=
b
I
W
B
W
B
∈
R
4
×
d
L
B_\mathcal{I}=b_\mathcal{I}W_\mathcal{B}\quad W_\mathcal{B}\in\mathbb{R}^{4\times d_\mathcal{L}}
BI=bIWBWB∈R4×dL
图像的位置embedding:
P
I
=
B
I
W
P
W
P
∈
R
d
L
×
d
I
P_\mathcal{I}=B_\mathcal{I}W_\mathcal{P}\quad W_\mathcal{P}\in\mathbb{R}^{d_\mathcal{L}\times d_\mathcal{I}}
PI=BIWPWP∈RdL×dI
布局的位置embedding:
P
L
=
B
L
W
P
W
P
∈
R
d
L
×
d
I
P_{\mathcal{L}}=B_{\mathcal{L}}W_{\mathcal{P}}\quad W_{\mathcal{P}}\in\mathbb{R}^{d_{\mathcal{L}}\times d_{\mathcal{I}}}
PL=BLWPWP∈RdL×dI
3.5.2、Global Conditioning
Image-Layout Fusion Module共包括两个部分:Global Conditioning, Local Conditioning。在Global Conditioning中,将布局图的class token这个能代表整幅图像的全局特征逐点相加到图片特征
I
I
I上:
I
′
=
I
+
O
1
′
W
I^{^{\prime}}=I+O_1^{\prime}W
I′=I+O1′W
3.5.3、Local Conditioning
采用交叉注意力机制将布局图的每个物体特征和图像的每个patch特征进行融合:
C
L
C_{\mathcal{L}}
CL关注的是布局的类别信息,
L
′
L^{\prime}
L′关注的是对象本身以及与之可能有关系的其他对象的综合信息。通过平均二者,既可以得到对象的一般信息,也可以强调对象的类别信息。
最后将加权特征和图像特征逐元素相加,即完成融合。
3.6、训练和推理
和DDPM的训练以及推理过程一样
将DDPM的条件按固定概率替换成布局序列,在每个去噪步骤中,布局信息与图像的当前状态一起输入到模型中,以确保生成的图像能够遵循给定的布局。
训练过程:
首先,将噪声逐渐添加到真实图像上,直至真实图像完全变成符合高斯分布的随机噪声;
接下来,将随机噪声送入网路中,训练网络从其中恢复出真实图像;
推理过程:
输入的是随机噪声,模型从中恢复出真实图像
损失函数:
L
:
=
E
t
∼
[
1
,
T
]
,
x
0
∼
q
(
x
0
)
,
ϵ
∼
N
(
0
,
I
)
[
∣
∣
ϵ
−
ϵ
θ
(
x
t
,
t
)
\mathcal{L}:=E_{t\thicksim[1,T],x_0\thicksim q(x_0),\epsilon\thicksim\mathcal{N}(0,\mathbf{I})}\left[||\epsilon-\epsilon_\theta\left(x_t,t\right)\right.
L:=Et∼[1,T],x0∼q(x0),ϵ∼N(0,I)[∣∣ϵ−ϵθ(xt,t)
ϵ
^
θ
(
x
t
,
t
∣
l
)
=
(
1
−
s
)
⋅
ϵ
θ
(
x
t
,
t
∣
l
ϕ
)
+
s
⋅
ϵ
θ
(
x
t
,
t
∣
l
)
\hat{\epsilon}_\theta\left(x_t,t|l\right)=(1-s)\cdot\epsilon_\theta\left(x_t,t|l_\phi\right)+s\cdot\epsilon_\theta\left(x_t,t|l\right)
ϵ^θ(xt,t∣l)=(1−s)⋅ϵθ(xt,t∣lϕ)+s⋅ϵθ(xt,t∣l)
4、实验
4.1、定性实验
在COCO-stuff
256
×
256
256 \times 256
256×256数据集上与SOTA方法的可视化比较。LayoutDiffusion与其他方法相比,具有更好的生成质量和更强的可控性。
多样性:
交互性:
4.2、定量实验
FID:真实图像和生成图像之间的距离,越小越好
IS:评估生成图像质量,越大越好
DS:多样性,越大越好
CAS:分类得分,越大越好
YOLOScore:评估模型的控制精度,越大越好
所提出的扩散方法在所有评价指标上都取得了长足进步: