1. CNN+LSTM 首先说说图像描述(image caption)是解决什么问题?用简单的话就是说,输入给模型一张图像,模型输出是一句能够描述图像场景的文本句子。 比如下面那张“鸟”的图片,模型就会输出 “a bird flying over a body of water.” 至于是中文的还是英文的,就取决于手头的数据集了。
下面进入正题,之前写过的一篇文章介绍了LSTM的原理,这篇来说说LSTM怎么处理图像描述(image caption)问题的。不懂的小伙伴可以看一下这个链接
我们要知道图像描述涉及到两种不同模态的信息,一个是图像,一个就是描述文本,它不像目标检测、图像分割、图像识别等只涉及图像,或者自然语言处理中像文本生成、自动摘要、预训练模型等只涉及到了文本,所以说如何让模型有效进行图像与文本信息的交互是非常关键的。
2. CNN+LSTM+注意力 接下来,我们再说一说 “Show, Attend and Tell: Neural Image Caption Generation with Visual Attention” 这篇论文,这个论文是在之前说那篇 “Show and Tell: A Neural Image Caption Generator” 的基础上引入一个注意力模块,也就是论文题目中多了一个 “Attend”,所以说“Show, Attend and Tell” 这篇论文的关键就在于对注意力模块的理解。
首先来从直觉上理解这个注意力,它的作用就是模型在每个时间步生成单词的时候,模型会关注这个单词所对应的图像区域。比如下图 “狗” 的照片,模型在生成 “dog” 这个单词时,模型会着重关注图像中 “狗” 的区域,所以说下图中 “狗” 的区域要比其他地方要来的明显点。
好了,从直觉上理解了注意力模块,那么我们来说说这个注意力模块的数学表达公式是什么,知道它的输入和输出是什么,就明白它在做一件什么事了。
3. Faster-RCNN+双层LSTM+注意力 再接着,说一说 Bottom-Up and Top-Down Attention for Image Captioning and Visual Question Answering 这篇论文。这篇论文有两个点:
4. Transformer+LSTM 上面谈到的只是LSTM和CNN组合,在这部分来说说Transformer和LSTM的结合,我们从”Attention on Attention for Image Captioning “这篇论文说起。对Transformer不熟悉的读者可以参考
http://jalammar.github.io/illustrated-transformer/ jalammar.github.io/illustrated-transformer/
我们来思考一下,Transformer这个结构最先提出是在“Attention is all you need”这篇论文中,在被用来处理机器翻译,那么图像描述问题是不是可以当做机器翻译的问题,将图片场景内容“翻译”成一句文本描述,那么图片的信息可以当做Transformer中encoder的输入(源语句),图片的文本描述可以当做decoder的输入(目标语句),那么就可以完美的应用Transformer去解决,有很多工作证明了它是非常有效的,比LSTM的组合性能更好。
既然可以用Transformer结构,那么可不可以在它的基础上加入LSTM呢?首先我们想一想,Transformer中的encoder是用来编码源语句的高层表示,然后这个高层表示的特征向量送入decoder去解码出对应的目标语句,也就是decoder具有生成文本的功能,而LSTM也具有文本生成的功能,因此自然而然想到可否用LSTM替换掉decoder,用LSTM去解码呢?答案是可以的。