《Show and Tell: A Neural Image Caption Generator》笔记

CVPR 2015

在《Show and Tell: A Neural Image Caption Generator》1这篇文章中作者将机器翻译中的“Encoder+Decoder”的模式应用到图像描述中,也就是用一个CNN作为编码器,得到图片的表征向量,然后LSTM作为解码器,将图像特征“翻译”为一个句子。这种方法是将整张图片都表示成为一个嵌入向量,在比较复杂的场景里必然会丢失一些局部信息,而在《Show, Attend and Tell:Neural Image Caption Generation with Visual Attention》2中,作者在解码阶段引入了一个表示注意力的量。不同于压缩整张图片成为一个静态表示,注意力允许显著特征在需要的时候发挥作用。

这篇论文中,编码阶段,作者使用一个CNN来提取特征向量的集合。提取产生L个向量,每个对应于图片中的某一部分的D维表示。a=a1,…,aL, aiRD。为了获得特征向量和二维图片中的位置照应,不同于之前的文章使用完全连接层,本文从底层卷积层中提取特征,这样允许解码器通过选择所有特征向量的子集来选择性地注意图像的某些部分。

编码只进行一次,解码时逐个生成单词。解码阶段,使用LSTM(如图1所示),以一个上下文向量zt,先前的隐藏状态ht-1和先前生成的单词Eyt-1为条件,在每个时间步骤生成一个单词,最后产生一个句子。其中,E∈Rm×k是一个嵌入矩阵,用于储存前一步的信息。

图1:LSTM结构。

简单来说,上下文向量zt就是t时刻,图片输入的相关部分的动态表示。定义一个机制ϕ,从对应于图片不同位置处提取的特征向量ai,i=1…L,计算ztztai,αi。对于每一个位置i,机制产生一个权重αi,理解为位置i是产生下一个单词是正确的需要注意的地点的概率;也可以理解为将ai混合在一起时,给位置i的相对重要性。最后使用一个深度输出层,在给定LSTM状态,上下文向量和先前生成单词的情况下,计算输出单词的可能性:

作者给出了两种ϕ机制的变体:硬性随机注意力和柔性确定注意力。柔性注意力下,由上一时刻推断出的单词决定下一时刻对图像哪一部分着重注意。他对图像中所有视觉内容都有注意力,只是根据不同的权值来确定对哪一部分关注更多。最终的注意力结果也是对整张图像的视觉内容进行加权和。硬性注意力下,对某一特定的视觉内容注意,对其他部分则不引入注意力。在作者的实验中,硬性随机注意力机制有更优的结果。

这篇文章优点在于只用了一个单独的模型,在没有检测模块的前提下,给出了针对每个单词的注意力区域。

猜你喜欢

转载自blog.csdn.net/qq_29396337/article/details/88354122
今日推荐