CVPR2020-Meshed-Memory Transformer for Image Captioning

news2024/11/18 15:33:10

 论文地址:Meshed-Memory Transformer for Image Captioning (thecvf.com)

Background

本文在transformer的基础上,对于Image Caption任务,提出了一个全新的fully-attentive网络。在此之前大部分image captioning的工作还是基于CNN进行特征提取再有RNNs或者LSTMs等进行文本的生成。本文的主要创新点为:

  1. 图像区域及其关系以多级方式编码,其中考虑了低级和高级关系。在建模这些关系时,本文的模型可以通过使用持久的记忆向量来学习和编码先验知识;

  2. 句子的生成采用了多层架构,它利用了低级和高级的视觉关系,而不是只有一个来自视觉模态的单一输入。

 如上图所示,首先对于传统的Transformer加入了先验知识学习的vector (图中encoder layer里的白色部分)。其次对于cross attention,区别于传统的transformer只使用encoder最后一层输出来参与,本文提出将每一层的encoder layer的输出都做一次attention运算,利用了low-levelhigh-level所有的信息。

Improvement

模型的整体结构如下:

 主要改进就是在传统attention中加入了memory slots,用来存储并学习先验知识。并且encoder 和 decoder之间cross attention不仅仅只是encoder最后一层的输出参与计算,而是每一层的输出都参与。

Memory-Augmented Encoder

传统的Transformer中的encoder部分的self-attention是用来提取输入数据之间的关系并提取特征,其中queries, keys 和 values都是对输入数据进行不同的线性变换得来的:

其中是可学习参数。

这种self-attention操作只提取了输入数据本身的关系,但是这样的操作并不能加入一些先验知识。例如,当输入特征包括篮球时,并不能结合先验特征得到运动员比赛这样的概念。因此本文在encoder的self-attention操作中加入了先验知识学习的部分。因此self-attention的操作则变为:

其中是可学习参数。在代码中可以找到他们是这样定义的:

self.m_k = nn.Parameter(torch.FloatTensor(1, m, h * d_k))
self.m_v = nn.Parameter(torch.FloatTensor(1, m, h * d_v))

Meshed Cross-Attention

本文在传统Transformer只利用encoder最后的输出进行decoder 部分cross-attention计算的基础上做了改进。动机是为了结合深层和浅层的信息,并进行信息的融合,其中融合的办法是加权求和

对于Encoder的每一层的输出为,对于Decoder的输入序列定义为.因此每一层与的cross attention 计算方法如下:

定义是一个权重矩阵,的权值调节各编码层的单一贡献,以及不同编码层之间的相对重要性。通过测量每个编码层的交叉注意结果与输入查询之间的相关性来计算这些数据,如下所示:

因此最后decoder的cross-attention的输出为:

其他部分和Transformer类似,这里就不详细介绍了。

Conclusion

本文算是首次将Transformer应用于Image captioning这项工作中,同时也考虑了结合不同层的信息的融合。主要的改进也在于信息的融合,首先是对于先验知识和encoder信息的融合,然后就是encoder不同层信息之间的融合。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/82477.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

error: (-215:Assertion failed) !ssize.empty() in function ‘cv::resize‘

网上以及说来很多方法了, 1.图片路径写成了如下形式:C:\Users\Desktop\test 正确的应该为:C:/Users/Desktop/test/ (在程序中斜杠‘\’有转义字符含义) 2.图片路径少写了一个斜杠(图片存放在test文件夹中&…

深度强化学习

参考1. 引言 — 动手学深度学习 2.0.0 documentation 深度强化学习(deep reinforcement learning)将深度学习应用于强化学习的问题,是非常热门的研究领域。 突破性的深度Q网络(Q-network)在雅达利游戏中仅使用视觉输入…

easy-jenkins自动化部署

项目简介 easy-jenkins是一款可以对本地项目进行一键自动化部署的一款简易工具,可以很方便地将平常我们java开发中的springboot项目自动打包成jar包以及vue等前端项目也进行一键构建上传服务器进行部署,更加简化了jenkins的繁琐配置,对于使用者来说更加友好与方便 我们在使用时…

五面阿里巴巴拿offer后定级P6:分享Java面经及答案总结

一面(电话) 说说对JVM的理解 treemap和hashmap有什么区别? Java多线程的的5大状态图流转 mysql主键和唯一索引的区别 说说最近的项目 如何实现session共享,用redis如何实现 缓存击穿的概念和解决方案 说说微服务,微服务之间如何管理 二…

Python tkinter -- 第18章 画布控件之线段(line)

**18.2.17 create_line(coords, options) 根据 coords 给定的坐标,在画布上创建一条或多条线段。 如果给定的坐标超过两个点,则会首尾相连变成一条折线。 #直线 import tkinter as tk roottk.Tk() root.geometry(320x240) b1tk.Canvas(root) b1.create_…

[附源码]JAVA毕业设计疫情下图书馆管理系统(系统+LW)

[附源码]JAVA毕业设计疫情下图书馆管理系统(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目…

正点原子-freeRTOS

裸机与操作系统的区别 1、操作系统可以实现多线程,虽然同一时间只能做一件事但是切换很快,裸机要轮流执行很慢 2、操作系统可以抢占线程,裸机只能使用中断实现,很慢,不实时 3、操作系统在等待延时的时候&#xff0c…

进程/线程篇

1.进程 1.1.进程PCB PCB是进程存在的唯一标识:进程消失了,PCB也随之消失 1.1.1.PCB包含哪些信息 进程描述信息 进程标识符:标识各个进程,每个进程有唯一的标识符用户标识符:进程归属的用户,用户标识符主…

cmake基础到实战

cmake从基础到实站 cmake官方教程翻译版 CMake Cookbook中文版 cmake 备忘录 需要注意的一点:QT6采用cmake作为编译系统 CMake是一种跨平台编译工具,CMake主要是编写CMakeLists.txt文件,然后通过cmake命令将CMakeLists.txt文件转化为make所需…

生信工作流框架搭建 | 03-nextflow与AWS批量计算

目录生信工作流框架搭建 | 03-nextflow与AWS Batch前情提要批量计算基本概念批量计算服务(Batch Computing Service)是一种适用于大规模并行批处理作业的分布式云服务。术语表AWS 构建如果你使用除大陆外的区域如果你恰好在EU或者Ireland如果你使用大陆区…

人为什么会穷,人穷的原因是什么

大家好,我是蝶衣王的小编,今天分享一下人为什么会穷 你玩的有多脏,你就有多成功。这里指的脏!​不是传统意义上的脏,而是你是不是那种死心眼。 ​ 小时候都背过三字经,说到人之初,性本善。但是…

spring源码-bean的后置处理器

BeanPostProcessor BeanPostProcessor也称为Bean后置处理器,它是Spring中定义的接口,在Spring容器的创建过程中(具体为Bean初始化前后)会回调BeanPostProcessor中定义的两个方法。 BeanPostProcessor的源码如下: public interf…

FFU安装条件及八大步骤详解

FFU安装条件及八大步骤(FFU过滤器) FFU安装的条件、环境及安装人员的服饰要求: 温 度: 5℃~45℃ 相对湿度:不大于85%(35℃) 大气压力:86Kpa~106Kpa zui大尘埃浓度:3500粒/升(尘埃粒径不大于0.5um) 电 源:220V 50…

详解 TS 中的子类型兼容性

简介 在写 TypeScript 代码时经常遇到类型检查不通过的问题,这些问题根据编译器给出的错误提示以及修改建议多数可以快速修复。本文讲解的内容是编译器进行类型检查时的兼容性相关检查规则,这些规则在 TypeScript 语言背后默默发挥作用。不了解这些规则…

艾美捷寡聚脱氧核苷酸CpG ODN:ODN 1668

艾美捷CpG ODN:ODN 1668:具有硫代磷酸酯骨架的CpG寡脱氧核苷酸(B型)。小鼠TLR9(Toll样受体9)的特异性配体。 艾美捷Enzo CpG ODN:ODN 1668详细信息: 序列:5-tccatgtgtcc…

Akka 学习(九)Akka Cluster

参考文章 Gitter Chat,Akka 在线交流平台Akka Forums,Akka 论坛Akka in GitHub,Akka 开源项目仓库Akka Official Website,Akka 官网Akka Java API,Akka 应用程序编程接口《Akka入门与实践》 [加]Jason Goodwin&#x…

AI创业时代!这9个方向有钱途;AIGC再添霸榜应用Lensa;美团SemEval2022冠军方法分享;医学图像处理工具箱… | ShowMeAI资讯日报

👀日报合辑 | 🎡AI应用与工具大全 | 🔔公众号资料下载 | 🍩韩信子 📢 2023年9个有前途的 AI 创业方向 https://www.aiplusinfo.com/blog/9-promising-artificial-intelligence-startup-ideas-for-2023/ 2022年&#x…

央视广告怎么做,做好央视广告的关键点有哪些

企业品牌打算投放央视广告,首先想到的是如何做才更有效果,往往本身就比较困惑。公司应该投入多少资金?应选用何种广告投放方案?有时公司内部的观点也是不同的。尤其是面对广告公司提供的众多方案,让负责人看着都头疼&a…

Tos-GPR-AMC,117961-27-0,标记肽Tos-GPR-7-氨基-4-甲基香豆素

胰蛋白酶和凝血酶的荧光底物 Tos-GPR-AMC, fluorogenic substrate for trypsin and thrombin. Kinetic data for Thrombin: kcat 180, Km 310 uM. 编号: 190611中文名称: 标记肽Tos-GPR-7-氨基-4-甲基香豆素英文名: Tos-Gly-Pro-Arg-AMCCAS号: 117961-27-0单字母: Tos-GPR-AM…

代码随想录训练营第6天

专题:哈希表 题目:有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 例如 输入: s "anagram", t "nagaram" 输出: true 说明: 你可以假设字符串只包含小写字母。 题目理解&…