[AIGC知识] layout理解
前言
要开组会了,随便讲个凑数吧。
参考论文 https://arxiv.org/html/2303.17189?
什么是layout数据?
像下图这样,Layout是每个图片的布局,其中包含一些物体的相应边界框和类别
layout信息如何整合表示并作为条件加入到网络中去的?
a. layout信息包含内容
布局
l
=
{
o
1
,
o
2
,
⋯
,
o
n
}
l = \{o_1, o_2, \cdots, o_n\}
l={o1,o2,⋯,on} 是一组
n
n
n 对象。
每个对象
o
i
o_i
oi 被表示为
o
i
=
{
b
i
,
c
i
}
o_i = \{b_i, c_i\}
oi={bi,ci},
其中
b
i
=
(
x
0
i
,
y
0
i
,
x
1
i
,
y
1
i
)
∈
[
0
,
1
]
4
b_i=(x_0^i, y_0^i, x_1^i, y_1^i) \in [0, 1]^4
bi=(x0i,y0i,x1i,y1i)∈[0,1]4 表示边界框(bbox),
并且
c
i
∈
[
0
,
C
+
1
]
c_i \in [0, \mathcal{C}+ 1]
ci∈[0,C+1] 是其类别id。
b.将layout填充为一个固定长度的序列
将
l
l
l 填充到固定长度的
k
k
k 中,方法是将
o
l
o_l
ol 在前面,一些填充
o
p
o_p
op 在最后,
其中
o
l
o_l
ol 表示存在这个对象,
o
p
o_p
op 表示不存在这个对象。
比如
b
l
=
(
0
,
0
,
1
,
1
)
b_l=(0,0,1,1)
bl=(0,0,1,1)、
c
l
=
0
c_l = 0
cl=0 表示覆盖整个图像的对象,
而
b
p
=
(
0
,
0
,
0
,
0
)
b_p=(0,0,0,0)
bp=(0,0,0,0)、
c
p
=
C
+
1
c_p = \mathcal{C} + 1
cp=C+1 表示没有形状或不出现在图像中的空对象。
最终填充完成后就是一个由
k
k
k 个对象组成的填充的
l
=
{
o
1
,
o
2
,
⋯
,
o
k
}
l = \{o_1, o_2, \cdots, o_k\}
l={o1,o2,⋯,ok}。
c.将序列转变为矩阵
通过投影矩阵
W
b
∈
R
4
×
d
z
W_b \in \mathbb{R}^{4 \times d_z}
Wb∈R4×dz 和
W
c
∈
R
1
×
d
z
W_c \in \mathbb{R}^{1 \times d_z}
Wc∈R1×dz ,
用公式
B
L
=
b
W
B
C
L
=
c
W
C
L
=
B
L
+
C
L
B_{L} = b W_{B} \\ C_{L} = c W_{C} \\ L = B_{L} + C_{L} \\
BL=bWBCL=cWCL=BL+CL
将布局
l
l
l 变换为布局嵌入
L
=
{
O
1
,
O
2
,
⋯
,
O
k
}
∈
R
k
×
d
z
L = \{O_1, O_2, \cdots, O_k\} \in \mathbb{R}^{k \times d_z}
L={O1,O2,⋯,Ok}∈Rk×dz。
d.使用transfomer嵌入到unet网络中。
L
′
=
L
F
M
(
L
)
L'=LFM(L)
L′=LFM(L),其中输出
L
′
=
{
O
1
′
,
O
2
′
,
⋯
,
O
k
′
}
∈
R
k
×
d
z
L' = \{O'_1, O'_2, \cdots, O'_k\} \in \mathbb{R}^{k \times d_z}
L′={O1′,O2′,⋯,Ok′}∈Rk×dz
LFM是基于多层自注意力机制的模块。
最终这4个步骤从下图可以看出来。