对Image caption的一些理解(看图说话)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/diligent_321/article/details/83511336

1. 背景

​ 在计算机视觉中,图像分类和目标检测任务是比较成熟的领域,已经应用到实际的产品领域。而“看图说话”要实现的功能是,给定一张图像,计算机能告诉我们图片的内容,显然,这会使一个比较复杂的任务,因为它涉及到了如下的子任务:

1)检测图像中的目标;

2)目标的属性,比如颜色、尺寸等;

3)目标之间的关联;

4)语言模型,用于把上面的信息表述成句子;

2. 相关的论文

2.1 “Show and Tell: A Neural Image Caption Generator”

​ 为了实现看图说话的功能,初步的想法是使用多个模型,分别实现上面的各个子任务,然后把每个子任务的结果进行逻辑上的组合。作为谷歌的大作,“Show and Tell: A Neural Image Caption Generator”这一篇论文首次使用端到端的神经网络实现图文转换功能,该网络结构与语言翻译模型的对比如下,

语言翻译模型source sentence —> encoder —>fixed length vector —> decoder —> target sentence

图文转换模型source image —> encoder —>fixed length vector —> decoder —> target sentence

可以看出,它们是很相似的,区别在于输入的不同,语言翻译模型的输入是序列数据,对应的encoder便是RNN了,而图文转换模型的输入是图片,对应的encoder则为CNN网络,具体的网络结构如下,
在这里插入图片描述

在这里插入图片描述

​ 注:引用自论文“Show and Tell: A Neural Image Caption Generator”

在训练阶段,模型经过两大阶段:图像信号的forward propagation和误差信号的back propagation。前向传播的公式表示如下,
在这里插入图片描述
误差信号的定义如下,
在这里插入图片描述
其中, p t ( S t ) = p ( S t I , S 0 , . . . , S t 1 ) L ( I , S ) = l o g p ( S I ) p_{t}(S_{t})=p(S_{t}|I, S_{0}, ..., S_{t-1}),L(I, S)=-logp(S|I) ,因此,优化的目标是给定任意输入图像I,输出序列S的联合概率最大化,这里是将联合概率展开成了条件概率的乘积的形式。

2.2 “Captioning Images with Diverse Objects”

​ 上面的文章使用的是有监督的方法,只能识别训练集中出现的目标,因此在应用中是非常受限制的。大牛Lisa Anne在CVPR 2016上发的一篇文章“Deep Compositional Captioning”,第一次解决了描述novel 目标的目的(训练集中不存在该目标),作为一篇oral文章,作者提供了文章的代码,https://github.com/LisaAnne/DCC。

​ 为了优化半监督看图说话模型的效果,作者所在团队在CVPR 2017发了一篇新的文章“Captioning Images with Diverse Objects”,这里主要阐述这篇文章中的思想。

2.2.1 网络结构

​ 文中将所提模型称之为“Novel Object Captioner (NOC)”,其网络结构如下图,它包含了三个子任务:语言建模+目标识别模型+图文生成。从直觉上可见,当联合训练时,模型可以实现下面的目标:(1)生成读起来通顺的文本;(2)识别图像中的视觉目标;(3)生成合理的图片描述。当(2)和(3)互补时,可以使的生成的文本包含(2)的结果,这里(2)为imagenet 1000类的目标,(3)为MSCOCO caption数据集,只包含了80类目标,也即在inference阶段,生成的文本中可以包含其余的920种目标。
在这里插入图片描述

2.2.2 优化的目标函数

​ 模型优化的目的是,在给出图像描述的同时尽可能多地识别图中的物体,包括image caption数据集(paired)中未出现或者很少出现的目标,在训练过程中联合优化Image model、Language model 和 Caption模型,整体的目标函数如下,
在这里插入图片描述

2.2.2.1 Image-specific Loss

​ 与常用的CNN分类模型不同,这里我们希望能够尽可能全地描述出图像中存在的所有目标,所以这里的CNN为一个多标签模型,其cross-entropy 损失如下,
在这里插入图片描述
其中, l l 表示标签的总个数, z l z_{l} 表示第 l l ​ 个输出的真实标签,0或者1。

2.2.2.2 Text-specific Loss

​ 该路分支是一个语言模型,输入文本序列 w 0 , w 1 , . . . , w t 1 w_{0}, w_{1}, ..., w_{t-1} ,预测下一个词 w t w_{t} ,损失函数定义如下,
在这里插入图片描述

2.2.2.3 Image-caption Loss

​ 该路分支用于根据输入图像,输出对应的sentence描述,损失函数定义如下,
在这里插入图片描述
其中,
S w t ( f C M ( w 0 , . . . , w t 1 , I ; θ ) ) = P ( w t w 0 , . . . , w t 1 , I ) S_{w_{t}}(f_{CM}(w_{0}, ...,w_{t-1}, I; \theta)) = P(w_{t}|w_{0}, ..., w_{t-1}, I)

代码链接:https://github.com/vsubhashini/noc/tree/recurrent/examples/noc

3. 数据集介绍

数据集名称 sentence数量/每幅图像 图片数量 数据集介绍
Flickr 30k 5 3.1w http://web.engr.illinois.edu/~bplumme2/Flickr30kEntities/
MS coco 5 8w+ https://arxiv.org/abs/1504.00325

由上表可以看出,每幅图片对应了5个sentence,这是因为给定一幅图像,不同的人对它的描述会是多种多样的,所以这样构造训练集,是很合理的。

4. 评测方法

​ 在得到了看图说话模型后,有多种用于评测模型效果的指标,比如BLEU, METEOR, ROUGE 和 CIDEr,这里主要解释BLEU,在解释BLEU之前,需要说明一下n-Gram模型。

4.1 n-Gram模型

​ n-Gram模型用于对一个序列的联合概率进行建模,也就是估计一个序列(比如一句话)出现的可能性。举例来说,比如一句话有m个词,分别为 w 1 , w 2 , . . . , w m w_{1}, w_{2}, ...,w_{m} ,若想求联合概率 p ( w 1 , w 2 , . . . , w m ) p(w_{1}, w_{2}, ...,w_{m}) ,很直接地我们会想到链式法则,即将联合概率的求解分解如下,
p ( w 1 , w 2 , . . . , w m ) = p ( w 1 ) p ( w 2 w 1 ) p ( w 3 p ( w 1 ) , p ( w 2 ) ) . . . p ( w m p ( w 1 ) , p ( w 2 ) , . . . , p ( w m 1 ) ) p(w_{1}, w_{2}, ...,w_{m})=p(w_{1})*p(w_{2}|w_{1})*p(w_{3}|p(w_{1}), p(w_{2}))*...*p(w_{m}|p(w_{1}), p(w_{2}), ..., p(w_{m-1}))
n-Gram模型的假设条件是,第k个词出现的可能性只于相邻的n个词有关,用公式表达如下,

p ( w m p ( w 1 ) , p ( w 2 ) , . . . , p ( w m 1 ) ) = p ( w m p ( w m n ) , p ( w m ( n 1 ) ) , . . . , p ( w m 1 ) ) p(w_{m}|p(w_{1}), p(w_{2}), ..., p(w_{m-1})) = p(w_{m}|p(w_{m-n}), p(w_{m-(n-1)}), ..., p(w_{m-1}))

这里的n可以为1,2、、、,n越小,模型的计算量会越小,同时模型的表达能力也会越弱。条件概率是基于语料库中对词频的统计得到的,这种建模方式与神经网络建模有所不同,它属于传统统计机器学习的范畴,不会涉及到模型的训练和参数优化。

4.2 BLEU

​ BLEU衡量的是机器预测的结果(candidate text)和人工标注的结果(reference texts)之间的相似性,取值范围为[0, 1],值越大,表明两者越相似。更详细的解释参见微软的文章https://arxiv.org/abs/1504.00325,如果想直接看中文的话,可以参见 https://livc.io/blog/190。

5. 本地模型效果

​ 根据作者提供的源代码,感兴趣的读者可以跑一下效果。另外,这里提两个待改进的点:(1)论文中将CNN得到的Embedding特征和语言模型得到的Embedding特征进行“Elementwise sum”操作。然而,前者属于图像特征空间,后者属于语义特征空间,可以从多模态学习领域中找些思路;(2)如何更好地引入注意力机制,也值得去研究。

6. 参考文献:

https://arxiv.org/abs/1411.4555

https://arxiv.org/abs/1511.05284

https://arxiv.org/abs/1606.07770

猜你喜欢

转载自blog.csdn.net/diligent_321/article/details/83511336
今日推荐