NLP+VS=>Image Caption︱自动生成图像标题技术论文+相关项目
读聪明人的笔记,是不是也能变聪明呢?
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︱自动生成图像标题技术论文+相关项目的更多相关文章
- 人脸照片自动生成游戏角色_ICCV2019论文解析
人脸照片自动生成游戏角色_ICCV2019论文解析 Face-to-Parameter Translation for Game Character Auto-Creation 论文链接: http: ...
- MFC:“Debug Assertion Failed!” ——自动生成的单文档程序项目编译运行就有错误
今天照着孙鑫老师的VC++教程学习文件的操作,VS2010,单文档应用程序,项目文件命名为File,也就有了自动生成的CFileDoc.CFileView等类,一进去就编译运行(就是最初自动生成的项目 ...
- word自动生成章节标题
一级目录 二级目录 三级标题
- CoolPlist 帧动画自动生成工具
工具英文名称:CoolPlist作者: 陈前帆 thinkingMan | sonny 邮箱: 625936034@qq.com | chenqianfan1@163.com电话: 136704713 ...
- VS文档自动生成
VS2008文档自动生成 (发现,Sandcastle主要是用于C#项目.里面的注释都是XML格式的.不太适合VC的.最终还是得用Doxygen) 一.Sandcastle简介: Sandcastle ...
- TFS2012 自动生成与部署
思路: 每日构建,自动生成,然后从TFS提交日志中提取版本修订说明,调用打包脚本混淆并生成安装包(系统自带的太锉),最后将相关文件复制到指定网站供浏览下载.自动向测试网站发布,自动生成数据库并初始化. ...
- Mybatis 自动生成代码
准备条件: 将下面的文件放入同一目录下 操作步骤: 1/ 在 generatorConfig.xml 中配置相关的参数,与需要被自动生成的表 也可以 执行项目中的MybatisConfigAutoGe ...
- 使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件(转)
Mybatis属于半自动ORM,在使用这个框架中,工作量最大的就是书写Mapping的映射文件,由于手动书写很容易出错,我们可以利用Mybatis-Generator来帮我们自动生成文件. 1.相关文 ...
- FXForms,自动生成iOS表单
1.简介 FXForms是一个简单的表单提交框架,他的作者是鼎鼎大名的 Nick Lockwood,你也许听说过他的其他的一些框架,比如 iCarousel. 为什么使用FxForms? 表单处理简单 ...
随机推荐
- 【Thinkphp 5】 如何引入extend拓展文件
extend/maile/cc.php 文件目录 cc文件 必须要加上命名空间,如下 cc.php文件内容如下: namespace maile; //命名空间 maile是文件夹名称 class C ...
- sed运用
流编辑器sed sed简介 sed是stream editor的缩写,一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern ...
- Docker+Jenkins持续集成环境(5): android构建与apk发布
项目组除了常规的java项目,还有不少android项目,如何使用jenkins来实现自动构建呢?本文会介绍安卓项目通过jenkins构建的方法,并设计开发一个类似蒲公英的app托管平台. andro ...
- 浅谈OSI七层模型及ICP/IP四层模型
1.OSI七层模型的概念 在网络历史的早期,国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)共同出版了开放系统互联的七层参考模型. 一台计算机操作系统中的网络过程包括从应用请求(在协议栈 ...
- linux下的打包与压缩
linux压缩或解压缩工具有很多,除了已经很少有人使用的compress外,现在常用的还有tar,bzip2,xz 和gziplinux压缩或解压缩工具有很多,除了已经很少有人使用的compress外 ...
- Oracle打印日历功能
Oracle用SQL打印日历 1.1 打印当月日历 , D, NULL)) SUN, , D, NULL)) MON, , D, NULL)) TUE, , D, NULL)) WED, , D, ...
- JBOD
JBOD(Just a Bunch Of Disks)不是RAID,它是可以把不同容量的硬盘串连成一个大的逻辑盘,与RAID0不同的是在写入数据时是向一个硬盘写入,写满后再向下一个硬盘写. 尽管建议采 ...
- Java设计模式——代理模式
public interface People { public void work(); } public class RealPeople implements People { public v ...
- LeetCode - 185. Department Top Three Salaries
The Employee table holds all employees. Every employee has an Id, and there is also a column for the ...
- [Python Study Notes]CS架构远程访问获取信息--SERVER端v2.0
更新内容: 1.增加内存信息获取 2.增加电池信息获取 3.增加磁盘信息获取 4.重新布局窗体 5.增加窗体名称 6.增加连接成功之前,不可按压 ''''''''''''''''''''''''''' ...