绝大多数的图像标注任务都是基于image-caption标注对的,这就使得数据集的获得很困难,本文提出了一种无监督学习的方法,不需要使用人工标注的句子就可以进行训练。本篇论文模型需要的数据有image set,a sentence corpus 和 an existing visual concept model detector。sentence corpus训练模型生成一个可以被人理解的句子,视觉概念检测器的内容经过提炼进入caption模型引导重新生成一个图片的向量。把image和caption输入到一个共同的潜在空间使彼此能够重构对方。本文的主要贡献如下:
不依赖于image-caption对进行模型训练;提出了三种客体(objective)对模型进行训练;提出了一种新奇的模型初始化管道探索未标记数据,通过平衡视觉概念检测器,生成一个虚拟的标注对每个图片并且使用这种假的数据对金image caption模型进行初始化;在网上爬取了超过两百万个句子用于无监督学习,实验结果取得了相当大的进步。
模型依赖与图像数据集(I),句子数据集(S)和一个存在的visual concept detector,特别指出,句子是从一个特别的语料库获得的。
如上图,模型首先包含一个image encoder,一个sentence generator和一个sentence discrimination。
首先使用CNN对图像进行编码:
本文所选用的是Inception-V4。
使用LSTM作为文本生成器,将编码向解码为一个描述图片的句子。在每个时刻,LSTM根据前一时刻的输入和图片特征向量生成全部单词的概率分布,然后从概率分布中取样获得概率分布:
FC代表全连接,~代表取样。n为句子的长度,是单词嵌入矩阵,是LSTM的输入,是代表单词的one-hot向量,代表隐藏层,是此时刻的词表概率。本论文的方法与之前的方法一个关键不同点是从词典分布中获取,其他的方法从真是的句子中获取。
辨别器同样用LSTM实现,它的目的是为了区分句子中的一部分是来自真实的句子还是来自生成器模型:
是隐层状态,是分辨器认为单词是真实的概率。给定一语料库的句子,q是分辨器认为前t个单词是真实单词的概率。
定义了三个客体(objectives)使得无监督学习变得可能。
鉴于对抗式文本生成,本文使用对抗训练使得生成的句子更加合理。生成器使用图片向量作为输入并据此生成句子。辨别器辨别一个句子是来自模型还是真实的语料库,生成器尽可能的生成真实的句子欺骗辨别器。为了实现这个目标,在每一个时间步给生成器一个反馈,称这个反馈为adversarial reward,这个回馈根据如下公式生成:
通过最大化adversarial reward ,生成器逐渐学习生成合理的句子,对于辨别器,一致的adversarial loss定义为:
adversarial reward仅使得模型生成合理的句子根据语法规则,所生成的句子可能和图片不相关。因此我们提出从视觉概念检测中提取出知识输入模型中,特别的,当模型生成一个单词和视觉概念一致时,我们给生成的单词一个回馈,这个回馈叫做concept reward。这个回馈指明了visual concept的置信度分数,从图片I中,visual concept detect输出一系列的概念和相应的评分:
这个回馈和指明了第t个生成的单词:
I(.)为指示函数。
使图片和句子都映射到一个潜在空间。
Image Reconstruction:根据生成的句子重构图片,这可以帮助生成的句子在语义上与图片保持一致,一个困难是他很难生成高分辨率现代科技复杂的物体,例如 people,所以此文重构的图片特征代替整个图片。如上图a所示,辨别器可以被看作句子编码器,一个全连接层被堆叠投影最后的隐藏层h到共同的潜在空间对图片和句子:
x‘就是重构的图片特征,因此,在训练辨别器的时候定义了一个图片重构损失:
产生器和鉴别器共同构成了图像重建过程。因此,对于发生器的图像重建奖励,与负的重建误差成正比,可以定义为:
Sentence Reconstruction:如上图b所示,识别器可以对一个句子进行编码,并将其投射到共同的潜在空间中, 它可以被看作是与给定句子相关的一个图像表示。生成器可以根据所得到的表达式对句子进行重构。这种句子重构过程也可以看作是一个句子去噪的自动编码器。除了将图像和句子在潜在空间中对齐外,还学习了如何在公共空间中从图像表示中解码句子。为了实现可靠和鲁棒的句子重构,我们采用以下方法对输入句子进行添加噪声,损失函数定义为:
同时考虑这三个目标来训练我们的图像字幕模型。对于生成器,由于单词采样操作不可微,我们使用策略梯度对生成器进行训练,该策略在给出联合奖励的情况下,根据可训练参数估计梯度。更具体地说,联合奖励包括概念上的对立奖励和概念上的对立奖励。除了策略梯度估计的梯度外,句子重构损失也通过反向传播为生成器提供了梯度。这两种类型的梯度都被用来更新生成器。设序列表示发生器中的可训练参数。相对于梯度的大小为
对于鉴别器,结合对抗性损失和图像重建损失,通过梯度下降更新参数:
在训练时,辨别器和生成器分别更新。
我们提出了一个初始化管道来预训练生成器和鉴别器。
首先是生成器,对于每个训练图片先生成一个假的标注,然后使用他来初始化image caption模型。具体来说,我们首先构建一个由OpenImages数据集中的对象类组成的概念字典。其次,我们只使用句子语料库训练一个概念到句子(con2sen)模型。给定一个句子,我们使用一层LSTM将句子中的概念词编码为特征表示,并使用另一层LSTM将表示解码为整个句子。第三,利用现有的视觉概念检测器检测每幅图像的概念。通过检测到的概念和概念到句子的模型,我们能够为每张图像生成一个伪标题。第四,我们使用中的标准监督学习方法,用伪图像标题对生成器进行训练。这样的图像捕捉器被命名为feature-to-sentence (feat2sen)并用于初始化生成器。
辨别器的初始化,在句子语料库上通过训练一个反向句子生成模型初始化参数。
实验数据直接从shutterstock上爬取,此网站上的图片由上传人描述。以coco数据集的80个物体为关键字进行检索。所有图片的描述使用NLTK TOOLBOX分词工具进行分词。
本博客若有不足之处,恳请指出,欢迎大家学习交流。