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

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.rhkb.cn/news/95521.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数学建模】-- 数学规划模型

概述: 什么是数学规划? 数学建模中的数学规划是指利用数学方法和技巧对问题进行数学建模,并通过数学规划模型求解最优解的过程。数学规划是一种数学优化方法,旨在找到使目标函数达到最大值或最小值的变量取值,同时满足…

Python中import模块导入的实现原理

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 Python中import模块导入的实现原理 什么是模块import搜索路径import导入模块的原理图书推荐 专栏&…

client-go实战之十二:选主(leader-election)

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是《client-go实战》系列的第十二篇,又有一个精彩的知识点在本章呈现:选主(leader-election)在解释什么是选主之前&…

【数据结构OJ题】移除链表元素

原题链接:https://leetcode.cn/problems/remove-linked-list-elements/description/ 1. 题目描述 2. 思路分析 我们可以定义一个结构体指针变量cur,让cur一开始指向头结点,同时定义一个结构体指针prev,令prev初始化为空指针NULL…

2023年03月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题:数字字符求和 请编写一个程序实现以下功能:从一个字符串中,提取出所有的数字字符即0-9,并作为数求和。 时间限制:1000 内存限制:65536 输入 一行字符串,长度不超过100,字符串中…

图形推理 1

正确答案:D 你的答案:C 官方解析: 根据观察我们发现A、B、C项都为对称图形,只有D项不是。 官方解析: 图形组成元素不相似,先考虑属性规律,再考虑数量规律。属性无明显规律,考虑数量规…

智慧建筑工地平台,通过信息化技术、物联网、人工智能技术,实现对施工全过程的实时监控、数据分析、智能管理和优化调控

智慧工地是指通过信息化技术、物联网、人工智能技术等手段,对建筑工地进行数字化、智能化、网络化升级,实现对施工全过程的实时监控、数据分析、智能管理和优化调控。智慧工地的建设可以提高工地的安全性、效率性和质量,降低施工成本&#xf…

【LINUX相关】生成随机数(srand、/dev/random 和 /dev/urandom )

目录 一、问题背景二、修改方法2.1 修改种子2.2 使用linux中的 /dev/urandom 生成随机数 三、/dev/random 和 /dev/urandom 的原理3.1 参考连接3.2 重难点总结3.2.1 生成随机数的原理3.2.2 随机数生成器的结构3.2.3 二者的区别和选择 四、在代码的使用方法 一、问题背景 在一个…

【MT32F006】MT32F006之CS1237采集秤传感器

本文最后修改时间:2023年06月07日 一、本节简介 本文介绍如何使用MT32F006连接CS1237芯片采集秤传感器。 二、实验平台 库版本:V1.0.0 编译软件:MDK5.37 硬件平台:MT32F006开发板(主芯片MT32F006) 仿真…

微服务相关面试题

👏作者简介:大家好,我是爱写博客的嗯哼,爱好Java的小菜坤 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦 📝社区论坛:希望大家能加入社区共同进步…

python编程小游戏 五子棋,python编程小游戏简单的

大家好,本文将围绕python编程小游戏如何停止展开说明,python编程小游戏日语教程是一个很多人都想弄明白的事情,想搞清楚python编程小游戏超级玛丽需要先了解以下几个事情。 今天分享一个有趣的Python游戏库freegames,它里面包含经…

动漫3D虚拟人物制作为企业数字化转型提供强大动力

一个 3D 虚拟数字人角色的制作流程,可以分为概念设定-3D 建模-贴图-蒙皮-动画-引擎测试六个步骤,涉及到的岗位有原画师、模型师、动画师等。角色概念设定、贴图绘制一般是由视觉设计师来完成;而建模、装配(骨骼绑定)、渲染动画是由三维设计师来制作完成。…

linux--epoll

epoll 参考文献 https://www.cnblogs.com/lojunren/p/3856290.html https://www.51cto.com/article/717096.html linux下的I/O复用epoll详解 要深刻理解epoll,首先得了解epoll的三大关键要素:mmap、红黑树、链表。 IO多路复用 首先需要了解什么是IO多…

JVM——栈和堆概述,以及有什么区别?

方法栈 方法栈并不是某一个 JVM 的内存空间,而是我们描述方法被调用过程的一个逻辑概念。 在同一个线程内,T1()调用T2(): T1()先开始,T2()后开始;T2()先结束,T1()后结束。 堆和栈概述 从英文单词角度来…

[oneAPI] BERT

[oneAPI] BERT BERT训练过程Masked Language Model(MLM)Next Sentence Prediction(NSP)微调 总结基于oneAPI代码 比赛:https://marketing.csdn.net/p/f3e44fbfe46c465f4d9d6c23e38e0517 Intel DevCloud for oneAPI&…

【数据结构】栈和队列常见题目

文章目录 有效的括号用队列实现栈两个队列实现栈一个队列实现栈用栈实现队列设计循环队列最小栈栈的压入&弹出序列逆波兰表达式队列:先进先出 栈:后进先出 有效的括号 https://leetcode.cn/problems/valid-parentheses/ class Solution {public:bool isValid(string s) {…

分割一切模型FastSAM,点哪里分割哪里

分割一切模型FastSAM点哪里分割哪里 VX搜索 《晓理紫》,关注并回复fastsampoint获取核心源码 [晓理紫] 1 效果 2 核心代码 在FastSAM ONNXRuntime部署,FastSAM TensorRT部署分别介绍了FastSAM通过OnnxRuntime以及TensorRT部署,通过点进行选取…

simulink学习笔记:基于模型的控制和pid整定

在学习的时候发现了一个很好的学习simulink的网站,打算来练练手:Introduction: Simulink Control,过程中会涉及到搭建动力学模型和设计pid控制器(整定pid参数)。该模型描述的是火车的两节车厢,对前一节车厢…

Android上架商城 隐私政策需要网页 没有怎么办

Android开发的项目上架商城的时候会需要你填写url,但其实并不需要真的去发布一个网站 使用腾讯文档新建文档 填写隐私政策 点击生成网页 再将网址填写即可 下面我找到的一个隐私政策文档供大家参考 将XXXX应用一键替换为自己的应用 将XXXXXX公司一键替换为公司 …

【制作npm包4】api-extractor 学习

制作npm包目录 本文是系列文章, 作者一个橙子pro,本系列文章大纲如下。转载或者商业修改必须注明文章出处 一、申请npm账号、个人包和组织包区别 二、了解 package.json 相关配置 三、 了解 tsconfig.json 相关配置 四、 api-extractor 学习 五、npm包…