Image Caption:neural baby talk

论文链接:Neural baby talk https://arxiv.org/abs/1803.09845

Introduction

本文提出了一种方法,人文对图片产生的描述分为两种,一种是句子本身的模型,一种是根据图像得到的信息,比如说
A man sits on the chair
‘A’,’on‘,’sits‘,’the‘这种词作者认为是根据句子模型产生的,称为textual word,而加粗的部分作者认为是根据图片对应区域产生的,称为visual word。,于是在产生句子的时候作者会进行判断,当前单词是textual word还是visual word。然后将textual word放入句子中,而visual word要等全部找出后决定放入的位置,以上句子为例:
“A <region−17> is sitting the <region−3>.
先将句子模板产生,region部分为根据图片产生的单词,精确的将单词填入其中
本文贡献:

  1. 提出了Neural baby talk,一个以视觉为基础的图像理解模型,清晰的定位图片中物体的位置,产生自由格式的自然语言描述
  2. 提出了一个两阶段方法,第一阶段产生句子模板,并产生一些空位置,第二阶段:根据图片产生的visual word联系上下文语义填入句子当中。
  3. 提出了一个健壮的图像理解算法,在测试时,该模型会遇到包含已知物体的图像,但图像的组合方式很新奇(例如,该模型在训练时看到过狗躺在沙发上,人坐在桌子上,而在测试的时候会生成狗在桌子上),测试的时候并不会很死板的只生成训练数据对应的样式

1. 本文的方法

对于一幅图片 I,我们的目标是产生以视觉信息为基础的描述 y = y 1 , y 2 , . . . , y t y={y_1,y_2,...,y_t} y=y1,y2,...,yt,用 R I = r 1 , . . . r N R_I = {r_1,...r_N} RI=r1,...rN为从图片I中提取的N个图片区域的特征,这是一个标准的有监督学习任务,如下公式也非常容易理解,就是在已知图片特征和句子描述的情况下,求下面这个极大似然概率的极大值。
在这里插入图片描述
将上面的公式展开
在这里插入图片描述
t时刻的单词都要由前面的t-1个时刻的单词生成,我们将图片的特征向量 r t r_t rt作为一个隐变量,将上式子变成
在这里插入图片描述
这个式子明显有问题,将公式右端打开,变成
p ( y t , r t , y 1 : t − 1 , I ) / p ( r t , y 1 : t − 1 , I ) ∗ p ( r t , y 1 : t − 1 , I ) / p ( y 1 : t − 1 , I ) p(y_t,r_t, y_{1:t-1}, I)/p(r_t,y_{1:t-1},I)*p(r_t,y_{1:t-1},I)/p(y_{1:t-1},I) p(yt,rt,y1:t1,I)/p(rt,y1:t1,I)p(rt,y1:t1,I)/p(y1:t1,I)
很显然,式子约掉后变成
p ( y t , r t , y 1 : t − 1 , I ) / p ( y 1 : t − 1 , I ) = p ( y t , r t ∣ y 1 : t − 1 , I ) p(y_t,r_t, y_{1:t-1}, I)/p(y_{1:t-1},I)=p(y_t,r_t|y_{1:t-1},I) p(yt,rt,y1:t1,I)/p(y1:t1,I)=p(yt,rty1:t1,I)
明显与原来公式不等,但是在这里只能说不要在意这些细节,只要实验效果好就行。
y t y_t yt分为两种,上文已经说过了,textual word和visual word分别用 y t x t , y v i s y^{txt},y^{vis} ytxt,yvis表示
下面讨论一下细节

2. “slotted”描述模板的产生

在这里插入图片描述
对于一张给定的图片I和对应的描述y,首先将图片放入faster rcnn进行特征提取,然后为例产生“句子模板”,我们使用循环神经网络,在生成句子的每一个时间t,要计算 h t h_{t} ht需要利用 h t − 1 和 x t h_{t-1}和x_t ht1xt,如公式 h t = R N N ( x t , h t − 1 ) h_t=RNN(x_t,h_{t-1}) ht=RNN(xt,ht1)。和常规的机器翻译一样,在训练的时候 x t x_t xt是这一时刻句子的输入,而在测试的时候,t时刻的输入是t-1时刻的输出, x t = y t − 1 x_t=y_{t-1} xt=yt1,我们的decoder也利用了attention机制,但是这个attenion机制分为两部分,第一部分是针对图像特征区域的特征向量,这部分只用到了图像的特征向量对应于机器翻译的Encoder是我们利用faster rcnn的特征提取,因此需要attention的东西是 v t , 它 是 r t v_t,它是r_t vtrt的向量表示,利用特征向量计算当前RNN的 c t , h t c_t,h_t ct,ht,第二部分是将 v 1 , , , v N , s t v_1,,,v_N,s_t v1,,,vN,st相结合起来,来计算是属于visual word还是context word。
在这里插入图片描述
在这里插入图片描述
这个公式就是 V V V的attention得到的一个分布,其实就是每个 v i v_i vi的权重的向量表示。根据总体结构图,利用 P r I t P^t_{rI} PrIt可以计算得到当前时刻的 h t , c t h_t,c_t ht,ct,同时我们还要根据图像得到 s t s_t st,显然是用来和 y t x t y^{txt} ytxt相对应的生成textual word,也就是下图的这一部分,我们称之为visual sentinel。
在这里插入图片描述
关于 s t s_t st分为两部分来看

  1. 如何得到 s t s_t st
  2. 加入这部分后,如何计算attention

得到 s t s_t st
在这里插入图片描述
如上公式所示,要利用当前的输入 x t x_t xt和上一时刻的隐藏状态 h t − 1 h_{t-1} ht1计算得到 g t g_t gt,然后利用当前时刻的rnn的长期状态 c t c_t ct计算得到 s t s_t st

加入这部分后计算attention
在这里插入图片描述
也就相当于在原来的图像特征attention P r I t P^t_{rI} PrIt后多加了一个维度

经过上述过程计算得到attention P r t P^t_r Prt

  1. 然后根据 P r t P^t_r Prt的权重进行计算,是生成visual word还是textual word
  2. 然后结合RNN计算得到这一时刻的隐状态 h t h_t ht,并利用这个东西计算textual word
  3. 这个地方要注意,根据这张图,textual word一定是会产生的,但是visual word不一定会产生, 要根据 P r t P^t_r Prt的结果进行判定,如果需要生成visual word 那么需要结合 P t t x t P^t_txt Pttxt
    对生产的visual word 有两种额外的操作:
  4. 生成的visual 单词进行形式判定,比如说单复数形式
  5. 不同的称呼,比如说判定为“dog”,但在实际中称呼其为“puppy”

3. 损失函数

如下图,损失函数分为三部分,我们分开来说

  1. 上一部分是textual word的损失函数,作者的意思是,根据 y 1 : t − 1 ∗ y^*_{1:t-1} y1:t1来计算出要选择的区域特征 r   r^~ r 的可能性,然后根据这一部分预测出的 y t = y t ∗ y_t=y^*_t yt=yt的概率
  2. 第二部分是vitual word的损失函数,后半部分是计算目标区域的平均可能性
  3. 第三部分是根据所有特征区域和之前的所有上下文单词,计算t时刻找到合适单词单复数形式,符合语义词语的可能性
    注意应该让所有的这三部分可能性越大越好 ,于是在最前面加了一个符号“-”,满足损失函数的形式
    在这里插入图片描述
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值