四月啦!小李拖到了现在才来更新,最近真的太Lazy了,真想快乐咸鱼每一天!害 今天还是论文阅读。
论文名称:《StoryGAN: A Sequential Conditional GAN for Story Visualization》
论文地址:https://arxiv.org/pdf/1812.02784.pdf
论文阅读参考:https://blog.csdn.net/weixin_44363205/article/details/105071811
https://blog.csdn.net/Forlogen/article/details/93378325
项目源码:https://github.com/yitong91/StoryGAN
本篇文章只记录个人阅读论文的笔记,具体翻译、代码等不展开,详细可见上述的连接
Background
Task(what to do):
Story Visualization.
Given a multi-sentence paragraph, the story is visualized by generating a sequence of images, one for each sentence
简单来说,就是故事的可视化,我们将输入的文本转化为故事,类似于我们日常所看到的的连环画,在这个任务中,我们是将一各段落输入,然后一句对应一个图,从而产生一个完整的连续的故事。如下图所示,输入为“Pororo and Crong are fishing together.Crong is looking at the bucket. Pororo has a fish on hisfishing rod.”时,包含三个句子,那就需要生成三张图像。我们希望将整个生成的图像序列和故事描述是一致相符
Challenge
a.First, the sequence of images must consistently and coherently depict the whole story. This task is highly related to text-to-image. generation, where an image is generated based on a short description
b.The second challenge is how to display the logic of the storyline.
简单来说分为两个:
1.如何保持生成的图像序列在表达上保持一致性,就单句而言,完成的就是一般意义上的text-to-image的工作
2.如何表示故事的逻辑主线,具体来说,图像中目标的外观和背景布局必须根据故事情节推进以恰当的方式呈现。Relate work
a.conditional text-to-image transformation
b. textual image editing
c.video generation
d. Cartoon generation
(这边简单说一下,与生成故事的可视化较为关联的是视频生成,但仍然有所差别,在视频生成中需要考虑每一帧的真实性和帧之间过渡的平滑性,而此处我们并不需要考虑后一个问题,即平滑性。除此, 条件视频生成只有一个输入,而我们的任务有顺序的、不断的输入。)
Work
Do?
1.We therefore propose a new story-to-image-sequence generation model, StoryGAN, based on the sequential conditional GAN framework.
2.To evaluate the model, we modified existing datasets to create the CLEVR-SV and Pororo-SV datasets. Empirically, StoryGAN outperforms state-of-the-art models in image quality, contextual consistency metrics, and human evaluation.
1.提出的StoryGAN可以实现根据一段连续的描述文本生成序列的对应图像,对于每一张图像来说,它的要求和之前的Text-to-Image的模型一样,但是所有生成图像的集合也要满足整个描述文本的语义一致性,这是之前模型所无法做到的。
2.提供了两个新的数据集CLEVR-SV和Pororo-SV,实验证明了StoryGAN取得了state-of-the-art的效果。Model
整个模型如下图所示:整个StoryGAN可以看做是一个序列化的条件生成对抗网络框架,模型包含Story Encoder、Context Enocder、Image Generator,以及两个Discriminator(image level和story level),其中Context Encoder中又包含GRU单元和Text2Gist单元两部分。
接下来对各个部分进行详解:
在此之前先做一些符号上的规定:
Story Encoder
Story Encoder E(.) 所做的就是将故事描述S随机映射到一个低维的向量空间,得到的向量,不仅包含了S全部的信息,同时还作为Context Encoder隐状态的初始值。
具体来说,Story Encoder从正态分布中采样嵌入向量。即,其中为 为所满足分布的均值,为分布的协方差矩阵,这里作者为了后续计算的效率,将其限制为一个对角阵,即最终的表达式可写作为满足标准正态分布的噪声向量,即StackGAN中Conditioning Augmentation的应用。总体来看,通过Story Encoder可得到一个关于S 的低维向量。另外:
1.解决原先故事空间不连续的问题---使用了随机采样,不仅在故事的可视化工作中使用了一种更加紧凑的语义表示,而且还为图像的生成过程增加了随机性。
2.增强条件流行在潜在语义空间上的平滑性,避免生成模式坍缩到单个生成点上---引入了正则化项,即计算生成分布和标准正态分布之间的KL散度
Context Encoder
在故事的可视化任务重,角色、动作、背景是经常发生变化的,我们需要解决以下问题:
1.如何从上下文信息中捕获到背景的变化?
2.如何组合新的输入语句和随机噪声来生成图像表示角色间的变化?有时这种变化还很巨大。
作者提出了一种基于深度RNN的上下文编码器(Context Encoder),它由两个隐藏层组成,低一层是标准的GRU单元,另一层是GRU的变体,作者称之为Text2Gist,如下所示:每一层公式如下:在时间步 t,GRU 层接受句子和等距高斯噪声 作为输入,并输出向量。Text2Gist 单元将 GRU 的输出 故事语境向量 结合( 来自故事编码器),生成 。编码了在时间步 t 需要生成图像的所有必要信息。 由 Text2Gist 更新,以反映潜在的语境信息变化。其中的初始状态是采样自等距高斯分布。Text2Gist详细的更新公式如下所示:更新门决定上一个时间步的信息要保留多少,而重置门决定从 中遗忘多少信息。 是非线性 sigmoid 函数。和标准的 GRU 不同,输出 实际上是 的卷积结果。
具体来说,Filter(·) 将向量转换为多通道过滤器,其大小是 , 表示输出通道数量。这一过程使用神经网络。由于 是向量,这个滤波器作为 1D 标准卷积层使用。
卷积操作可以被视为帮助从生成过程中挑选重要的信息。实验结果表明,Text2Gist 比传统的循环神经网络在故事可视化上更加高效。Discriminators
模型中判别器部分存在两个判
1.基于深度神经网络的Image D,保持生成图像的局部一致性,
即比较两个三元组{}和
2.基于多层感知机的Story D,保持生成图像的全局一致性
Image D只是用来判别生成图像是否足够真实,因此和其他模型中的并无区别。Story D的原理如下所示:将图像和故事文本特征的内积作为输入馈送到全连接层,并使用 sigmoid 非线性函数预测是生成的还是真实的故事对,即判别生成的图像是否在语义上具有连贯性。。全局一致性分数的计算公式如下所示:其中,为图像的特征向量,为对应的语句的特征向量,其中w w和b 是需要学习的参数。通过语句和图像的配对数据,Story D可以同时考虑局部信息和全局信息。目标函数与损失
算法过程
总的概括一下:
起初,我们给定一个多句子段落(故事),StoryGAN 使用循环神经网络(RNN),将之前生成的图像信息加入到根据当前句生成图像的过程中。语境信息从Context Encoder中获得,包括堆叠的 GRU 单元和新提出的 Text2Gist 单元。Context Encoder将当前句子和故事向量转换为高维特征向量(Gist),用于之后的图像生成任务。
当故事推进时,Gist 动态更新,以反映故事流中的目标变化和场景变化。在 Text2Gist 组件中,句子被转换为一个隐藏向量,并与经过滤波器的输入做卷积,从而调整以适应整个故事。
为了保证生成图像序列的连贯性,研究人员采用了一个双层 GAN 网络。他们使用了一个图像级别判别器来衡量句子和生成图像之间的相关性,以及一个故事判别器来衡量生成图像序列和整个故事的整体匹配度。
Experiment
由于没有现有的数据集进行训练,研究人员根据现有的 CLEVR和 Pororo >数据集进行了修改,制作了 CLEVR-SV 和 Pororo-SV 两个数据集。
- CLEVR-SV 数据集
原版的 CLEVR 数据集用于视觉问答任务。研究人员使用如下方法将其改造为 CLEVR-SV:
-将一个故事中最多的目标数量限制在 4 个。
-目标为金属或橡胶制的物体,有八种颜色和两种尺寸。
-目标每次增加一个,直到形成一个由四幅图像序列构成的故事。
-研究人员生成了 10000 个图像序列用于训练,以及 3000 个图像序列用于测试。- Pororo-SV 数据集
Pororo 数据集原本用来进行视频问答,每个一秒的视频片段都有超过一个手写描述,40 个视频片段构成一个完整的故事。每个故事有一些问题和答案对。整个数据集有 16K 个时长一秒的视频片段,以及 13 个不同角色,而手写描述平均有 13.6 个词,包括发生了什么,以及视频中是哪个角色。这些视频片段总共组成了 408 个故事。实验部分的基准模型为ImageGAN、SVC和SVFN,后两个是StoryGAN的某种简化形式(类似于消融研究)
SVC: StoryGAN中的Text2Gist单元被编码的故事和描述特征向量的简单级联所取代(如下所示)SVFN: SVC中的级联被滤波器网络所取代。Result
CLEVR-SV其中SSIM 一种衡量两幅图像结构相似度的新指标,其值越大越好,最大为1
从实验结果来看, imagegan未能保持“故事”的一致性,当对象数量增加时,它将属性混合在一起。SVC通过在底部包含故事鉴别器和GRU单元格来解决这个一致性问题。 然而,SVC产生 序列中不可信的图像。 我们假设使用简单的矢量级联不能有效地平衡当前描述和整个故事的重要性. SVFN可以在一定程度上缓解这一问题,但不能完全缓解.总的来说,storygan效果是最好。 Pororo-SV角色分类准确率。上界为分类器在真实图像中的分类准确率人类在评价生成图像时在不同指标上的打分。指标包括:图像质量、故事连贯性、相关性。±表示标准差
Ending~
小李累了~午饭时间到啦!