最近在研究关于Image Caption相关的东西,我打算把我看到的关于Image Caption的论文用一个系列介绍一下,本篇是第一篇。
说到近几年深度学习在Image Caption的应用,最经典的也是开山之作的就是Bengio团队在15年发表的Show, Attend and Tell: Neural Image Caption Generation with Visual Attention一文了,本篇介绍的就是这篇论文。
首先介绍一下Image Caption的任务,从任务标题可以看出这个任务是给图像加“字幕”,即描述图像中的内容,这与计算机视觉领域中的核心问题之一——场景理解非常相近,因此对Image Caption的研究比较有价值。早在深度学习兴起以前人们对Image Caption任务就已经开始了探索,以前人们的做法通常是先对图像中的物体进行定位和识别,然后根据语言模型生成句子(具体怎么做的我也不了解,因为现在这种做法已经被抛弃了,所以没有调研过),即使深度学习发展起来后人们还是简单的利用深度神经网络进行定位和识别(文中的Related Works),并没有在方法的架构上进行改进。Show attend and tell一文使用深度神经网络端到端的完成了Image Caption任务,给解决Image Caption任务提供了新的思路,并一直沿用至今。
好了废话不多说了,先看一下这篇论文提出的方法的整体架构:
编码器(Encoder)
说道跟图像或视频相关的深度神经网络大家肯定最先想到CNN,在Image Caption任务中也通常使用CNN作为编码器对图像进行特征提取(即编码为特征)。在Show attend and tell一文中使用的是经过预训练的VGGNet作为编码器提取图像的特征,可以得到一系列的特征向量 a a a如下所示:
a = { a 1 , . . . , a L } , a i ∈ R D a=\{\bm{a_1,...,a_L}\} , \bm{a_i} \in \mathbb{R}^D a={
a1,...,aL},ai∈RD
其中 D D D维提取的特征图的维度, a i \bm{a_i} ai表示的是最终提取的特征图的一个像素点对应的 D D D维特征向量, L = H ∗ W L=H*W L=H∗W, H H H和 W W W分别表示特征图的高度和宽度。
Attention机制
Attention机制跟人眼的注意力机制很像,当我们在观察一个东西的时候,是关注这个东西,视野中其他的部分就会忽略掉,Attention机制做的是生成一组权重,对需要关注的部分给予较高的权重,对不需要关注的部分给予较低的权重。
根据前面的介绍Attention机制的作用就是生成一组权重,这里用 α t =