图像描述中的注意力机制

图像描述(image caption)近几年来借助深度学习端到端的训练生成方式,得到了显著的发展。

总的来说图像描述一般有两种生成范式,一类是botton-up范式 ,一类是 top-down范式

botton-up是经典的范式,这一类模型监测图像中的 视觉概念、目标、属性、单词、等

然后再通过语言模型将这些属性连接到一起,从而生成图像描述的句子。(像小学语文给定散乱的字词,然后造句)

而目前应用的大多是top-down范式,这是一类更加现代的方法,这类范式的灵感来源于机器翻译的encode-decode结构。在机器翻译的模型任务将,工作原理是先一句起始序列A(如一句英语句子:I am a student)通过循环神经网络对其编码,然后再通过另外一个循环神经网络对其解码,从而生成目标语言的句子B(如汉语:我是一名学生)

 I  am a student   ---RNN编码--->(向量/矩阵)---RNN解码---> 我是一名学生

图像描述的模型结构完全雷同于机器翻译的这种encode-decode的结构 

只不过在编码的过程中对象不一样,机器翻译编码的对象是句子是序列,图像描述编码的是图像。

但是对于机器而言,他们在机算计表示的形式都是向量。

所以图像描述的编码器也只不过是把RNN换成了CNN而已。最具有代表的开山模型有 M-RNN,NIC,

图像描述中的注意力机制_第1张图片图像描述中的注意力机制_第2张图片

虽然,这种编码-解码的模型结构比经典范式的简单,但是其表现出的效果确实意外的好。

但是这种简单的结构有一个缺点,就是它可能会忽视图片中潜在的、明显的,对图像描述而言可能有用的那些视觉信息。(上图,依次往右效果变差,图二明显忽略了一只狗)

因此Kelvin Xu 手注意力机制在 机器翻译 与 图像识别 应用上的成功,将注意力机制引入到了图像描述的任务中来。

图像描述中的注意力机制_第3张图片

注意力机制在图像描述中为什么表现的好?

        一般的图像描述编码时,将图像全体编码为一个包括全部图像视觉内容的向量h,这种方法的缺陷在于,当解码模型试着生成下一个词的时候(原本该词通常仅仅只是描述图片的某一部分)使用了整个图片的表示h来条件生成每个词,但是即使用了全部的h,不能对图片的不同部分有效地生成不同的词。

       而注意力机制能够起到‘视觉注意’的作用。 
   在注意力机制下,图片的编码将被分成n个部分,用CNN表示成h1,h2,,,,hnh1,h2,,,,hn(不是全连接层,而是卷积层,可能是dxdxc,所以n一般是等于dxd)。当RNN生成新词时,注意力总是集中到最相关的图片部分,所以解码器只是使用图片的特定部分来解码。

 图像描述中的注意力机制_第4张图片

注意力权重a_ j 是第 j 个字对应的注意力权重。

=========== 

值得阅读的参考文献:

注意力机制:Recurrent Models of Visual Attention

机器翻译: Neural machine translation by jointly learning to align and translate. 

图像描述:Show and tell: A neural image caption generator. 

                    Explain Images with Multimodal Recurrent Neural Networks

有注意力机制的图像描述:

                    Show, attend and tell: Neural image caption generation with visual attention. 

                    Image Captioning with Semantic Attention

                    CNN+CNN: Convolutional Decoders for Image Captioning

你可能感兴趣的:(计算机视觉,机器学习)