读聪明人的笔记,是不是也能变聪明呢?

Image Caption是一个融合计算机视觉、自然语言处理和机器学习的综合问题,它类似于翻译一副图片为一段描述文字。

Image Caption问题可以定义为二元组(I,S)的形式, 其中I表示图,S为目标单词序列,其中S={S1,S2,…},其中St为来自于数据集提取的单词。训练的目标是使最大似然p(S|I)取得最大值,即使生成的语句和目标语句更加匹配,也可以表达为用尽可能准确的用语句去描述图像。

Image Caption主要研究分为以下几个方向:

1、用单独的CNN来获取图像的特征,然后,利用这些特征进行生成句子(排序,检索,生成);

2、将CNN获取的特征和句子特征联合嵌入到一个空间内,然后从中进行选择最优描述;

3、利用一些全新的机制,将CNN和RNN结合,目的在利用CNN的全局特征或者局部特征来指导描述的生成。

——以上三种类似神经网络翻译——-

4、使用模板的方法,填入一些图像中的物体;

5、使用检索的方法,寻找相似描述。这两种方法都使用了一种泛化的手段,使得描述跟图片很接近,但又不那么准确。

(博客:image caption:Show, Attend and Tell: Neural Image Caption Generation with Visual Attention

.


1 NIC——最简版encoder-decoder

Vinyals O, Toshev A, Bengio S, et al. Show and tell: A neural image

caption generator[J]. Computer Science, 2015:3156-3164.

用CNN来学图像特征,全连接层后接LSTM,让其学写描述句子。

效果:

当前大多数的Image Caption方法基于encoder-decoder模型。其中encoder一般为卷积神经网络,利用最后全连接层或者卷积层的特征作作为图像的特征,decoder一般为递归神经网络,主要用于图像描述的生成。

由于普通RNN存在梯度下降的问题,RNN只能记忆之前有限的时间单元的内容,而LSTM是一种特殊的RNN架构,能够解决梯度消失等问题,并且其具有长期记忆,所以一般在decoder阶段采用LSTM.



Show and Tell: A Neural Image Caption Generator

本文提出了一种encoder-decoder框架,其中通过CNN提取图像特征,然后经过LSTM生成目标语言,其目标函数为最大化目标描述的最大似然估计。



该模型主要包括encoder-decoder两个部分。encoder部分为一个用于提取图像特征的卷积神经网络,可以采用VGG16,VGG19, GoogleNet等模型, decoder为经典的LSTM递归神经网络,其中第一步的输入为经过卷积神经网络提取的图像特征,其后时刻输入为每个单词的词向量表达。对于每个单词首先通过one-hot向量进行表示,然后经过词嵌入模型,变成与图像特征相同的维度。

参考于:爱可可-爱生活微博、paperweekly公众号发文

.

.


2、MS Captivator

Fang H, Gupta S, Iandola F, et al. From captions to visual concepts

and back[C]// IEEE Conference on Computer Vision and Pattern

Recognition. IEEE, 2015:1473-1482.

先通过目标检测+物体识别,把图像中的实体词都识别出来,实体词相关之间的连接词是构造完整句子的核心,文章用了Multiple Instance Learning(MIL)的弱监督方法进行造句。

步骤是:

detect words:识别实体词

generate sentences:生成句子

re-rank sentences:重整句子结构

同时,文章《Yao T, Pan Y, Li Y, et al. Boosting Image Captioning with Attributes[J]. 2016.》研究了图像属性特征对于描述结果的影响,其中图像属性特征通过多实例学习[2]的方法进行提取。获得标签项后进行文本重组,使用了5种不同的办法,来增强利用所提取的关键词。

参考于:paperweekly公众号发文

.

.


3、Hard-Attention Soft-Attention

Xu K, Ba J, Kiros R, et al. Show, Attend and Tell: Neural Image

Caption Generation with Visual Attention[J]. Computer Science,

2016:2048-2057.

本文的贡献是1、提出两种attention机制利用在image caption任务中,hard和soft;2、利用可视化手段来清晰的理解attention机制的效果。

在encoder阶段

与之前直接通过全连接层提取特征不同,作者使用较低层的卷积层作为图像特征,其中卷积层保留了图像空间信息,然后结合注意机制,能够动态的选择图像的空间特征用于decoder阶段。

在decoder阶段

输入增加了图像上下文向量,该向量是当前时刻图像的显著区域的特征表达。



一部分编码部分encoder,目的是获取image的特征,不同于其他方法直接将最后全连接层的vector(反映图片整体特征)拿过来,此处,作者提取的是卷积层的输出,这样能够将局部的图片信息提取出来,分别进行生成sentence;另一部分为解码部分,采用LSTM模型,其结构如下:



attention的加入,能够显著提高描述的性能,并且可分为hard和soft两种attention机制,hard更难进行训练和理解,但hard相对soft,其提高并没有很明显,需要继续改进和提高。

参考于:机器都能学习–>你还不学习?博客、paperweekly公众号发文

.

.


4、sentence-condition

Zhou L, Xu C, Koch P, et al. Image Caption Generation with

Text-Conditional Semantic Attention[J]. 2016.

encoder:该模型首先利用卷积神经网络提取图像特征

decoder:然后结合图像特征和词嵌入的文本特征作为gLSTM的输入。

由于之前gLSTM的guidance都采用了时间不变的信息,忽略了不同时刻guidance信息的不同,而作者采用了text-conditional的方法,并且和图像特征相结合,最终能够根据图像的特定部分用于当前单词的生成。

关于gLSTM

语义LSTM(Guiding long-short term memory for image caption generation):

其中gLSTM是使用语义信息来指导LSTM在各个时刻生成描述。由于经典的NIC[1]模型,只是在LSTM模型开始时候输入图像,但是LSTM随着时间的增长,会慢慢缺少图像特征的指导,所以采取了三种不同的语义信息,用于指导每个时刻单词的生成,其中guidance分别为Retrieval-based guidance (ret-gLSTM), Semantic embedding guidance(emb-gLSTM) ,Image as guidance (img-gLSTM).

参考于:爱可可-爱生活微博、paperweekly公众号发文

.

.


5、Att-CNN+LSTM

Wu Q, Shen C, Liu L, et al. What Value Do Explicit High Level Concepts

Have in Vision to Language Problems?[J]. Computer Science, 2016.



encoder:作者首先利用VggNet模型在ImageNet数据库进行预训练,然后进行多标签数训练。给一张图片,首先产生多个候选区域,将多个候选区域输入CNN产生多标签预测结果,然后将结果经过max pooling作为图像的高层语义信息,最后输入到LSTM用于描述的生成(decoder)。

该方法相当于保留了图像的高层语义信息,不仅在Image Caption上取得了不错的结果,在VQA问题上,也取得很好的成绩。

参考于:paperweekly公众号发文

6、Show and Tell: 神经图说生成器

GitHub 地址:https://github.com/tensorflow/models/tree/master/im2txt

来源文章《【榜单】GitHub 最受欢迎深度学习应用项目 Top 16(持续更新)》

这是 Oriol Vinyals et. al.(2016)的论文“Show and Tell: Lessons learned from the 2015 MSCOCO Image Captioning Challenge”的用TensorFlow实现的 image-to-text 图片说明生成模型。

Show and Tell 模型是一个学习如何描述图片的深度神经网络。生成的图片说明是一个完整的句子,下面是一些例子:

7、NeuralTalk2

Github 地址:https://github.com/karpathy/neuraltalk2 来源文章《【榜单】GitHub

最受欢迎深度学习应用项目 Top 16(持续更新)》

循环神经网络(RNN)可以用于给图像取标题。NeuralTalk2 比原始版本的 NeuralTalk 更快而且性能更好。与原来的 NeuralTalk 相比,NeuralTalk2 的实现是批量的,可以使用 Torch 在 GPU上运行,并且支持 CNN 微调。这些都使得语言模型(~100x)的训练速度大大加快,但由于我们还有一个 VGGNet,因此总体上的提升没有很多。但是这仍然是个好模型,可以在 2~3 天里训练好,而且表现出的性能非常好。

Google Brain 2016年9月22日发布了 Vinyals et al.(2015)的图说模型(前文介绍的Show and Tell 模型)。它的核心模型与 NeuralTalk2(一个CNN后面跟着RNN)非常相似,但由于 Google 有更好的CNN,加上一些小技巧和更细致的工程,Google 发布的模型应该比 NeuralTalk2 的效果更好。这个项目里用 Torch 实现的代码将作为教育目的保留。

8、neural-storyteller

GitHub 地址:https://github.com/ryankiros/neural-storyteller

来源文章《【榜单】GitHub 最受欢迎深度学习应用项目 Top 16(持续更新)》

Neural-storyteller 是一个能够根据图像内容生成一个小故事的循环神经网络。这个 GitHub 库里包含了使用任意图像生成故事的代码,以及用于训练新模型的说明。整个方法包含以下4个部分:

skip-thought vectors

image-sentence embeddings

条件神经语言模型

风格转换

例如,对下面这张图像,模型生成的故事如下:

We were barely able to catch the breeze at the beach, and it felt as if someone stepped out of my mind. She was in love with him for the first time in months, so she had no intention of escaping. The sun had risen from the ocean, making her feel more alive than normal. She’s beautiful, but the truth is that I don’t know what to do. The sun was just starting to fade away, leaving people scattered around the Atlantic Ocean. I’d seen the men in his life, who guided me at the beach once more.

NLP+VS=>Image Caption︱自动生成图像标题技术论文+相关项目的更多相关文章

  1. 人脸照片自动生成游戏角色_ICCV2019论文解析

    人脸照片自动生成游戏角色_ICCV2019论文解析 Face-to-Parameter Translation for Game Character Auto-Creation 论文链接: http: ...

  2. MFC:“Debug Assertion Failed!” ——自动生成的单文档程序项目编译运行就有错误

    今天照着孙鑫老师的VC++教程学习文件的操作,VS2010,单文档应用程序,项目文件命名为File,也就有了自动生成的CFileDoc.CFileView等类,一进去就编译运行(就是最初自动生成的项目 ...

  3. word自动生成章节标题

    一级目录 二级目录 三级标题

  4. CoolPlist 帧动画自动生成工具

    工具英文名称:CoolPlist作者: 陈前帆 thinkingMan | sonny 邮箱: 625936034@qq.com | chenqianfan1@163.com电话: 136704713 ...

  5. VS文档自动生成

    VS2008文档自动生成 (发现,Sandcastle主要是用于C#项目.里面的注释都是XML格式的.不太适合VC的.最终还是得用Doxygen) 一.Sandcastle简介: Sandcastle ...

  6. TFS2012 自动生成与部署

    思路: 每日构建,自动生成,然后从TFS提交日志中提取版本修订说明,调用打包脚本混淆并生成安装包(系统自带的太锉),最后将相关文件复制到指定网站供浏览下载.自动向测试网站发布,自动生成数据库并初始化. ...

  7. Mybatis 自动生成代码

    准备条件: 将下面的文件放入同一目录下 操作步骤: 1/ 在 generatorConfig.xml 中配置相关的参数,与需要被自动生成的表 也可以 执行项目中的MybatisConfigAutoGe ...

  8. 使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件(转)

    Mybatis属于半自动ORM,在使用这个框架中,工作量最大的就是书写Mapping的映射文件,由于手动书写很容易出错,我们可以利用Mybatis-Generator来帮我们自动生成文件. 1.相关文 ...

  9. FXForms,自动生成iOS表单

    1.简介 FXForms是一个简单的表单提交框架,他的作者是鼎鼎大名的 Nick Lockwood,你也许听说过他的其他的一些框架,比如 iCarousel. 为什么使用FxForms? 表单处理简单 ...

随机推荐

  1. 【转】判断点在多边形内(matlab)

    inpolygon -Points inside polygonal region Syntax IN = inpolygon(X,Y,xv,yv)[IN ON] = inpolygon(X,Y,xv ...

  2. Event Sourcing pattern

    Event Sourcing pattern Instead of storing just the current state of the data in a domain, use an app ...

  3. fopen()函数参数

    摘自百度百科....     1."r" = "rt" 打开一个文本文件,文件必须存在,只允许读 2."r+" = "rt+&qu ...

  4. Android开发之漫漫长途 Fragment番外篇——TabLayout+ViewPager+Fragment

    该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...

  5. ABP官方文档翻译 6.1.1 MVC控制器

    ASP.NET MVC控制器 介绍 AbpController基类 本地化 其他 过滤器 异常处理和结果包装 审计日志 验证 授权 工作单元 介绍 ABP通过Abp.Web.Mvc nuget包集成到 ...

  6. centos6.8 安装gitlab记录

    sudo yum install -y curl policycoreutils-python openssh-server cronie sudo lokkit -s http -s ssh sud ...

  7. wireshark抓包图解 TCP三次握手/四次挥手详解[转]

    原文链接:http://www.seanyxie.com/wireshark%E6%8A%93%E5%8C%85%E5%9B%BE%E8%A7%A3-tcp%E4%B8%89%E6%AC%A1%E6% ...

  8. Maven下的SpringMVC MyBatis

    从头开始采用Maven管理,Spring.MyBatis.Tomcat. 在配置过程中SQL Server的Jar老是加载不了,解决方案参考前一篇博文. eclipse中已经自带了Maven的插件所以 ...

  9. 让linux 服务器网卡物理口不停闪烁

    [root@DBSERVER51 ~]# ethtool -p eth0 此时就会看到对应的物理口一个灯在不停的闪烁,对了.这就是我们在系统看到的那个叫eth0的网卡了.就是这么简单.

  10. hexo博客简易搭建教程

    什么是Hexo Hexo 是一个快速.简洁且高效的博客框架.Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页.官网 Hexo安装 安装 在安装Hex ...