这篇论文是Image Caption领域的开山之作,而我写的这篇笔记也是我在知乎创作的开端。

Image Caption,是指从图片中自动生成一段描述性文字。要求机器不仅能检测出图像中的物体,而且要理解物体之间的相互关系,最后还要用合理的语言表达出来。对人来说,这项任务so easy,但是对机器来说,这就是极具挑战性了。

首先介绍一下机器翻译中的编码解码模型,因为图像描述的基础是机器翻译带来的灵感。在最原始的RNN结构中,输入序列和输出序列必须是严格等长的。但在机器翻译等任务中,源语言句子的长度和目标语言句子的长度往往不同,因此我们需要将原始序列映射为一个不同长度的序列。Encoder-Decoder模型可以解决长度不一致的映射问题。话不多说,上图:

编辑切换为全宽

编码解码模型图

w1-wn是输入单词序列,y1-yn是输出单词序列,他们都是经过独热编码的单词向量,大小为1×D,D是程序中使用单词表的长度。h1-hn为RNN的隐层状态(hidden state)。x1-xn是w1-wn经过转换后得到相对应的词向量(word embedding)。Encoder部分,输入单词序列转换为词向量后输入RNN,然后RNN将所有的输入“编码”成一个固定的向量表示,即最后一个隐层状态 hn,其包含了原始输入中所有有效的信息,Decoder在每一步都会利用 hn进行“解码”,并输出合适的单词序列。

编辑切换为全宽

NIC模型

本文提出NIC模型,他是一个由CNN和RNN组成的端到端的神经网络,将原来的Encoder RNN换成图像中使用的CNN结构,为图像提取一个“视觉特征”I,然后将Decode RNN换成了性能更好的LSTM,将I解码为输出序列。该模型的终极目的是最大化给定图片生成正确描述的概率:

编辑切换为全宽

添加图片注释,不超过 140 字(可选)

其中,θ是模型参数,I是图像,S是正确的生成语句。通常对数部分可以写作:

编辑切换为全宽

添加图片注释,不超过 140 字(可选)

主要的模型是基于LSTM的文本生成器, 用于解码。可以避免RNN的梯度爆炸与梯度消失问题,该问题是由于权值矩阵与激活函数的导数进行连乘,结果变得很小时发生梯度消失;连乘导致求导的结果很大时产生梯度爆炸。经过多层卷积后深层次的网络产生了较多的非线性也是因素之一。本文的LSTM结构图如下:

编辑切换为全宽

LSTM结构图

LSTM记忆模块的核心是单元C,他的具体行为由输入门、输出门和遗忘门控制。输入门将这个阶段的输入有选择性地进行“记忆”;遗忘门控制上一个状态的 C(t-1), 哪些需要留,哪些需要忘;输出门将决定这个阶段中哪些将会被作为当前状态的输出。每次遇到一个新的输入,就利用非线性函数sigmoid和hyperbolic tangent进行更新。然后将mt馈送到Softmax函数,这将在所有单词中产生概率分布pt进行单词预测。算法规则如下:

编辑

添加图片注释,不超过 140 字(可选)

训练过程: LSTM模型、CNN图像嵌入器和词向量相结合。LSTM存储器之间展开的连接是蓝色的,它们对应于LSTM结构图中的循环连接。所有LSTM共享相同的参数。将LSTM展开如下图所示:

编辑切换为全宽

LSTM展开图

将图像输入CNN图像嵌入器,经过多层卷积、池化、和全连接,提取图像特征并命名为I,然后将图像特征I传递至LSTM进行学习,将LSTM展开的意义是为图像和每个句子中的单词创建一个LSTM记忆副本,以便所有LSTM共享相同的参数,在时间t−1时LSTM的输出mt−1被送入在下一时刻的LSTM。展开过程如下:

编辑切换为全宽

添加图片注释,不超过 140 字(可选)

用一维热向量St表示每个单词来定义字典的大小。特别要注意的是,我们用S0表示特殊起始字,用SN表示特殊结尾字,从而指定句子的开头和结尾。特别是通过发出结尾字,LSTM就可以发出已生成完整句子的信号。图像和单词映射到同一空间,图像使用一个视觉CNN,单词使用词向量We。

损失是每个步骤中正确单词的负对数似然的总和,可以最小化所有LSTM、图像嵌入器CNN的顶层和词向量We中的参数。

编辑切换为全宽

添加图片注释,不超过 140 字(可选)

NIC推理方法:

一种是通常的Sampling方法(采样法),根据p1对第一个单词进行采样,然后提供相应的嵌入作为输入,并对p2进行采样,直到我们采样特殊的句尾标记或某个最大长度。即每次只选择概率最大的值生成单词; 另一种是BeamSearch(束搜索法),迭代地考虑时间t之前k个最佳句子的集合作为生成大小为t+1的句子的候选,并仅保留其中K个最佳的句子。即每次单词生成时选择概率最大的K个值进行组合。

至此原理模型已然清晰明了。

实验部分:直接上结果:

编辑切换为全宽

实验结果

Metric是指评价指标,分别有:BLEU-4,反映生成句子的连贯性和准确性;METEOR,反映生成句子中单词的准确性和召回率;CIDER,反映生成句子的语义丰富程度。

从表一可以发现:在MSCOCO开发集上测试,本文提出的模型相比于人工评价来说,性能显著提高。

从表二可以发现:在不同数据集上进行测试,相比于SOTA(当时最先进的方法)来说,本文模型性能显著提高,但是相比于人工评价,依然略低。

描述生成多样性讨论:

文章使用BeamSearch的方法选出N个得分最高的语句,其中每张图最好的15个句子的平均BLEU与人类评价的得分相近,并且这15个句子中很多是未曾出现在训练数据中的,因此具有很好的多样性。

编辑切换为全宽

添加图片注释,不超过 140 字(可选)

人工评价:

编辑切换为全宽

不同数据集上人工评价对比图

使用相同的协议对Flickr8k的真实数据标签进行了评级。这为我们提供了GT(标准得分,平均分:3.89) NIC模型优于参考系统,但是差于GoundTruth。

嵌入分析:使用词向量作为LSTM解码器的输入,可以学习到语言中相似的语义信息,也有利于CNN提取相似的语义特征,一些最邻近单词的例子如下:

编辑切换为全宽

添加图片注释,不超过 140 字(可选)

结论:

首先,提出了一个端到端的NIC系统。

其次,模型结合了视觉和语言模型的子网络。这些可以在较大的语料库上进行预先训练,从而可以利用额外的数据。

最后,与当时最先进的方法相比,基于CNN和RNN的NIC模型的性能显著提高。例如,在 Pascal 数据集上,与当时的25分相比,NIC 获得了 59的 BLEU 评分。在 Flickr30k 数据集上,从 56 分提高到66分;在 SBU 数据集上,从19分提高到28分。

至此,这篇文章结束!

论文下载链接:https://sci-hub.se/

直接输入论文题目即可。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐