REC 系列 Visual Grounding with Transformers 论文阅读笔记

news2025/1/16 17:46:34

REC 系列 Visual Grounding with Transformers 论文阅读笔记

  • 一、Abstract
  • 二、引言
  • 三、相关工作
    • 3.1 视觉定位
    • 3.2 视觉 Transformer
  • 四、方法
    • 4.1 基础的视觉和文本编码器
    • 4.2 定位编码器
      • 自注意力的文本分支
      • 文本引导自注意力的视觉分支
    • 4.3 定位解码器
      • 定位 query 自注意力
      • 编码器-解码器自注意力
    • 4.4 预测头和训练目标
  • 五、实验
    • 5.1 数据集
    • 5.2 实施细节
      • 超参数的设置
      • 训练和评估细节
    • 5.3 与 SOTA 方法的比较
    • 5.4 消融实验
      • 每部分的贡献
      • 文本引导自注意力的有效性
      • 层的数量
    • 5.5 定性分析
  • 六、结论

写在前面

  Hello,马上又是一周过去了,快要开学了,不知道小伙伴们状态都调整过来了吗?加油噢~
  这同样是一篇关于 REC 的文章,文章时间比较早了,但也是属于那种入门必看的文章。

  • 论文地址:VISUAL GROUNDING WITH TRANSFORMERS
  • 代码地址:https://github.com/usr922/vgtr
  • 收录于:ICME 2022
  • Ps:2023 年每周一篇博文阅读笔记,主页 更多干货,欢迎关注呀,期待 5 千粉丝有你的参与呦~

一、Abstract

  本文提出基于 Transformer 的方法用于视觉定位。不像现有的先取出 proposals 后排序的方法,极度依赖于预训练的目标检测器,或者无 proposal 的框架方法,通过融合文本化的 embedding 更新一组离线的单阶段检测器。本文提出的方法 Visual Grounding with TRansformers VGTR 建立在 Transformer 框架之上,独立于预训练检测器和 word embedding 之外,用于学习语义区分性的视觉特征。实验达到了 SOTA 的性能。

二、引言

  首先指出视觉定位的定义,应用,难点。早期的方法将视觉定位视为基于文本的图像检索的特例,并将其塑造为:在给定图像中,从一组候选区域中检索指代目标的任务。这些方法极度依赖于预训练的目标检测器,且经常忽略目标的视觉上下文。此外,大多数方法需要额外的计算成本来产生和处理候选 proposals。
  最近的一些工作去除了 Proposals 的生成过程,直接定位到目标,但视觉和文本化的特征仍然彼此独立。为减轻这一问题,本文提出端到端的基于 Transformer 的网络 VGTR,在不产生目标 proposals 的情况下,能够捕捉全局视觉和语言上下文。与那些建立在离线检测器或 grid 特征的方法相比,VGTR 将视觉定位视为基于 query sentence 的目标 bounding box 的坐标回归问题。

在这里插入图片描述
如上图所示,VGTR 由四个模块组成:基础编码器,用于计算基础的图文对 tokens;一个双流的定位编码器,用于执行视觉语言的共同推理和跨模态交互;一个定位解码器,将文本 toknes 视为定位 queries,从编码后的视觉 tokens 中提出目标的相关特征;一个预测头,用于执行 bounding box 的坐标回归。此外,设计一种新的自注意力机制来替代原有的而应用到视觉 tokens 上,在没有降低定位能力的情况下建立起两种模态间的关联并学习文本引导的视觉特征。

  贡献总结如下:

  • 提出一种端到到的框架 VGTR 用于视觉定位,无需预训练的检测器和预训练的语言模型;
  • 提出文本引导的注意力模块来学习语言描述引导下的视觉特征;
  • 方法达到了 SOTA。

三、相关工作

3.1 视觉定位

  本文将视觉定位分为两类:proposal-rank,proposal-free。前者首先通过离线的检测器或 proposal 生成器从输入的图像中生成一组候选目标 proposals,然后关联语言描述并对这些候选 proposals 打分,从中选出最高得分的一个作为定位目标。这些方法非常依赖预训练的检测器或 proposal 生成器的性能。
  Proposal-free 的方法关注于直接定位指代目标,在精度和推理速度上潜力很足。

3.2 视觉 Transformer

  Transformer 最近在目标检测、图像分割很火。DETR 系列将视觉特征图变换为一组 tokens,实现了 SOTA。

四、方法

4.1 基础的视觉和文本编码器

  给定图像和参考表达式对 ( I , E ) (I,E) (I,E),视觉定位任务旨在用 Bounding box 定位到由目标表达式描述的目标实例上。
  首先调整图像尺寸为 w × h w\times h w×h,然后送入 ResNet backbone 中提取图像特征图 F ∈ R w s × h s × d F\in \mathbb{R}^{\frac ws\times\frac hs \times d} FRsw×sh×d,其中 s s s 为 backbone 输出的步长, d d d 为通道数量。之后将视觉特征图 F F F 变形为视觉 tokens X v = { v i } i = 1 T v X_v=\{{{v}_i}\}_{i=1}^{T_v} Xv={vi}i=1Tv,其中 T v = w s × h s T_v=\frac ws\times\frac hs Tv=sw×sh 为 tokens 的数量, v i v_i vi 的尺寸为 d d d
  使用基于 RNN 的 soft-parser 提取文本 tokens:对给定的表达式 E = { e t } t = 1 T E=\{e_t\}^{T}_{t=1} E={et}t=1T,其中 T T T 表示单词个数, 首先用可学习的 embedding 层,即 u t = Embedding ( e t ) u_t=\text{Embedding}(e_t) ut=Embedding(et) 将每个单词 e t e_t et 转变为向量 u t u_t ut。然后应用双向 LSTM 编码每个单词的上下文。之后计算第 k k k 个文本 token 在第 t t t 个单词上的注意力:
h t = Bi-LSTM ⁡ ( u t , h t − 1 ) a k , t = exp ⁡ ( f k T h t ) ∑ i = 1 T exp ⁡ ( f k T h i ) \begin{aligned} h_{t}& =\operatorname{Bi-LSTM}(u_{t},h_{t-1}) \\ a_{k,t}& =\frac{\exp(f_k^Th_t)}{\sum_{i=1}^T\exp(f_k^Th_i)} \end{aligned} htak,t=Bi-LSTM(ut,ht1)=i=1Texp(fkThi)exp(fkTht)之后第 k k k 个文本 token 定义为 word embedding 的权重求和:
l k = ∑ t = 1 T a k , t u t \boldsymbol{l}_k=\sum_{t=1}^Ta_{k,t}\boldsymbol{u}_t lk=t=1Tak,tut最后的文本 tokens 表示为 X l = { l k } k = 1 T l X_{l}=\{l_{k}\}_{k=1}^{T_{l}} Xl={lk}k=1Tl,其中 T l T_l Tl 为 tokens 的数量, l k l_k lk 的尺寸为 d d d

4.2 定位编码器

  定位编码器由堆叠的 N N N 个独立层组成,每层包含两个独立的视觉+语言分支,用于处理视觉和文本 tokens。和 Transformer 层相同,每个分支包含三个子层:Norm Layer,多头自注意力层 multi-head self-attention layer,全连接前向层 FFN。

自注意力的文本分支

  给定 queries q l q_l ql,从第 i i i 层的文本 tokens X l i X_l^i Xli 中得出 keys k l k_l kl 和 values v l v_l vl,文本自注意力层的输出为:
T-Attn ⁡ ( q l , k l , v l ) = softmax ⁡ ( q l k l T d ) ⋅ v l \operatorname{T-Attn}(\boldsymbol{q}_l,\boldsymbol{k}_l,\boldsymbol{v}_l)=\operatorname{softmax}\left(\frac{\boldsymbol{q}_l\boldsymbol{k}_l^T}{\sqrt d}\right)\cdot\boldsymbol{v}_l T-Attn(ql,kl,vl)=softmax(d qlklT)vl之后应用 FFN,定义为 FFN l \text{FFN}_l FFNl 得到文本特征 X l i + 1 X_l^{i+1} Xli+1
X l i + 1 = FFN l  (T-Attn ( q l , k l , v l ) ) X_l^{i+1}=\text{FFN}_l\text{ (T-Attn}(q_l,k_l,v_l)) Xli+1=FFNl (T-Attn(ql,kl,vl))

文本引导自注意力的视觉分支

  视觉分支的结构同文本分支类似,但有一个额外的组件称之为文本引导的自注意力,旨在文本描述的引导下提取显著性的视觉特征。具体来说,给定 queries q v q_v qv, 从第 i i i 层的视觉 tokens X v i X_v^i Xvi 中得出 keys k v k_v kv 和 values v v v_v vv。接下来文本特征 X l i + 1 X_l^{i+1} Xli+1 作为额外的引导信息来补充视觉 queries。为顺利实现,通过特定 token 对文本 tokens X l i + 1 X_l^{i+1} Xli+1 的权重求和,再添加上视觉 queries q v q_v qv。其中权重通过 q v q_v qv X l i + 1 X_l^{i+1} Xli+1 的点乘得到:
V − A t t n ( q ^ v , k v , v v ) = s o f t m a x ( q ^ v k v T d ) ⋅ v v q ^ v = q v + s o f t m a x ( q v ( X l i + 1 ) T d ) ⋅ X l i + 1 \mathrm{V-Attn}(\hat{\boldsymbol{q}}_v,\boldsymbol{k}_v,\boldsymbol{v}_v)=\mathrm{softmax}\left(\frac{\hat{\boldsymbol{q}}_vk_v^T}{\sqrt{d}}\right)\cdot\boldsymbol{v}_v \\ \\ \begin{aligned}\hat{q}_v&=\boldsymbol{q}_v+\mathrm{softmax}\left(\frac{\boldsymbol{q}_v(X_l^{i+1})^T}{\sqrt d}\right)\cdot X_l^{i+1}\end{aligned} VAttn(q^v,kv,vv)=softmax(d q^vkvT)vvq^v=qv+softmax(d qv(Xli+1)T)Xli+1类似的,应用 FFN,表示为 FFN v \text{FFN}_v FFNv 得到视觉 tokens X v i + 1 X_v^{i+1} Xvi+1
X v i + 1 = F F N v ( V − A t t n ( q ^ v , k v , v v ) ) X_v^{i+1}=\mathrm{FFN}_v(\mathrm{V-Attn}(\hat{q}_v,k_v,v_v)) Xvi+1=FFNv(VAttn(q^v,kv,vv))
下图为跨模态注意力和本文提出的文本引导的注意力机制示意图:

在这里插入图片描述
  一个典型的多模态自注意力机制的 Queries 来源于一个模态,而 Keys,Values 则源于另一个模态来执行标准的自注意力操作,类似 Transformer 解码器中的自注意力操作。但以这种方式融合文本信息到图像特征中可能会损害定位能力,于是本文提出通过文本 tokens 引导视觉特征,从而实现更高的性能。

4.3 定位解码器

  解码器同样由 N N N 个独立的层堆叠组成。其中每层有 4 个子层:Norm Layer,定位 query 自注意力层 grounding query self-attention layer,编码器-解码器自注意力层,全连接前项层 fully connected feed-forward (FFN) layer。
  定位解码器的输入为修改后的文本 tokens X l N X_l^N XlN,之后为定位 queries G G G 服务,此外还有视觉 tokens X v N X_v^N XvN 的参与。在定位 queries 的引导、定位 query 自注意力、编码器-解码器自注意力机制下,将文本引导的视觉特征解码。

定位 query 自注意力

  给定 queries q g q_g qg,从第 i i i 层的定位 queries G i G^i Gi 中得出 keys k g k_g kg 和 values v g v_g vg。然后应用标准的自注意力机制执行 query 增强:
G-Attn ( q g , k g , v g ) = softmax ( q g k g T d ) ⋅ v g \text{G-Attn}(q_g,k_g,v_g)=\text{softmax}\left(\frac{q_gk_g^T}{\sqrt{d}}\right)\cdot v_g G-Attn(qg,kg,vg)=softmax(d qgkgT)vg之后通过层归一化 layer normalization (LN) 得到修改后的定位 queries:
G i + 1 = L N ( G − A t t n ( q g , k g , v g ) ) G^{i+1}=\mathrm{LN}(\mathrm{G-Attn}(q_g,k_g,v_g)) Gi+1=LN(GAttn(qg,kg,vg))

编码器-解码器自注意力

  编码器-解码器自注意力将定位 queries G i + 1 G^{i+1} Gi+1 视为 queries f g q f_g^q fgq,从编码后的视觉 tokens X v N X_v^N XvN 中得到 keys f v k f_v^k fvk 和 values f v v f^v_v fvv 作为输入,输出提取后的文本相关特征:
ED-Attn ⁡ ( q g , k v , v v ) = softmax ⁡ ( q g k v T d ) ⋅ v v \operatorname{ED-Attn}(q_g,k_v,v_v)=\operatorname{softmax}\left(\frac{q_gk_v^T}{\sqrt d}\right)\cdot v_v ED-Attn(qg,kv,vv)=softmax(d qgkvT)vv最后,应用 FFN,表示为 FFN e d \text{FFN}_{ed} FFNed 得到最终的 embeddings Z Z Z
Z = FFN e d ( ED-Attn ( q g , k v , v v ) ) Z=\text{FFN}_{ed}(\text{ED-Attn}(q_g,k_v,v_v)) Z=FFNed(ED-Attn(qg,kv,vv))

4.4 预测头和训练目标

  本文将指代目标定位任务视为 bounding box 坐标回归问题。从定位解码器中得到变换后的 embedding Z = { z i } i = 1 K ∈ R K × d Z=\{z_{\boldsymbol{i}}\}_{i=1}^{K}\in\mathbb{R}^{K\times d} Z={zi}i=1KRK×d,然后拼接所有变换后的向量,之后使用预测头来回归中心点的坐标以及指代目标的宽高。预测头由两个全连接层后跟 ReLU 激活层组成。
  训练目标为 L1 损失和通用 IoU(GIoU) 损失 L i o u ( ⋅ ) \mathcal{L}_{iou}(\cdot) Liou() 的线性组合:
L o s s = λ L 1 ∣ ∣ b − b ^ ∣ ∣ 1 + λ L i o u L i o u ( b , b ^ ) Loss=\lambda_{L_1}||b-\hat{b}||_1+\lambda_{L_{iou}}\mathcal{L}_{iou}(b,\hat{b}) Loss=λL1∣∣bb^1+λLiouLiou(b,b^)其中 b ^ \hat b b^ 表示预测目标的 bounding box, b b b 为 GT, λ L 1 \lambda_{L_1} λL1 λ L i o u ∈ R \lambda_{L_{iou}}\in \mathbb{R} λLiouR 为平衡两种损失的超参数。

五、实验

5.1 数据集

  Flickr30k Entities、RefCOCO/RefCOCO+/RefCOCOg。

5.2 实施细节

超参数的设置

  输入图像尺寸 512 × 512 512\times512 512×512,句子的最大长度 20,Backbone 的输出步长 s = 32 s=32 s=32。对于所有的数据集,提取 4 个文本 tokens。多头注意力中头的数量为 8,隐藏层尺寸 d = 256 d=256 d=256,VGTR 的层数 N = 2 N=2 N=2 λ L 1 = 5 \lambda_{L_1}=5 λL1=5 λ L i o u = 2 \lambda_{L_{iou}}=2 λLiou=2.

训练和评估细节

  AdamW 优化器,初始学习率 1 e − 4 1e-4 1e4,权重衰减 1 e − 5 1e-5 1e5,CNN backbone:ResNet50/101,初始化权重采用预训练在 MSCOCO 数据上的权重。总共训练 120 个 epoch,在第 70 个和第 90 个 epoch 时,学习率衰减 10 % 10\% 10%。采用 Accuracy@0.5 作为评估指标、

5.3 与 SOTA 方法的比较

  
在这里插入图片描述

5.4 消融实验

每部分的贡献

  
在这里插入图片描述

文本引导自注意力的有效性

  
在这里插入图片描述

层的数量

  同上表 3。

5.5 定性分析

  
在这里插入图片描述

六、结论

  本文提出单阶段的基于 Transformer 的框架 VGTR 用于视觉定位任务,实验表明方法有效。

写在后面

  这篇论文比较简短啊,但也算是对 Transformer 的一个很好的应用和改进了吧,在 2021 年的时候。现在看效果就没那么炸裂了。而且论文里面作者这个写作水平也得提高一下,很多概念都是点一下,没有深究。此外浪费了一部分篇章在 Transformer 结构上,这是不太合适的。

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

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

相关文章

教你手机摄影要知道的技巧

手机摄影已经成为人们记录生活、分享瞬间的重要方式之一。随着手机摄像头技术的不断提升,我们每个人都有机会成为优秀的手机摄影师。然而,要想在手机摄影领域脱颖而出,掌握一些关键的技巧是必不可少的。 1. 了解你的手机摄像头: …

使用percona-xtrabackup备份MySQL数据

xtrabackup备份分为两种 本文参考链接1 本文参考链接2 全量备份 1.备份数据 要创建备份,请xtrabackup使用xtrabackup --backup option. 您还需要指定一个xtrabackup --target-dir选项,即备份的存储位置,如果InnoDB数据或日志文件未存储在同…

Electron入门,项目启动。

electron 简单介绍: 实现:HTML/CSS/JS桌面程序,搭建跨平台桌面应用。 electron 官方文档: [https://electronjs.org/docs] 本文是基于以下2篇文章且自行实践过的,可行性真实有效。 文章1: https://www.cnbl…

Tomcat 为什么要破坏 Java 双亲委派机制?

大家好,我是锋哥!! 我们分为4个部分来探讨: 什么是类加载机制?什么是双亲委任模型?如何破坏双亲委任模型?Tomcat 的类加载器是怎么设计的? 我想,在研究tomcat 类加载之前,我们复习…

java+springboot+mysql银行管理系统

项目介绍: 使用javaspringbootmysql开发的银行管理系统,系统包含超级管理员、管理员、客户角色,功能如下: 超级管理员:管理员管理;客户管理;卡号管理(存款、取款、转账&#xff09…

自动化安装系统(三)

Cobbler 简介 Cobbler是一款Linux生态的自动化运维工具,基于Python2开发,用于自动化批量部署安装操作系 统;其提供基于CLI的管理方式和WEB配置界面,其中WEB配置界面是基于Python2和Django框架开发。另外,cobbler还提…

Go语言基础之运算符

运算符用于在程序运行时执行数学或逻辑运算。 运算符 Go 语言内置的运算符有: 算术运算符关系运算符逻辑运算符位运算符赋值运算符

【Java】Spring——Bean对象的作用域和生命周期

文章目录 前言一、引出Bean对象的作用域1.普通变量的作用域2.Bean对象的作用域 二、Bean对象的作用域1.Bean对象的6种作用域2.设置Bean对象的作用域 三、Bean对象的生命周期总结 前言 本人是一个普通程序猿!分享一点自己的见解,如果有错误的地方欢迎各位大佬莅临指导,如果你也…

window安裝python2.7.0

官网下载安装 https://www.python.org/downloads/release/python-270/ 选中所有用户,然后点击next 切换安装位置,最好不要选择c盘 点击next 等待安装 安装完成 配置环境变量 将python安装路径添加到系统环境变量 cmd窗口输入python,会打开应用商…

unity Dropdown默认选择不选择任何选项

当我们使用Dropdown下拉框时,有时不需要有默认选项,把 value设置为-1就可以了, 但是用代码设置value-1是没有效果的,

Stochastic: Distribution-Expectation-Inequalities

见:https://www.math.hkust.edu.hk/~makchen/MATH5411/Chap1Sec2.pdf

创意灵感网站都有哪些?推荐这8个

设计师最痛苦的事情不是:改变草稿!加班吧!但创造力已经耗尽,没有灵感。对于创意设计师来说,浏览创意网站是寻找灵感创意的关键途径。但当你寻找灵感和创造力时,你会发现一些著名的创意网站只是展示了热门图…

利用console提高写bug的效率

前端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 自从入坑前端后,日常写bug就没离开过console。 要说用得多,不如说是console.log用得多,console.warn和console.erro…

msvcp140dll下载方法,msvcp140dll丢失的修复教程

msvcp140.dll是Microsoft Visual C Redistributable组件中的一个动态链接库文件。它是Microsoft Visual C 2015版本和更高版本所需的一个重要文件。这个文件主要用于支持C编译的应用程序,以提供与C相关的函数和功能。 为了解决msvcp140.dll文件丢失或损坏的问题&am…

[Go版]算法通关村第十二关黄金——字符串冲刺题

目录 题目:最长公共前缀解法1:纵向对比-循环内套循环写法复杂度:时间复杂度 O ( n ∗ m ) O(n*m) O(n∗m)、空间复杂度 O ( 1 ) O(1) O(1)Go代码 解法2:横向对比-两两对比(类似合并K个数组、合并K个链表)复…

antd5源码调试环境搭建(window系统)

将antd源码克隆至本地 $ git clone gitgithub.com:ant-design/ant-design.git $ cd ant-design $ npm install $ npm start前提安装python3、安装node版本18版本 不然后续安装依赖会报python3相关的错误。 项目需要使用git 初始化 不然会报husky相关的错误 git init重新安…

元宇宙电商—NFG系统:区块链技术助力商品确权。

在国内,以“数字藏品”之名崛起以来,其与NFT的对比就从未停歇。从上链模式到数据主权,从炒作需求到实际应用,从售卖形式到价值属性,在各种抽丝剥茧般的比较中,围绕两者孰优孰劣的讨论不绝于耳。 NFT的每一…

git 恢复丢失的代码

1.进入代码目录,打开git Bash,执行命令:git reflog,可以查看到提交记录编号;可以看git库查看记录,看丢失的是那次提交的代码; 2.执行命令:git cherry-pick ID ID就是记录编号; 3…

车载APP软件外包开发通讯

车载APP与车辆之间的通信方式和特点会因为不同的技术和场景而有所不同。以下是一些常见的车载APP与车辆通信方式以及它们的特点,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.蓝牙连接&#xff1a…

GuLi商城-前端基础Vue-生命周期和钩子函数

下图展示了实例的生命周期。你不需要立马弄明白所有的东西,不过随着你的不断学习和使用,它 的参考价值会越来越高。 VUE 的生命周期指的是组件在创建、运行和销毁过程中所经历的一系列事件,通过这些事件可以 让开发者在不同阶段进行相应的…