图像描述-Image Caption

本文大致以show attent and tell 为讲解模板。

图像描述的概念,在这里就不多概述了,用通俗的话就是--看图说话。而这篇文章虽然不是现在的最优模型,但是由于第一次将注意力机制引入到图像描述的模型中来,因此它的意义非常的重要。

引人了注意力机制(Attention mechanism,)--它能够让encode-decode模型能够像人一样,重点关注图像的某一个区域进行准确的描述。如下图所示:

模型在每一次生成一个单词的时候,知道关注的区域,这样就能够更加准确的生成描述了。(以前的方法很粗暴,将图像编码为一个固定、定长的向量,然后输入给后面的解码模型解码,这样虽然获得了全局的图像信息,但是在每一次生成句子单词的时候,肯定会注意力不集中。)

概念

编码-解码(encode-decode):在这里编码器主要是一个CNN,将图像输入给一个CNN之后得到一个编码向量。然后再把这个编码向量交给解码器-RNN。毕竟,处理图像是CNN的强项,处理序列文字是RNN的强项嘛。所以图像描述说的encode-decode可以等价于CNN-RNN。在机器翻译模型中,encode-decode用的都是RNN。

编码

编码的任务就是输入一副图像给CNN,从而得到一个包含图像信息的 编码。

在使用注意力机制的图像描述网络中,图像编码向量不再是固定定长的一维向量,因此利用预训练的CNN模型会去除顶层的全连接层和池化层,选择利用三维的特征图(通道数,长度,宽度)。下图

利用一个预选量的ResNet,去除顶层的全连接和池化层。得到一个(2048,14,14)的编码。

解码

解码的目的就是利用CNN得到的图像编码,一步一步的将其‘翻译’成句子。

如果没有利用注意力机制的话,就是直接将上图得到的编码(2048,14,14)做一个简单的平均,得到一个定长的编码向量,然后输入给RNN作为它的隐藏状态,然后生成描述。

如果利用了注意力机制:

先说一下注意力机制:

注意力(Attention): 注意力机制就是为了计算权重。这个权重的作用就是,在每一个时间步生成下一个单词的时候,可以依据这些权重的加权平均,得到应该关注的图像区域的重要性(关注度)。

拿最上面的那个图来说,当模型生成  a large 的时候  下一步对于   飞机  那个区域的关注权重更高,因为我们知道 a large  airplane 更符合逻辑。

一个感性的注意力机制的运行过程:借助先前已经得到的解码输出 和 编码图像(c, H,W),通过几个神经网路计算得到 H*W个权重分布。这些权重分布可以理解为,每个像素上的权重,就是生成下一个单词说关注的位置区域的概率。

所以,如果利用了注意力机制,那么CNN得到的是一个(3,H,W)的编码,然后注意力网络通过利用输出的信息然后结合这个图像编码,然后计算出在每一个像素区域上的权重分布。然后通过这个权重分布,将全部像素做一个加权平均。(每一个像素点上的权重,乘以 对应位置的像素,然后求和),下图来自论文:

汇总

将CNN ,RNN 和注意力机制汇总一下:

首先 把图像输入给 CNN,得到一个图像编码。(可以将这个编码,转换一个作为RNN的初始隐藏层的初始化)

利用之前得到的信息(也就是RNN的隐藏状态) 和 图像编码 在注意力网路中求出  权重分布

利用先前的信息(也就是隐藏状态)和注意力权重 通过一个softmax得到词汇表中每一个单词,作为下一个单词的概率分数。--也就是一个多分类问题。

损失函数

负的对数似然估计(交叉熵):因为等价于一个分类问题,输出的类别大小就等于词汇表的大小。因此用交叉熵。

 

束搜索

 

-------未完待续-----------

 

 

参考1:Show, Attend and Tell: Neural Image Caption Generation with Visual Attention

参考2:https://github.com/sgrvinod/a-PyTorch-Tutorial-to-Image-Captioning#some-more-examples

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值