继续介绍文本生成图像的工作,本篇博客要给出的是cvpr2018的论文《Inferring Semantic Layout for Hierarchical Text-to-image Synthesis》
论文地址:https://arxiv.org/abs/1801.05091
源码地址:未找到
文章内容基本来自:https://www.jianshu.com/p/e374182606c5
一、相关工作
首先是GAN网络的理解:https://blog.csdn.net/zlrai5895/article/details/80648898
二、基本思想及成果
基本思想是由文本生成对象的bounding box ,再生成mask,得到layout,最后由layout得到生成的图像。
三、数据集介绍:
COCO数据集
四、模型结构
1.bounding box 的生成
box定义了图片中有哪种目标以及将这些目标放到哪些位置。我们将第 t 个标注的 bounding box 表示为
b_{t} 里面包含四个变量,分别表示bounding box 的位置和大小 { x , y , w , h }. l_{t} 是一个在 L 类别上的 one-hot 向量。我们保留了 第( L+1)个类作为结束序列(sequence)的特殊指示。
举一个one hot 的例子,比如一共有 L=3 个类,猫{ 0, 1} , 兔{ 0, 1 }和 狗{ 0,1},若第 t 个 bounding box 的 label 是狗,那么l_{t} = {0,0, 1}. 若是猫的话,这个one hot向量就变为 l_{t} = {1, 0, 0}。优点是稀疏。缺点是向量长度由类别定。但在文字生成图片的任务中,类别是固定的,所以,one hot 可行。
A. box 生成器模型
box 生成器模型是定义了一个从 输入文本s 到 一组目标bounding box 的 随机映射。使用了一个自回归的解码器为box generator 建模。
图四. 如何建模,将左边这个概率模型分解为右边这个,而右边这个模型,与LSTM解决的问题很切合,比如:LSTM的输入是(之前网络的输出 + 当前输入)。右侧模型输入是(之前box 的分布 + 句子的输入)。
在生成 box 的过程中,首先为第 t 个目标采样类标签 l_{t} , 然后基于l_{t} 生成坐标信息b_{t} ------ 省略了图三中p() 和 ‘ I ’ 后面条件的内容。 这两个部分分别由一个高斯混合模型和一个类分布模型建模。l_{t}由 类分布得到。 b_{t} 由高斯混合模型得到,论文中解释道,这个高斯模型由一个四变量(x, y, w, h)的高斯混合模型分解为两个两变量(x, y) 和 (w, h) 的高斯混合模型,目的是减少参数个数,就是计算量。一般高斯混合模型中有三个采参数需要估计,π、μ、∑ 。权重系数π是实数,均值μ是四维向量,方差∑是4*4协方差矩阵. 从图三中看,这些参数都是由 LSTM 得到。
图五.中间模块是LSTM的一个单一神经网络层, 上图中灰色框框分别表示,从上到下,第一个箭头下面的代表c_{t-1}。 第二个箭头下面的是h_{t-1},也就是前一个神将网络的输出。第三个是x_{t}, 每一个神经网络的指导输入。
B. 训练box generator
图七. 最小化bounding box 的负对数似然估计,T 表示为多少个目标, l t*是该box 的真实label, l t 是预测的label. 同样b t* 是真实的box. 我们从上式子中看到,为什么没有预测的bt呢?前思后想,我们不需要保证生成的box大小位置与原box是完全一致的。只需要生成的label与真实label接近,并且能够与生成的对应 box 。所以,可能会想在图中演示的情况,文字描述没有明确的人,象的数量,产生的图片,有多个人,或人。
文中表示λ_{l} = 4, λ_{b} =1,也说明了,会重视 label, 毕竟 b_{t} 是在 l_{t} 的基础上生成的。
C. 测试box generator
图八. e_{t}是由LSTM得到的上面的l_{t}
当采样的类别是L+1时,假设还是上面的one-hot例子,那么当 l_{t}= {0,0,0,1}时,不再去采样B_{t}.
2.shape的生成
给定一组bounding box, shape生成器目的是预测细节图像结构形成mask。也就是说,对我们之前生成的每一个B_{t},(就是包含标签和大小位置信息的B_{t} ),生成一张二值mask, mask就是在框内的目标形状。如何做呢?首先,因为之前每一个LSTM的每一步都生成一个B_{t},所以我们将分离的B_{t}=H*W转换成B_{t}=H*W*L的feature map, L是类别,仅当在box框内的值为1,其他区域值为0。
目标形状的生成应该满足两个条件,首先,每一个mask应该与box的标签和位置一致,并且能够识别为单一的实体。实例约束。其次,每一个目标的形状应该与周围的上下文对齐,全局约束。为满足这两个条件,使用了两个条件对抗的RNN作为shape 生成器。
A. shape 生成器模型
对于既包含时间序列,有包含空间信息的问题,使用卷积循环神经网络去做,文中引用是将LSTM的输入和门的操作变为feature map之间的卷积操作。
从上图解释下如何将box变为shape的。首先,每个 Bt 经过两个步长为2,padding为1,3*3的卷积,做一个instance normalization,经过RELU层最终得到编码的T个 16*16*d 的map。instance normalization是对单个layer的所有像素求均值和标准差。 instance normalization 对于生成式的任务会好,自己生成的图片应该与一个batch没有联系。当然,当前的任务第t步,只有一个输入B t,所以只能叫instance吧~ T个map作为每一个双向 CONV-LSTM的输入。在每一个LSTM输出的前段增加随机向量。空间复制,深度连接,几乎在多模态中也是这样做的,之前写的文章应该也提到过。然后经过一层卷积后,按照之前将分离的 B t 转化为一个tensor 的那种形式类似,它是将box框内的值保留,box外的值置为0。然后通过残差块,如上图黄色框内。然后上采样,得到一个mask。那么生成的mask如何判定是否正确呢?使用GAN。
为了满足第一个条件,每一个mask应该与box的标签和位置一致,并且能够识别为单一的实体。这样设计一个GAN,instance级的GAN,将每一步得到的Bt 和与之对应的 Msak t ,深度相连(channel 方向),GAN来判定是否正确。
为了满足第二个条件,每一个目标的形状应该与周围的上下文对齐,全局约束。GAN的输入变为所有的mask+ 所有的B t,同样下采样后,GAN判别生成是否合理。
B.Shape 的训练
首先我们先看看原始的GAN的损失函数吧。看看跟本文的区别。
图11. 原始GAN的损失函数
为了满足第一个条件,每一个mask应该与box的标签和位置一致,并且能够识别为单一的实体。
图12. 训练时instance 级GAN的损失函数
我们发现,除了原始GAN中 X 变为了(B,M)之外,没什么区别。对了,还有一点,原始输入到GAN中正确的数据分布应该是什么样子的,这里做下猜测,是正样本数据集中包含box的label和大小以及mask的单目标图。啊~~~
图13. 集中所有的instance求均值
再看看第二个条件的损失函数如何设计的。
图14.B的global是所有的box一层一层链接得到,M的global是所有的mask映射到一张图上。
最终呢,使用了perceptual loss, 测量了真实图片和假图片在特征空间的距离。生成模型中使用perceptual lose是非常常用的,他提高了GAN生成的稳定性。perceptual loss
图15 . Φl 是从 CNN 中提取的第l层特征
二. Image的生成
现在我们知道了t给目标的分割mask, 将他们的mask聚合成为一个map, 那么给定map和句子s,这样任务就变成了已知分割区域和句子描述, 来生成真实的图像。就像这篇论文,已知分割区域和文字,得到真实场景的图片。
图16. 这是整个网络的缩减图,大致能够知道网络架构,但实际每一部分是单独通过网络得到的。
A.image生成器模型
下面讲一下image generator 的网络架构。网络是基于Image-to-image translation with conditional adversarial networks.这篇论文的改进。
图17. 本文所用的条件GAN模型,前片论文的条件GAN不同的是,这列的条件有句子,分割map, 噪声。噪声在生成图片的时候是为了保证生成图片的多样性。
上图concatenation中灰色部分。M通过一系列的下采样层构建层特征A∈ H*W*d。为了自适应地选择与文本相关的上下文,我们将注意力放在布局特性上。然后使用一个类似于LSTM中门的做法,门。从text得到一个d维向量,让后复制他使它成为W*H*d 的tenser得到S. 然后应用门将S后取sigmoid激活后,与A做乘法。concatenation中蓝色部分如何得到。为了更好的将文字中的背景描述得到,使用分开的全连接层和空间复制来对文本嵌入的方法。然后,橘色部分就是对噪声向量进行空间复制,然后直接将三部分相连得到新的map,接下来将map输入到残差网络,然后decoder解码得到真实图片。解码器用的是得到了下图结果的论文。Photographic Image Synthesis with Cascaded Refinement Networks
图18. cascased decoder 的效果,震惊脸!!小伙伴说,以后是不是会有一门技术来鉴别生成还是真实图片
每一个上采样层都加入了semantic Mask。因为cascaded 网络可以增加布局结构的条件从而产生更好的目标边界。判别器就如图17所示,同样在下采样的过程中加入了mask。在采样大小变为h' * w' 时,仍然将文字描述空间复制,然后继续采样,最终得到判别器的判别分数。
B. image 生成器的训练
对抗生成网络-文字到图片的合成Generative Adversarial Text to Image Synthesis ,之前的一篇论文所提到的loss方法,判别器中的输入对除了有对生成图质量的考量——<假图,描述>和<真图,描述>外,添加第三种对文字与图片的匹配度考量——即<真图,不匹配描述> ,这篇论文同样从这个角度出发。
图19. 截取了之前主篇论文的算法步骤部分
图20. 这是这片论文图片生成器的loss
我们类比下,看一下这里的loss代表了什么意思, 看下图20,第一部分表示mask+与之对应的正确句子+真实的图片。第二部分表示mask+随机生成的错误的句子+真实的图片。第三部分表示mask+与之对应的正确句子+假的图片。与之前想法相同。然后论文中同样应用了perceptual loss.
三. 实验
1. 实验数据集和评估标准
MS-COCO来评估实验结果,164000张,80个类,每一张图片都有instance-wise 注释,而且每张图片有5条文本描述。复杂场景,多目标,多样化的场景,所以生成任务是困难的。评价标准有Inception score,caption generation,human evaluation。inception score是衡量生成图片多样性且有意义的能力。caption generation 是为生成图片预测caption,与相同mask真实图片的caption相比,潜在的直觉是,如果能够生成原始的文本,说明生成的图像与输入文本相关,并且它的内容是可识别的。Show and tell: A neural image caption generator.这篇论文来生成caption。评价生成caption的标准有BLEU,METERO,CIDEr。再就有人工判定了Amazon Mechanical Turk。
。