一、从文本来推断语义布局
1.bounding box 的生成
bounding box (图1中的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 可行。
图三 . box 生成器A. box 生成器模型
box 生成器模型是定义了一个从 输入文本s 到 一组目标bounding box 的 随机映射。使用了一个自回归的解码器为box generator 建模。
图四. 如何建模,将左边这个概率模型分解为右边这个,而右边这个模型,与LSTM解决的问题很切合,比如:LSTM的输入是(之前网络的输出 + 当前输入)。右侧模型输入是(之前box 的分布 + 句子的输入)这位书友写的LSTM很不错。在生成 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
当采样的类别是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 生成器。
图九. 为了看到shape generator 的输入,将box generator也展示。A. shape 生成器模型
对于既包含时间序列,有包含空间信息的问题,使用卷积循环神经网络去做,文中引用是将LSTM的输入和门的操作变为feature map之间的卷积操作。
图十. shape generator从上图解释下如何将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。
网友评论