论文链接: https://arxiv.org/abs/1707.09405.
GitHub代码: https://github.com/CQFIO/PhotographicImageSynthesis.
这是一篇ICCV 2017的文章,与以往用GAN做text-to-image不同,它只用了CNN结构来完成这个任务,当然它的数据集也很特殊,是用图像分隔的数据集,网络输入是语义布局(semantic layout)图像。
主要创新点有:
1.提出了一种级联提炼网络(Cascaded Refinement Network (CRN))来在输入语义布局的条件下生成与其一致性的图像。
2.用带回归损失(regression loss)的损失函数来训练卷积神经网络。我为什么说它是创新点呢?因为论文为了通过CRN来实现高分辨率的图像而提出的,论文中的损失函数可以将生成图像和颜色图像(color image)做匹配损失,还加入了与输入的语义布局类别相关的多样化损失(diverse loss)。
为了合成高质量的图像,有几点非常重要:
Global coordination : 许多物体表现出非局部的结构关系,如对称性。其强调的是合成图像中的语义要合理,物体结构要正确。
High resolution:为了合成高度真实的图像,高分辨率必不可少,在这篇论文中,通过级联9个单一提炼模块(a single refinement module)来实现的。
Memory:在仅仅给出语义布局作为输入的条件下,要生成高度真实的图像,也就是生成的物体的外观细节,对网络的容量和GPU的容量都有很大的要求。
整个网络结构
来自于这篇博客的一张图: https://blog.csdn.net/sparkexpert/article/details/77586081.
而每个
M
i
M_{i}
Mi模块的结构为:
1.输入
输入的语义布局
L
L
L ∈
{
0
,
1
}
m
×
n
×
c
\{0,1\}^{m \times n \times c}
{0,1}m×n×c,
m
×
n
m \times n
m×n表示像素分辨率,
c
c
c表示语义类别。在
L
L
L中的每个像素被表示为 one-hot vector
L
(
i
,
j
)
∈
{
0
,
1
}
c
L(i,j) ∈ \{0,1\}^{c}
L(i,j)∈{0,1}c。论文的目标就是要生成与
L
L
L一致的color image
I
∈
R
m
×
n
×
c
I ∈ R^{m \times n \times c}
I∈Rm×n×c。
2.训练
F
i
F_{i}
Fi ∈
w
i
×
h
i
×
d
i
w_{i} \times h_{i} \times d_{i}
wi×hi×di表示生成的特征层,
M
i
M_{i}
Mi表示一个单一的提炼模块。每个
M
i
M_{i}
Mi生成的分标率不一样,所以需要将语义布局
L
L
L下采样对应的
M
i
M_{i}
Mi的分辨率与
F
i
−
1
F_{i-1}
Fi−1一块输入到
M
i
M_{i}
Mi生成
F
i
F_{i}
Fi。每个
M
i
M_{i}
Mi模块包括三个特征层:输入层,中间层和输出层。输入层的维度就是
w
i
×
h
i
×
(
d
i
+
c
)
w_{i} \times h_{i} \times (d_{i}+c)
wi×hi×(di+c)。
3.损失函数
Φ表示一个可视化感知网络(论文中用VGG-19),
{
Φ
l
}
\{Φ_{l}\}
{Φl}表示感知网络中所有的层的集合。
损失函数的推导过程:
初步为:
g
g
g是图像生成网络,λ是权重,这里的初始化取值是相应的层的所有神经元的个数。
然后:
轮文通过该表每个模块中的输出层的通道数来生成不同数量的图像,通道数从3变成了3k,所以生成的图像集合有k张图。
g
u
(
L
,
θ
)
g_{u}(L,θ)
gu(L,θ)表示的是生成的集合中第u个图像。这里仅仅考虑最好的一张合成图像。
最后是:
L
p
L_{p}
Lp表示语义布局的第p个通道特征图
L
(
.
,
.
,
p
)
L(.,.,p)
L(.,.,p),
Φ
l
j
Φ_{l}^{j}
Φlj表示在
Φ
l
Φ_{l}
Φl第j个特征图。
baseline
为了验证该模型的性能,这里列举了一些baseline。
1.GAN and semantic segmentation
2.Full-resolution network
3.Encoder-decoder
4.Image-to-image translation
实验
具体的实验细节和解释请参看论文。