CVPR 2018 基于累积注意力的视觉定位 Visual Grounding via Accumulated Attention 详解

news2024/11/20 15:35:35

Abstract:
VG面临的主要挑战有3个:1 )查询的主要焦点是什么;2 )如何理解图像;3 )如何定位物体。
在本文中,我们将这些挑战形式化为三个注意力问题,并提出了一个累积注意力( A-ATT )机制来共同推理其中的挑战。我们的A - ATT机制可以循环累积图像、查询和对象中有用信息的注意力,而噪声则逐渐被忽略。我们在四个流行的数据集(即: ReferCOCO, ReferCOCO+, ReferCOCOg, and Guesswhat?!)上评估了A - ATT的性能,实验结果表明了所提方法在准确性方面的优越性。

1.Introduction
图1. 在VG中,查询可以是对话、句子或短语,查询的目标是图像中的实例。
VG要求机器理解查询中的复杂推理,以及图像中实例之间的空间和语义关系。
VG中的先驱者[ 4、9、17、28、31、32]只是简单地将所有信息组合在一起,其中可能存在信息冗余,并且没有考虑潜在的关系。例如,Hu等人[ 9 ]使用三个LSTM分别处理语言信息、局部和全局视觉信息。在文献[ 31 ]中,Yu等人提取了两类特征来编码所有对象之间的相似性和差异性,但他们仍然考虑了一种涵盖所有信息的通用特征。近年来,注意力机制因其在处理信息冗余方面的有效性,在自然语言处理[ 2,23]、图像描述[ 29、30 ]和VQA [ 4、14、16、24]等众多应用中得到了广泛的应用。然而,在VG中,除了Rohrbach等人[ 21 ]提出了一种通过语言注意力机制重构给定短语来对查询进行背景化的方法外,很少有工作涉及注意力机制。通过这种方式,减少了查询中的冗余,但图像中的冗余(如不相关的对象)仍然存在。

在本文中,我们将视觉定位问题分解为三个子问题:1 )识别查询中的主要焦点;2 )理解图像中的概念;3 )定位最相关的对象。我们将这些子问题重新表述为三个高度相关的注意力问题,即1) which words to focus on in a query;2)where to look in an image;3)which object to locate. 我们进一步使用一个累积过程将所有类型的注意力组合在一起并循环细化,其中每一种注意力都将在计算其他两种注意力时被用作指导。所提出的方法称为累积注意力( A-ATT ),是端到端的,能够处理不同形式的自然语言查询。

  1. Proposed Method
    VG:形式上,给定一个包含k个对象O = { o1,o2,…,ok }的图像I和一个查询Q,我们希望学习一个假设h,将Q映射到目标对象o *,即h( I、O、Q)→o *。
    图2. 所提方法的架构。在这里插入图片描述
    执行更多轮次的A - ATT机制可以促进不同信息之间的交流。在提出的A - ATT机制的每一轮中,每一种注意力都会被另外两种注意力细化。

3.1. Attention modules

3.1.1 Which words to focus on in a query
在这里,我们以GuessWhat?!中的对话为例。对话由一系列问答对Q = { { q1,a1 },{ q2,a2 },…,{ qT,aT } }组成,其中T是问答对的个数。
一般来说,对话可以很长,因此我们使用分层结构[ 14 ]来编码它们。具体来说,对于对话Q,我们首先使用一个词嵌入层将问题中的每个词编码成一个固定长度的向量。然后,对于每个问答对,我们将编码后的问题输入到一个LSTM中,并从最后一个时间步的隐藏状态中获得问题特征。同时,答案特征只是对原始答案的独热编码。然后,我们将问题特征和答案特征拼接在一起,得到问答对的特征。最后,我们使用另一个LSTM,它将所有QA对特征作为输入,并收集每个循环步骤的输出作为对话特征。需要注意的是,当查询为短语或句子时,一个香草LSTM足以捕获序列内的关系,因此在这种情况下使用分层架构是不必要的,甚至会导致过拟合。
我们将查询特征记为S = { s1,s2,…,sT },其中si是查询中第i个问答对(或词)的特征。探究对话中哪些QA对需要重点关注,我们采用以下注意力机制:
在这里插入图片描述
这里, Hqi是由查询特征S的累积操作(见式( 4 )) )生成的联合特征,其中从图像和物体这两种信息中提取的特征被用作指导。我们将在3.2节中说明 的计算细节。此外,wq是一个可学习的变换矩阵,由此得到的 是查询中第i个QA对的注意力权重。

3.1.2 Where to look in an image
为了决定在图像中的位置,我们采用了图像描述[ 29 ]和VQA [ 14 ]中的通常做法,将图像划分为与提取的特征图相对应的多个区域,并为这些区域分配不同的注意力权重。在我们的模型中,我们使用VGG - 16 [ 22 ]模型从最后一个卷积层提取特征图V = { v1,v2,…,vL },其中L = 14 × 14是区域的个数。类似于查询注意力的计算,我们从V中获得一个联合特征Hc来引导所有图像区域之间的注意力:
在这里插入图片描述
其中 α 是图像中第i个区域的注意力权重,wc是可学习参数。

3.1.3 Which object to locate
在这一部分中,我们明确地在查询和全局图像上下文的指导下对那些候选对象给予不同的关注。目标候选者可以通过预训练的目标检测模型如Faster - RCNN [ 20 ],或者建议生成模型如Edgebox [ 33 ],Objectness[ 1 ]等获得。为了公平比较,我们遵循[ 31、32 ],并使用数据集提供的对象候选者。
然后,我们将每个候选项表示为由两类信息组成的定长向量:空间信息和局部信息。根据文献[ 3 ],我们得到每个候选对象的空间信息:
在这里插入图片描述
式中:w和h分别表示宽度和高度。box表示边界框,下标img表示图像 。对于局部信息,我们用每个候选框的边界框裁剪图像,并将裁剪后的区域输入到前述的VGG - 16模型中。然后,我们将第二个全连接层的输出作为局部信息ol。更重要的是,我们用另外两个嵌入矩阵将os和ol嵌入到同一个向量空间中,因为我们预期候选表示的两个分量应该具有相等的贡献。我们进一步在每个嵌入矩阵之后使用一个Batch Normalization [ 10 ]层来对输出进行缩放。最后,将得到的os和ol拼接在一起,形成对象候选表示o = [ ol 、os]。
我们用O = { o1,o2,…,oK }表示图像中所有的候选对象,其中K是候选对象的个数。然后基于联合特征Ho计算对oi的注意力权重:
在这里插入图片描述
其中 α 是第i个候选对象的注意力权重,将决定哪个对象要被定位,wo是一个变换矩阵。

3.2. Accumulated Attention (A-ATT) model
在形式上,我们将注意力模块的输入表示为一个特征序列:
在这里插入图片描述
其中d为特征维数,n为序列长度。这里,X可以是查询特征( S ),图像特征( V )或者候选对象的特征( O )。然后,通过计算可以得到联合特征:
在这里插入图片描述
其中,g1,g2∈Rd表示来自其他两类特征的注意引导。Wx、Wg1和Wg2是可学习的参数。然后,对于特征序列X中的每个元素xi,按照方程( 1 ),( 2 )或( 3 )计算注意力权重α i,并通过:
在这里插入图片描述
被注意的特征" ~x “则在其他注意模块中充当注意引导g。将方程( 5 )中的过程记为” ~x = AT T ( X , g1 , g2) “,三种信息的注意特征可以表示为:
在这里插入图片描述
显然,方程( 6 )中的计算形成了一个循环:任何类型的注意特征都会被重复利用来细化其他两类信息的注意。我们定义方程( 6 )为A - ATT,则我们有:
在这里插入图片描述
其中R表示一轮内的计算,i表示循环的第i轮。在每一轮A - ATT过程中,查询特征、图像特征和对象特征被逐步输入到ATT过程中。第一轮A - ATT是初始阶段,没有可用的引导信息。在每一轮结束时,通过方程( 6 )产生被关注的特征” s “、” v “和” o ",并通过方程( 7 )传递到下一轮。此外,如图4所示,这些被关注的特征将在接下来的回合中保持流动。在这个"注意力积累"的过程中,S、V和O中有用信息的注意力会积累,而噪声的注意力会消失。虽然轮数可以无限增长,但在整个过程中模型的总参数是一致的。
在这图3. A - ATT过程。X表示输入特征,g1和g2表示注意引导,~xi表示第i轮X的注意特征。0 表示注意引导尚未产生。里插入图片描述
在这图4. A - ATT机制。粗线表示ATT过程,虚线表示注意引导。一个周期表示一轮A - ATT过程。里插入图片描述

3.3. Grounding the query
为了对图像中的查询进行定位,首先获取每轮A - ATT过程中查询’~s和图像’ ~v的关注特征,然后将其输入到一个嵌入层中,并使用tanh ( · )激活函数生成关注特征的联合表示,即
在这里插入图片描述
式中:We为嵌入矩阵,[ · ]表示级联操作。然后,通过一个softmax函数计算oi成为目标对象的概率:
在这里插入图片描述
其中W是另一个嵌入矩阵, 是oi的注意力权重。此外,表示元素乘法,因为我们希望显式地找到融合图像查询信息F和对象候选特征oi之间的最佳匹配。设p是目标对象o的预测概率( softmax score ),我们的目标是最小化损失函数:
在这里插入图片描述
其中m是一个小批中的样本数。

  1. Experiments
    我们通过执行1 ~ 4轮的A - ATT过程实现了4个版本的算法,分别是Ours - r1、Ours - r2、Oursr3和Ours - r4。其他选项(轮数大于4)不予考虑,因为A - ATT的轮数过多可能导致计算量过大。
    4.1. Datasets
    包含多人的图像放入" TestA “,包含其他物体的图像放入” TestB "。
    在这里插入图片描述

4.2. Implementation details
在本文中,我们使用VGG - 16 [ 22 ]作为我们的主干CNN来提取整幅图像和裁剪区域的特征。对于多轮对话,我们使用层次化LSTM [ 14 ]来处理QA对级别和对话级别的对话。对于句子或短语,我们简单地采取香草LSTM对其进行编码。词嵌入的大小设置为256,而LSTM隐藏状态的维度均为512。

4.3. Performance on ReferCOCO & ReferCOCO+ & ReferCOCOg
我们采用最大互信息方法( MMI ) [ 17 ],visdif方法[ 31 ]和说话人-听话人结构中的听者模型[ 32 ]作为我们的主要基线。
在这里插入图片描述
在ReferCOCO数据集上,Ours - r3在TestA数据集上取得了81.67 %的准确率,而之前最好的结果为78.45 % (在说话人+听话人+ MMI模型中)。在TestB数据集上,Ours - r4取得了与( 80.01 %比80.10 %)相当的性能。此外,在ReferCOCO +数据集上,本文提出的A - ATT机制的四个版本在TestA split( 68.76 % , Ours-r4)和TestB split( 60.69 % , Ours-r3)上的性能均有大幅度提升。最后,在参考COCOg数据集上,A - ATT仍然超过了之前最先进的方法( 73.18 %比72.75 %)。

4.4. Performance on GuessWhat?!
在这里插入图片描述
我们在我们最好的模型Ours - r3上嵌入了一个预训练的词向量[ 18 ],即Ours - r3 ( w2v ),我们观察到它可以显著提高基于A - ATT的模型的性能,这是因为从查询中提取了更好的特征。

4.5. Visualization of the attention
在这里插入图片描述
文本注意力权重 红 蓝 绿 黑

4.6. Ablation studies
在这一部分中,我们通过忽略Ours - r2算法中的一种或两种类型的注意力进行了若干消融研究,并在表4中展示了结果。表4中,W / O.S,w / o.V和W / O.O分别表示不关注查询、图像和对象的模型。w / o.SO表示对查询和对象都没有关注的模型
在这里插入图片描述
我们发现当只使用一种注意力信息(也就是说,注意力模块之间没有相互作用,例如w / o。SO , w / o。VO和w / o。SV)时,该模型只能产生与基线模型相当的结果。此外,与w / o相比. S和W / O。V,w / o。O获得了最好的性能,表明对图像或查询的关注比对对象的关注对A - ATT机制的影响更大。

  1. Conclusions and future works
    在本文中,我们提出了一种新颖的累积注意力( A-ATT )机制来将自然语言查询映射到图像中。我们的模型考虑了三种类型的注意力,即查询注意力、图像注意力和对象注意力。考虑到三种注意力往往高度相关,并且每种注意力都可以被另外两种注意力所强化,我们提出了A - ATT机制来循环细化注意力以进行信息的传递和积累。这样,噪声和冗余会逐渐减少,从而提高性能。我们的模型能够处理各种类型的查询,从短语到长对话。我们在四个流行的数据集上评估了所提方法的有效性。大量的实验表明,与现有的方法相比,该方法具有先进的性能。
    未来还有几个开放性的问题需要探讨。首先,在更复杂的问题设定中,提高模型的稳健性是必要且重要的。更具体地说,更多轮数的A - ATT机制应该在复杂的环境中表现出更多的优势。第二,目前,我们只考虑来自查询和图像的信息。然而,利用其他来源的额外信息(如更大的数据库和网页)来改进注意力积累机制是很有价值的。利用更多的信息来源,我们可以设计更多种类的注意力模块,并通过提出的A - ATT机制在这些信息中建立更充分的交互,从而有望获得更好的性能。

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

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

相关文章

找不到msvcr120.dll无法执行代码?教你6种方法快速解决问题

在现代的计算机编程中,我们经常会遇到各种各样的问题。其中,“由于找不到msvcr120.dll无法执行代码”的问题是许多开发者都会遇到的一个常见难题。这个问题通常发生在我们试图运行使用Visual Studio 2013编译的程序时,因为msvcr120.dll是Micr…

【QT】QTreeWidget

新建项目 第一步:设置头标签 第二步:设置item 第三步:创建子item,挂载在顶层item下 完整代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::W…

Unity Animation--动画剪辑(动画游戏对象)

保存新的动画剪辑后,就可以开始添加关键帧了。 可以使用两种不同的方法为GameObject设置动画。 Unity“动画”窗口:“记录模式”和“预览模式”。 记录模式下的动画窗口 在记录模式下,当您移动,旋转或以其他方式修改动画GameOb…

2022年下半年 软件设计师 上午试卷(前21题)

以下关于RISC(精简指令集计算机)特点的叙述中,错误的是 (1) 。 (1) A. 对存储器操作进行限制,使控制简单化 B. 指令种类多,指令功能强 C. 设置大量通用寄存器 D. 选…

通讯网关软件027——利用CommGate X2OPCUA实现OPC UA访问MSSQL服务器

本文介绍利用CommGate X2OPCUA实现OPC UA访问MS SQL数据库。CommGate X2OPCUA是宁波科安网信开发的网关软件,软件可以登录到网信智汇(http://wangxinzhihui.com)下载。 【案例】如下图所示,实现上位机通过OPC UA来获取MS SQL数据库的数据。 【解决方案】…

全栈开发 - 从 Vue 配置中解决 CORS 跨域问题(2分钟搞定)

目录 一、CORS 跨域问题解决 1.1、前言 1.2、解决办法 a)修改统一配置的 axios 实例 b)修改 config 文件夹下的 index.js 文件 c)完成 一、CORS 跨域问题解决 1.1、前言 如果你后端使用的是微服务项目,通过配置网关可以很好的…

GEE打开NASA-USDA增强型SMAP全球土壤水分数据(10KM,2015-2020)

NASA-USDA增强型SMAP全球土壤水分数据(10KM,2015-2020) 一、GEE登录 首先需要注册一个Goole账号 在该网站中注册 二、创建GEE项目 按照上面操作,注册完后会创建一个自己的GEE项目。(没有的话也可以从下面这个网站…

【网络】用代码讲解HTTP协议

http协议 前言正式开始HTTP协议URLURL格式中每个字段所代表的内容格式中每个字段的作用URL对于特殊符号的处理 HTTP格式快速构建http请求和响应的报文格式http requesthttp response 一些细节http demo web目录代码实现 HTTP请求方法表单GET和POST提交的区别其余方法 HTTP的状态…

什么是热阻?

电流流过导体时,在导体两端会产生电压差,这个电压差除以流过导体的电流就是这个导体的电阻,单位是欧姆。这就是欧姆定律,大家都知道的东西。 当热源的热量在物体中传递时,在物体上也会产生温度差,这个温度差…

面对DDoS和APT攻击,我们该如何有效防御?

关于DDoS(Distributed Denial of Service)分布式拒绝服务攻击,是指攻击者通过技术手段,在很短的时间内对目标攻击网站发出大量请求,极大地消耗相关网站的主机资源,导致其无法正常服务。 打个比方来说&#…

Ubuntu系统上传文件的多种方法-断网上传-安装包上传-物联网开发维护

一、背景 在全新的Ubuntu系统中,其实是无法执行ifconfig命令的,因为这需要net-tools才能执行。在某些无法连接到外网的情况下,我们常常通过将安装包上传或发送到Ubuntu系统中,解压并安装,以保证相关指令能够执行。 本文…

梯度下降算法(Gradient Descent)

GD 梯度下降法的含义是通过当前点的梯度(偏导数)的反方向寻找到新的迭代点,并从当前点移动到新的迭代点继续寻找新的迭代点,直到找到最优解,梯度下降的目的,就是为了最小化损失函数。 1、给定待优化连续可微…

基于Qt QSpinBox 微调框小案例

修改微调框数值的方式包括: 单击右侧的向上/向下按钮 按键盘的向上/向下键 在微调框获取焦点时,通过鼠标滚轮的上下滚动 当然了,也允许用户手动输入 其中: QSpinBox - 用于整数的显示和输入 QDoubleSpinBox - 用于浮点数的显示和输入 它们都是 QAbstractSpinBox 的子类,具…

机器人制作开源方案 | 行星探测车实现WiFi视频遥控功能

1. 功能描述 本文示例所实现的功能为:用手机APP,通过WiFi通信遥控R261样机行星探测车移动,以及打开、关闭行星探测车太阳翼。 2. 电子硬件 在这个示例中,我们采用了以下硬件,请大家参考: 主控板 Basra主控…

DRF反序列化时数据验证完毕返回的是None值

文章目录 错误复现serializers.pyview.py错误 解决方案正确的代码 错误复现 serializers.py class LoginSerializer(serializers.Serializer):username serializers.CharField(min_length5, max_length10, help_text"账号")password serializers.CharField(min_l…

STM32内部flash闪存的总结

最近在做无人船和机巢远程在线升级的项目,牵扯到flash的操作,特此记录,便于以后查找。IMU也用到过,当时没记录 具体细节看 E:\Documets\AY\a-project\IMU\IMU16500\S0IMU v3.3 study\User\Driver\source eeprom.c E:\Documets\A…

Looper分析

Looper分析 在 Handler 机制中,Looper 的作用是提供了一个消息循环 ( message loop ) 的机制,用于处理和分发消息。 Looper 是一个线程局部的对象,每个线程只能有一个 Looper 对象。它通过一个无限循环来不断地从消息队列中取出消息&#x…

How to add a jar to a project in eclipse?

Project -> Properties -> Java Build Path -> Libraries -> Add External JARs

50springboot私人健身与教练预约管理系统

大家好✌!我是CZ淡陌。一名专注以理论为基础实战为主的技术博主,将再这里为大家分享优质的实战项目,本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路…

arrow(c++)改写empyrical系列1---用arrow读取基金净值数据并计算夏普率

用arrow c版本读取了csv中的基金净值数据,然后计算了夏普率,比较尴尬的是,arrow c版本计算耗费的时间却比python的empyrical版本耗费时间多。。。 arrow新手上路,第一次自己去实现功能,实现的大概率并不是最高效的方…