首页 > 其他分享 >Improving Visual Grounding with Visual-Linguistic Verificationand Iterative Reasoning

Improving Visual Grounding with Visual-Linguistic Verificationand Iterative Reasoning

时间:2024-12-02 10:34:17浏览次数:6  
标签:候选框 Fv 特征 Iterative Visual 上下文 Grounding 视觉 文本

Abstract

之前的Visual grounding任务方法主要是通过生成一些候选框或者anchors来进行的,基于这些候选框或锚点提取图像的视觉特征,最后将这些视觉特征与文本描述的嵌入向量(text embeddings)进行融合,以找到文本描述对应的图像区域。但是缺点就是在生成候选框的时候没有充分结合文本上下文信息。

本文通过建立文本条件判别特征,进行多阶段跨模态推理基于Transformer上的框架,具体来说,(1)开发了一个视觉语言验证模块,将视觉特征集中在与文本描述相关的区域,同时抑制不相关的区域。

(2)设计了语言引导特征编码器,对目标对象的视觉上下文进行聚合,提高目标对象的识别度。

(3)多级跨模态解码器,从编码的视觉特征中检索目标,迭代推测图像和文本之间的相关性,准确定位目标。

Introduction

two-stage:生成候选框,然后再结合文本信息与候选框进行匹配

one-stage:在早期将视觉特征和文本信息进行结合,结合语言查询,生成密集检测,选择置信度高的检测。

缺点:但是这些方法都是基于通用检测器,会受到预测的框的质量的影响

本论文的三个创新点:

(1)visual-linguistic verification module:将编码特征集中在与语言表达相关的区域上

(2)language-guided context encoder:聚合重要的视觉上下文以更好地识别对象。

(3)multi-stage cross-modal decoder:迭代地查询和考虑视觉和语言信息,减少推理过程中地起义

Method

The Overall Network

Visual-Linguistic Verification Module

输入图像首先经过卷积网络,然后再经过transformer encoders进行编码,得到视觉特征硬上映射Fv,Fv中包括图像中对象实例地特征,但是没有先验的语言文本信息,没有任何先验条件的情况下检索被引用对象的表示可能会被其他对象或区域分散注意力,从而导致定位结果的准确性降低。针对这个问题,就提出了visual-linguistic verification module计算视觉和文本之间的细粒度相关性,并将特征集中在与文本描述相关的区域上。

这个模块也是基于多头注意的,让Fv作为查询q,Fl作为k和v,通过多头注意力,模型会从文本嵌入中为视觉特征图中的每个视觉特征向量收集相关的语义特征,获得Fs,它与Fv具有相同的维度。接下来,将 Fv和 Fs通过线性投影和L2归一化映射到相同的语义空间,得到 Fv′​ 和 Fs′。然后计算每个空间位置(x,y)的视觉和文本的相关性。

接下来进行调制视觉特征:通过将验证分数S逐像素地调制到视觉特征 Fv上,得到调制后的视觉特征图 F^v,调制后的视觉特征会自然地抑制与文本不想相关的区域,在后续阶段会更容易地识别和定位相关object。

Language-guided Context Encoder

在文本描述的指导下收集上下文特征。

也是一个基于多头注意机制的计算,将Fv作为q,Fl作为k和v,从文本嵌入中收集线管的语义信息,生成特征映射Fc作为视觉特征的相应的语言表示,基于Fc,有采用另一个多头注意力模块对视觉特征进行语言引导的自注意计算,对所涉及的视觉上下文进行编码,用Fc和Fv的总和作为qkv,计算视觉和语言表征的相关性:

得到注意力值之后与Value进行加权求和就可以得到上下文特征表示Fvc,这些特征包含了基于文本描述的、对目标对象重要的上下文信息。

为了建立更具辨识性的特征表示,将上下文特征Fvc和视觉特征Fv以及视觉-语言验证分数 S进行融合。

在最后的多阶段decoder中利用产生的判别特征表示进行目标定位与识别。

Multi-stage Cross-modal Decoder

为了减少推理中的歧义,提出了这个多阶段跨膜太解码器,迭代地考虑视觉和语言信息以区分目标物体和其他部分,并检索相关特征进行物体定位。

这个decoder有N个阶段,每一个都有相同的架构,在第一阶段,我们采用一个目标查询t_{q}^{1}作为目标对象的输出表示,被送到MH Attn.中基于语言表示做视觉特征提取,然后迭代地被更新为t_{q}^{i},作为下一个阶段的输入,然后再送入到第一个MH Attn.中基于语言表示做视觉特征提取,生成t_{l}\inC*1。t_{l}(作为Q)被送入到第二个MH Attn.中与之前建立的判别特征F^v(作为K)计算相关性,然后从视觉特征图Fv(作为V)中收集感兴趣的区域,最终获得t_{v}\inC*1。这t_{v}就用来更新t_{q}^{i+1},更新过程如下:

LN表示层归一化,FFN是一个由两个线性投影层和 ReLU 激活函数组成的前馈网络。

基于多阶段的结构,每个阶段的目标查询都可以关注到语言描述的不同部分,步收集到更完整、更准确的目标物体特征。随着阶段的推进,目标查询的表示逐渐精细化,最终能够得到更准确的目标物体定位。在每个阶段的输出中,都会将一个三层的 MLP(多层感知机)和ReLU激活函数附加到目标查询上,生成相关目标的bounding box。每个阶段的边框预测都会被共同监督,以便进行多阶段解码器的训练。

Training Loss

不需要像传统的方法那样,进行正负样本分配(就是生成候选框,正样本就是候选框与GT重合较高的,负样本就是候选框与FT重合度低的),直接进行回归生成box,

giou就是计算生成的box和GT的重合度,L1损失计算坐标的绝对误差。

Experiments

Datasets

RefCOCO/ RefCOCO+/ RefCOCOg.

Ablation Study

标签:候选框,Fv,特征,Iterative,Visual,上下文,Grounding,视觉,文本
From: https://blog.csdn.net/qq_51659249/article/details/144173098

相关文章

  • 使用 Keil 新建 Arm Visual Hardware(AVH) 项目
    1新建并配置项目1.1新建项目我这里想模拟Cortex-M55核心,因此选择SSE-300-MPS3由于是简单教程,我只想输出一个最简单的HelloWorld,因此仅勾选串口相关的组件这里还需要特殊勾选一下以下选项1.2配置TargetSoftwareModel处选择TrustZonedisabledRead/WriteMemo......
  • Paper Reading: Relating instance hardness to classifcation performance in a d
    目录研究动机文章贡献实例空间分析ISA框架实例空间构造足迹分析单个数据集的ISA硬度度量指标算法和性能评估特征选择实例空间表示和足迹实验结果案例研究:对于COVIDprognosis数据集的ISA分析案例研究:使用ISA检测COMPAS数据集算法偏差案例分析:使用ISA分析标签噪声数据......
  • 使用 Visual Studio Code 写网页
    1、VisualStudioCode双击打开后,点击圈主的部分(资源管理器)会出现“打开文件夹” 2、点击  “打开文件夹”  ,选中想要打开的文件夹,点击选择文件 也可以直接拖拽想要打开的文件夹放进来3、可以看道文件夹里面的东西都进来了 之前我们写的网页代码也在这里......
  • Visual Studio Code 改成中文模式
    1、双击打开2、点击 3、搜索 chinese出现的第一个就是简体中文  4、点击第一个然后右侧会出来基本信息点击 install就安装了5、安装完后会变成这个样子,uninstall是卸载6、安装完重新启动一下,就可以用了7、如果不成功,就使用快捷键在Ctrl+Shift+p 打开命......
  • Win11系统缺失Microsoft.VisualBasic.Compatibility.Data.resources.dll文件的解决方
    在Windows11操作系统中,用户可能会遇到系统提示找不到Microsoft.VisualBasic.Compatibility.Data.resources.dll文件的问题。这个DLL文件是.NETFramework的一部分,特别是与VisualBasic应用程序的兼容性相关。当这个文件缺失或损坏时,依赖它的应用程序可能无法正常运行,导致错误......
  • 记录一个Linux代码移植到Windows平台下的Visual Studio 2022的代码编码格式的问题
    一、前言工作上与公司的前辈对接,他给了我一份在linux下面编写的代码压缩包,按照道理来说使用条件宏编译不同的windows和linux的API即可实现代码的通用。但是我在VisualStudio2022下面编译的时候缺发生了非常奇怪的事情。随便编译就出现很多报错,但实际上这些报错并不是真正的报错......
  • 「Java EE开发指南」如何使用Visual JSF编辑器设计JSP?(二)
    VisualJSFDesigner的目标是使创建JSF应用程序的特定于组件的工作更容易可视化,在本教程中,您将使用可视化设计器设计JSF登录页面,将学习如何:创建一个JSF项目创建一个新的JSF页面设计JSF页面该功能在MyEclipse中可用。MyEclipsev2024.1离线版下载MyEclipse技术交流群:74233......
  • 如何在 Visual Studio Code 中更改当前的 Git 代码仓库
    Git如何在VisualStudioCode中更改当前的Git代码仓库在本文中,我们将介绍如何在VisualStudioCode中更改当前的 Git 代码仓库。Git 是一款版本控制工具,可以帮助我们管理代码的变更历史记录,而VisualStudioCode是一款开源的跨平台代码编辑器,内置了Git相关功能,......
  • 【动态绘图】python 动态柱形图 动态折线图 bar_chart_race sjvisualizer
    本文主要介绍如何使用Python的bar_chart_race和sjvisualizer模块绘制动态柱形图和动态折线图。关于sjvisualizer包使用详细可见【动态绘图】上。一、实验环境1.1操作系统及Python环境本实验的所使用的操作系统为Windows1064位,Python版本为Python3.12.4,Python编译器......
  • 利用Visual Studio调试WSL下的C++工程
    这里写了一个基于Qt5的控制台的小代码:#include<QCoreApplication>#include<QDebug>intmain(intargc,char**argv){ QCoreApplicationa(argc,argv);qDebug()<<"Applicationstarted";inttestValue=42;qDebug()<<"......