这篇论文是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解码为输出序列。该模型的终极目的是最大化给定图片生成正确描述的概率: