本周对利用深度学习方法解决 Image Caption 问题做了一些研究,读了几篇论文,总结如下。
总体来说,目前深度学习领域 Image Caption 的方法仍主要是 Encoder-Decoder。基于此,attention 机制的引入较为显著地提升了性能。更进一步地, Adaptive Attention 在2016年11月放到 arXiv 时(已被2017CVPR接收了),实现了 state-of-the-art 的效果。目前在 COCO 上的排名也十分可观。
本文基于这个思路介绍下最近关于 Image Caption 的几篇深度学习论文。
1. Encoder-Decoder
Encoder-Decoder 最早是在机器翻译领域引入的。因为原始 RNN 结构中,要求输入序列和输出序列严格等长,而机器翻译任务中源语句与目的语句往往不等长,因此引入了 Encoder-Decoder 结构解决了这一问题,基本结构如下:
Encoder 部分将完整输入“编码”成为
,然后输入 Decoder “解码”生成目标向量
,由此避免了不等长的问题。具体见[3]。
2. m-RNN
2014年10月,百度研究院的Junhua Mao和Wei Xu等人在arXiv上发布论文《Explain Images with Multimodal Recurrent Neural Networks》,提出了multimodal Recurrent Neural Network(即m-RNN),创造性地将 CNN 和 RNN 结合起来,用于解决图像标注和图像语句检索等问题。
本文开创性地将深度学习方法用于解决 Image Caption 问题,并取得了不错的效果,以至于到目前为止,很多该领域论文仍将 m-RNN 作为一个 baseline。论文中作者也不吝啬地说:To the best of our knowledge, this is the first work that incorporates the Recurrent Neural Network in a deep multimodal architecture.
m-RNN 模型结构如下:
2.1 结构说明input word 通过两个word embedding层,生成稠密向量表示
,
同时被传递给 RNN 和 Multimodal。
RNN 所做变换为
, 其中
是 t 时刻循环层激活数据。
右侧绿框中,输入图像经过 CNN 生成特征向量
,
与 一并输入multimodal。multimodal 所做变换是
输入 softmax 层生成概率矩阵。至此,由input word 产生了一个 next word 。
可以看出,m-RNN 也是 Encoder-Decoder 结构。
2.2 代价函数
基于困惑度(perplexity),可以看出
实际上是一个正则化项。
2.3 语句生成步骤
模型以一个特殊的开始符号或者任意个参考单词做开始,计算下一个单词的概率分布
,据此产生单词。循环往复,直至产生结束符号。
2.4 其他
需要注意,每个 t 时刻,即生成每个词语时,图像特征
都参与了计算。这是一个弊端,下文再讨论。
3. NIC
2014年11月,Google 推出了 NIC 模型[6]。
相对于m-RNN,NIC 具有如下不同:用 LSTM 替代 RNN;
不同于 m-RNN 的 AlexNet,CNN 部分使用了效果更好的卷积网络;
CNN 提取到的图像特征只在开始时输入一次。
模型结构如下:
值得说明的是,论文还用人工方法客观地对模型生成的 caption 做了再次评价,结果显示,目前的评价指标并不能全面准确地评价 caption 结果,在一些指标上 NIC 比人类标注获得了更好评分,但实际标注效果并不更好。
特别说明下图像特征输入方式改变的原因,论文中作者是这么说的:We empirically verified that feeding the image at each time step as an extra input yields inferior results, as the network can explicitly exploit noise in the image and overfits more easily.
我们从实践经验上证实如果在每一个时间点都输入图像数据,将会导致较差的结果。网络可能会放大图像数据中的噪音,并且更容易过拟合。
再次说明了深度学习的玄学性。
NIC 一次性将图像特征输入 Decoder,但显而易见的是,每步生成的不同的词语一般关联图片中的不同部分,因此理想的情况下应该是在预测下一个词语时,Decoder 自动关注应该关注的图像区域,这样拟合的准确率才会更高,这也符合人类视觉系统中局部关注的特点,因此 attention 的引入就很自然。
4. Attention
Image Caption 问题不仅要解决目标检测的问题,生成的 caption 中还要考虑目标之间的关系。
Attention 机制可以较好地考虑这种“局部重视”,其直观说明如下图:
2015年2月,《 Show, Attend and Tell: Neural Image Caption Generation with Visual Attention》将人类视觉系统中的 attention 机制引入深度学习,整体模型结构如下:
可以看出,整体仍是 Encoder-Decoder 结构,Encoder 部分没有做改变,在 Decoder 中引入了 attention。
假设 CNN 部分提取到的是14*14*256 的特征向量,可以将其认为是
个区域,将其表示为
,
就是位置特征的集合。
Attention 的核心就是去学习这个位置集合的权重,用公式表达为
表示的就是经过 attention 的图像信息,和隐层状态
、word embedding
一起送入 LSTM。
文章提供了 Hard Attention 和 Soft Attention 两种 attention 机制,以上介绍的是 Soft Attention,Hard 较为 Hard,当然效果也更好,好多公式不想看就不介绍了。
论文给出的实验效果如下图,可见也是 state-of-the-art 的效果。
易见,这里图片每个 channel 的 attention 权重是相同的,体现的是“spatial attention”,也有论文进一步考虑了不同 channel 的权重分布,如“SCA-CNN: Spatial and Channel-wise Attention in Convolutional Networks for Image Captioning”,不再详述。
5. Adaptive Attention
2016年12月,在 Encoder-Decoder + Attention 的基础上, 《Knowing When to Look: Adaptive Attention via A Visual Sentinel for Image Captioning》进一步深入,提出了 Adaptive Attention 结构。
以前的 Caption 模型中,将所有的词语等同看待,认为他们都需要从输入图片中提取产生,然而对于一些介词、虚词等,可以从已产生的文本中推测得出。以“A white bird perched on top of a red stop sign”为例,只要能预测出“bird”、“stop sign”等,从这些已有预测文本中预测出“a”、“on”、“of”等词语可以是一件更为简单准确的事情。因此,本论文提出 Adaptive Attention 的结构(如下图),分利用图片信息和已有 caption 文本信息,提出“visual sentinel”的概念,利用其将图片信息、文本信息做加权组合,在生成 caption 的每一个单词步骤,都考虑是否利用图片信息,如果“是”则继续做上一部分的 attention 模型,如果“否”,则从已产生文本中预测下一个词语。
论文主要贡献包括:We introduce an adaptive encoder-decoder framework that automatically decides when to look at the image and when to rely on the language model to generate the next word.
We first propose a new spatial attention model, and then build on it to design our novel adaptive attention model with “visual sentinel”.
Our model significantly outperforms other state-ofthe-art methods on COCO and Flickr30k.
We perform an extensive analysis of our adaptive attention model, including visual grounding probabilities of words and weakly supervised localization of generated attention maps.
5.1 对 Soft Attention 的改进:
如上图所示,Soft Attention 中,输入图片的 Attention 结果特征
(类似于第4部分的
)用的是上一隐层状态
去决定 Attention 区域。而 Adaptive Attention 中采用的是
。这一灵感来自 ResNet,作者认为这种
包含了当前隐层状态
的残留视觉信息,可以减少由
生成下一个单词预测的不确定性。
5.2 Adaptive Attention Model
首先介绍下“visual sentinel”的概念,它被认为隐式地存储了 Decoder 已知的信息,包含长期和短期的视觉信息和语言信息。
Adaptive Attention Model 的核心结构如下图:
visual sentinel vector
:
: t 时刻的 LSTM cell state。
:word embedding
向量 和全局图像特征向量
的连接。
: k 个 attention 区域的特征矩阵。
[:] 表示 concatenate。
务必注意 V与A 的区别!
context vector
:
有了
和
,可以得出 Adaptive Attention 的核心公式adaptive context vector:
代表了网络在sentinel上分布的权重,基于
建立新的权重表示如下:
取
由此可计算词典的概率矩阵
5.3 效果
妥妥的 state-of-the-art。
6. What Value Do Explicit High Level Concepts Have in Vision to Language Problems?
2016年4月的这篇论文的研究思路像它以问号结尾的标题一样别致[7]。
前面我们提到的模型都是把 CNN 提取到的抽象图像特征向量输入模型,神奇的是我们一直使用的这些特征向量我们也不知道是什么。本文在摘要部分就一针见血地指出了这个问题:Much recent progress in Vision-to-Language (V2L) prob- lems has been achieved through a combination of Convolutional Neural Networks (CNNs) and Recurrent Neural Net- works (RNNs). This approach does not explicitly represent high-level semantic concepts, but rather seeks to progress directly from image features to text.
这种方法追求的是从图像特征到文本的直接转换,而不是显式展示高层语义特征。
所以在本文中,作者的心态就是要研究下这种方法的成功是不是因为他们避免了将图像信息表达为高层的语义信息。因此 decoder 的输入就变成了高层语义信息,具体模型结构如下:
训练时,在预训练的单标签模型上做fine-tune,生成属性概率预测,然后输入 decoder 中生成 caption。
具体要点如下:CNN 部分是 VGGNet,RNN 部分仍是 LSTM;
fine-tune 过程是将 CNN 的最后一个全连接层输入到 c 分类的 softmax 中,用 MS COCO 这种具有多标签的数据集做 fine-tune;
着重说一下属性表构建部分:训练时,属性表可以从 caption 中直接提取;
测试时,属性表的构建更为复杂,如下图所示。测试图片使用Multiscale Combinatorial Grouping (MCG)方法生成 region proposal,这些所有方框分成 m 个簇,每个簇中保留最好的 k 个,加上原图共有 m*k+1 个proposal,然后这些 proposal 全部输入到 fine-tuned multi-labeled model 中,生成 m*k+1 个属性表,最后对这 m*k+1 个属性表做 cross hypothesis maxpooling,产生最后的属性表。
最后测试结果如下所示:
注:除困惑度(P)之外,所有指标都是越高越好
注意,第二个指标图中该模型的效果显示比人类标记更好,实际应该是没有人类标记好的,Google 的 NIC 那篇论文中有提及,这些指标其实是不够准确的,这也是目前亟需解决的问题。
当前,这篇论文在当时也达到了 state-of-the-art 的效果,并且评价极高。这不是因为指标上有多好,而是相对于莫名其妙改改模型刷出了较好的指标(如 NIC 的”可能是因为每步都输入图片的话噪声会影响效果“),这篇文章的思路(为什么不用人类可理解的语义特征输入 decoder 呢?难道现在这些模型的好效果就是因为它避免了语义表述吗?)是人类可理解的。个人看法。。。
参考:
[1] 「Show and Tell」——图像标注(Image Caption)任务技术综述
[2] Knowing When to Look: Adaptive Attention via A Visual Sentinel for Image Captioning
[3] Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation
[4] 看图说话的AI小朋友——图像标注趣谈(下)
[5] Explain Images with Multimodal Recurrent Neural Networks
[6] Show and Tell: A Neural Image Caption Generator
[7] What Value Do Explicit High Level Concepts Have in Vision to Language Problems?
[8] Show, Attend and Tell: Neural Image Caption Generation with Visual Attention
[9] Knowing When to Look: Adaptive Attention via A Visual Sentinel for Image Captioning
[10] Multimodal —— 看图说话(Image Caption)任务的论文笔记(三)引入视觉哨兵的自适应attention机制