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

Show, Attend and Tell

1、四个问题

  1. 要解决什么问题?

    • Image Caption(自动根据图像生成一段文字描述)。
  2. 用了什么方法解决?
    • 在Show and Tell提出的Encoder-Decoder架构的基础之上进行了改进,引入注意力机制。
    • 提出了两种注意力机制的变种:“hard” attention和"soft" attention。
  3. 效果如何?
    • 在MS COCO以及Flickr8k和Flickr30k上取得了state-of-the-art的效果。
  4. 还存在什么问题?
    • Encoder采用了ImageNet上预训练好的VGG网络,然而VGG的特征提取能力相比ResNet、DenseNet等较弱,一定程度上会影响网络性能。
    • 训练LSTM时one-hot编码的词向量没有采用预训练的word embedding模型,也可能会影响。

2、论文概述

2.1、简介

  • 研究难点:

    • 图像标注模型既要能够处理计算机视觉任务如确定图像中有哪些物体,但他们也必须能够以自然语言的形式捕获并表示出这些物体之间的关系。
  • 架构:

    • 使用CNN来提取图像中的视觉信息,并用RNN来解码这些视觉信息转换成自然语言。
  • 注意力机制:

    • 此前的工作中,大家广泛认同的是:使用视觉特征(比如从CNN后面的层中的特征图)提取图像中的显著物体的信息。
    • 但是这个方法有一个可能的缺点:会损失一部分可能对生成图像描述有用的信息。
    • 使用低层的特征有助于解决这个问题,但是使用低层特征需要一个有效的机制来让模型关注对这个任务有用的信息。
    • 为此,提出了两个注意力机制的变种:hard attention和soft attention。
  • 贡献:

    • 提出了两个基于注意力机制的Image Caption模型:soft attention,通过普通的反向传播算法即可训练;hard attention,需要最大化一个近似的变化下边界。
    • 通过可视化技术展示了网络在生成单词都是在关注“哪里”和“什么”。
    • 在三个基准数据集(MS COCO、Flickr8k、Flickr30k)上对模型进行测试,取得了state-of-the-art的效果。
  • 除了神经网络之外,caption还有两种典型的方法:

    1. 使用模板的方法,填入一些图像中的物体;
    2. 使用检索的方法,寻找相似描述。
    • 这两种方法都使用了一种泛化的手段,使得描述跟图片很接近,但又不是很准确。所以作者在此基础上提出了自己的模型架构,将soft 和hard attention引入到caption,并利用可视化手段理解attention机制的效果。
  • 模型:

2.2、模型细节

  • 论文中提出了两个注意力机制的结构,hard attention较为复杂,暂时还没搞懂。所以就着重介绍soft attention。
  • Encoder:
    • 使用CNN来提取LLLDDD维的特征作为注释向量。每个都对应图像中的一个区域:a={a1,...,aL},ai∈RDa = \{ a_1, ..., a_L \}, a_i \in \mathbb{R}^Da={a1,...,aL},aiRD
    • 与此前的工作中使用Softmax层之前的全连接层提取图像特征不同,本文所提取的这些vector来自于 low-level 的卷积层,这使得decoder可以通过选择所有特征向量的子集来选择性地聚焦于图像的某些部分,也就是将attention机制嵌入。
  • Decoder:
    • 解码阶段用LSTM生成caption。
    • 生成的结果:y={y1,...,yC},yi∈RKy = \{ y_1, ... , y_C \}, y_i \in \mathbb{R}^Ky={y1,...,yC},yiRK。其中CCC是句子长度,KKK是词表大小,yyy是各个词的one-hot编码所构成的集合。

  • LSTM:

    • 输入、遗忘和输出门由sigmod激活,所以得到的值在0—1之间,可以直接作为概率值,候选向量ctc_tcthth_tht由tanh激活,值在-1—1之间。三个输入量分别是,Eyt−1Ey_{t−1}Eyt1是look-up得到词 yt−1y_{t−1}yt1的 m 维词向量;ht−1h_{t−1}ht1是上一时刻的隐状态;zt∈RDz^t \in \mathbb{R}^DztRD是LSTM真正意义上的“输入”,代表的是捕捉了特定区域视觉信息的上下文向量。
    • 隐状态和细胞状态的初始值,由两个独立的多层感知机得到。输入是各个图像特征的均值。c0=finit,c(1L∑iLai)c_0 = f_{init, c}(\frac{1}{L} \sum_i^L a_i)c0=finit,c(L1iLai)h0=finit,h(1L∑iLai)h_0 = f_{init, h} (\frac{1}{L} \sum_i^L a_i)h0=finit,h(L1iLai)
    • 根据以上,我们就可以通过最大概率求得当前时刻输出的词,并作为下一时刻的输入,从而获得caption结果。
  • attention:
    • ztz_tzt是LSTM真正的输入,是一个和时间相关的动态变量,不同时间关注在不同的图像区域内,那么这里就可以和attention结合起来,规定特定时间内关注某个区域。
    • ztz_tzt由时间和位置区域决定,对于每个时间的每个区域都定义一个权重值αti\alpha_{ti}αti。为了满足权重的归一化,则通过softmax函数实现,Softmax的输入需要包含位置信息和前一时刻隐层值。
    • 接着,ztz_tzt就可以通过图像的特征aia_iai以及产生的权重αti\alpha_{ti}αti得到。
    • ϕ\phiϕ函数实际上就是hard attention和soft attention了。
  • hard attention暂时还没弄懂,暂时先不写。
  • soft attention:
    • 在hard attention中,权重属于贝努利分布,非0即1。不连续意味着不可导,即无法在反向传播中利用梯度更新。
    • 而soft attention中,不像hard attention那样对特定时间特定区域只有关注与不关注,而是对所有区域都关注,只是关注的重要程度不一样。
    • 直接使用前面得到权重αt\alpha_tαt,加权求和得到ztz_tzt
    • 由于模型是连续可导的,现在可以直接使用BP算法对梯度进行更新。
    • 此外,soft attention模型还要引入阈值β\betaβ,用来让解码器决定是把重点放在语言建模还是在每个时间步骤的上下文中。
    • 最终的损失函数:
    • soft attention最终通过最小化上式实现。
    • 式中的正则项是为了让∑tCαti≃1\sum_t^C \alpha_{ti} \simeq 1tCαti1, 目的是为了让attention平等的对待图片的每一区域。

2.3、实验

  • 作者用了三个数据集进行实验,Flickr8k采用RMSProp优化方法, Flickr30k和COCO采用Adam进行优化,用vgg在ImageNet上进行预训练,采取64的mini-batch,用bleu和meteor作为指标进行评分,下表是实验结果,可以看出本文所提出的方法取得了很好的结果。

  • 可视化,为了更好地了解attention的效果,作者还对模型进行了可视化,如下图所示,可以看出attention机制可以学习到类似于人注意力一样的信息。

3、参考资料

  1. 论文学习5“Show, Attend and Tell: Neural Image Caption Generation with Visual Attention”文章学习
  2. 【图像理解】之Show, attend and tell算法详解
  3. https://github.com/sgrvinod/a-PyTorch-Tutorial-to-Image-Captioning#training

论文笔记:Image Caption(Show, attend and tell)相关推荐

  1. 论文笔记【A Comprehensive Study of Deep Video Action Recognition】

    论文链接:A Comprehensive Study of Deep Video Action Recognition 目录 A Comprehensive Study of Deep Video A ...

  2. Check It Again: Progressive Visual Question Answering via Visual Entailment 论文笔记

    Check It Again: Progressive Visual Question Answering via Visual Entailment 论文笔记 一.Abstract 二.引言 三.R ...

  3. ORB-SLAM3 论文笔记

    ORB-SLAM3 论文笔记 这篇博客 ORB-SLAM3系统 相机模型的抽象(Camera Model) 重定位的问题 图片矫正的问题 视觉惯性SLAM的工作原理 相关公式 IMU初始化 跟踪和建图 ...

  4. 【论文笔记】 LSTM-BASED DEEP LEARNING MODELS FOR NONFACTOID ANSWER SELECTION

    一.简介 这篇论文由IBM Watson发表在2016 ICLR,目前引用量92.这篇论文的研究主题是answer selection,作者在这篇论文基础上[Applying Deep Learnin ...

  5. 最新图神经网络论文笔记汇总(附pdf下载)

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 [导读]近年来,图神经网络变得非常火热,每年顶会在该领域内都会出现大量的研究论文,本文为大家提 ...

  6. [论文笔记] Fast Quality Driven Selection of Composite Web Services (ECOWS, 2006)

    Time: 4.0 hours Jae-Ho Jang, Dong-Hoon Shin, Kyong-Ho Lee, "Fast Quality Driven Selection of Co ...

  7. 论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning

    论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning  2017-06-06  21: ...

  8. 光流 速度_[论文笔记] FlowNet 光流估计

    [论文笔记] FlowNet: Learning Optical Flow with Convolutional Networks 说在前面 个人心得: 1. CNN的光流估计主要是速度上快,之后的v ...

  9. 论文笔记 《Maxout Networks》 《Network In Network》

    原文出处:http://zhangliliang.com/2014/09/22/paper-note-maxout-and-nin/ 论文笔记 <Maxout Networks> & ...

  10. 论文笔记:HKMF-T: Recover From Blackouts in TaggedTime Series With Hankel Matrix Factorization

    论文笔记:Hankel Matrix Factorization for Tagged Time Series to Recover Missing Values during Blackouts_U ...

最新文章

  1. 捡垃圾、跳大绳、种花、写字,波士顿动力机器狗迎来重大升级
  2. [Joomla] 利用joomla内置的表单验证功能
  3. 【Android 内存优化】Android 工程中使用 libjpeg-turbo 压缩图片 ( JNI 传递 Bitmap | 获取位图信息 | 获取图像数据 | 图像数据过滤 | 释放资源 )
  4. 你是否应该成为一名全栈工程师?
  5. 进入“高画质手游时代”?《天谕》手游首次采用的这项技术有多强大
  6. uboot启动流程概述_Alibaba Cloud Linux 2 LTS OS 启动优化实践
  7. 升级 ubuntu_Ubuntu 19.04 已经到期!现有用户必须升级到 Ubuntu 19.10
  8. Node.js meitulu图片批量下载爬虫1.051
  9. 使用消息中间件时,如何保证消息不丢失且仅仅被消费一次
  10. jquery.form.js java_教javascript函数和jquery函数的使用$(form).submit(function()
  11. iOS开发之-- 从当前隐藏导航界面push到下一个显示导航界面出现闪一下的问题
  12. 安全出口指示灯警报、如何解除呢
  13. SQLite指南(0) 表和索引的文件存储结构
  14. java oracle时间格式转换_oracle时间格式转换问题 ORA-01810: format code appears twice--转...
  15. windows QT+VS201环境安装
  16. html5 3d 图片动画制作软件,9款令人惊叹的HTML5 3D动画应用
  17. 码上飞机大战v1.0.8
  18. python学习第一讲(基本的操作)
  19. 阿里云服务器最新活动-2核4G 3年低至699元
  20. elasticSearch的安装与使用

热门文章

  1. Block相关内容梳理
  2. Swift初级入门【步步为营】
  3. git maven 一键部署_Jenkins实现一键部署maven项目
  4. 查找_排序_思维导图
  5. 来淄博旅游_JAVA
  6. 关于Git的几个使用技巧
  7. Java程序员从笨鸟到菜鸟之(四)java开发常用类(包装,数字处理集合等)(上)
  8. Caffe —— Deep learning in Practice 深度学习实践
  9. CS231n课程笔记翻译:图像分类笔记(上)
  10. Matlab内置的矩阵反转函数