RIS 系列:TransVG: End-to-End Visual Grounding with Transformers 论文阅读笔记

news2024/11/17 1:42:16

RIS 系列:TransVG: End-to-End Visual Grounding with Transformers 论文阅读笔记

  • 一、Abstract
  • 二、引言
  • 三、相关工作
    • 3.1 视觉定位
      • 两阶段方法
      • 单阶段方法
    • 3.2 Transformer
      • 视觉任务中的 Transformer
      • 视觉-语言任务中的 Transformer
  • 四、视觉定位中的 Transformer
    • 4.1 基础知识
    • 4.2 TransVG 的结构
      • 视觉分支
      • 语言分支
      • 视觉-语言融合模块
      • 预测头
    • 4.3 训练目标
  • 五、实验
    • 5.1 数据集
    • 5.2 实施细节
      • 输入
      • 训练细节
      • 推理
    • 5.3 与 SOTA 方法的比较
      • ReferItGame 数据集上的结果
      • Flickr30K Entities 数据集上的结果
      • RefCOCO/RefCOCO+/RefCOCOg 数据集上的结果
    • 5.4 消融实验
      • [REG] Token 的设计
      • 视觉和语言分支上的 Transformer
    • 5.5 定性分析
  • 六、结论

写在前面

  昨天端午节,朋友们有没有吃粽子吖~
  这是一篇 2021 年的文章,也是看其它文章的参考文献摸过来的。但其实这篇文章去年 5 月份看过了,也做了笔记,奈何当时没写博文,遂今个赶出来,也梳理下,毕竟忘得差不多了哈。

  • 论文地址:TransVG: End-to-End Visual Grounding with Transformers
  • 代码地址:https://github.com/djiajunustc/TransVG
  • 收录于: ICCV 2021

一、Abstract

  本文提出基于 Transformer 的网络:TransVG,用于视觉定位——根据输入的语言找到图像中的对应目标区域。当前 SOTA 的一阶段和二阶段模型依赖于复杂的手工模块来执行 query 推理和多模态融合。然而,多融合机制中某些模块的设计,例如 query 解耦和图像场景图使得模型很容易拟合特定的场景,从而限制视觉-语言上下文的充分交互。于是本文提出基于 Transformer 的多模态关联。实验表明复杂的融合模块,例如模块化的注意力网络、动态图、多模态树能被堆叠的 Transformer 编码器层替代。此外,将视觉定位任务视为坐标回归问题,从而避免了一系列 mask 的预测。实验表明 TransVG 效果很好。

二、引言

  首先给出视觉定位的定义,然后对现有方法进行分类:双阶段,单阶段。如下图所示:

在这里插入图片描述
  两阶段方法:首先产生一组区域 proposal,然后根据区域-表达式的匹配结果选择最合适的 proposal。单阶段方法:在目标检测器的中间层执行视觉语言融合,输出最高分数的 box。接下来是一些方法的举例。
  然而多融合机制中某些手工设计的模块使得模型很容易拟合特定的场景,从而限制视觉-语言上下文的充分交互。此外,即使视觉定位的目的是去定位指代的目标,大多数方法以一种非直接的方式来实现。例如预先定义一系列 region proposals 或稠密的 anchors,因此这些方法很容易受到这些先验的影响。
  本文引入基于 Transformer 的 TransVG 网络来避免上述问题。实验表明结构化的融合模块能够被堆叠的 Transformer 编码器层替代。此外,直接回归 box 的坐标进行定位而不是选择候选的 boxes。
  TransVG 流程如图 1 c)所示:首先将 RGB 和语言表达式送入两个结构相同的分支:视觉分支、语言分支,由 Transformer 模块组成,来建模视觉和语言内的全局线索。之后,融合提取出的视觉和语言 tokens,送入视觉-语言 Transformer 块执行跨模态的关系推理。最后直接回归出指代目标的 box。数据集:ReferItGame、Flickr30K Entities、RefCOCO、RefCOCO+、RefCOCOg。实验表明效果很好。

  本文贡献总结如下:

  • 第一个提出 Transformer 框架用于视觉定位,相比与之前单阶段和两阶段的方法,性能更高;
  • 通过 Transformer 展现了一种有效捕捉模态内和模态间上下文异构关系的方法,并且将视觉定位视为直接的坐标回归问题;
  • 实验表明方法的有效性。

三、相关工作

3.1 视觉定位

两阶段方法

  第一阶段生成区域 proposals,第二阶段利用语言表达式选择最匹配的 proposal。而 proposals 要么采用无监督的方法或者预训练的检测器得出。训练损失要么是二分类或最大化正样本目标-query 对的相似度得分。

单阶段方法

  单阶段方法剔除了 proposal 的生成及区域特征提取。取而代之的是语言上下文和视觉特征进行的深度融合。得到语言-视觉特征图之后,以滑动的方式执行 bounding box 的预测。方法举例:FAOA、RCCF、ReSC。

3.2 Transformer

  Transformer 首次提出用于解决神经机器翻译的问题,相比于 RNN,注意力机制能够更好地处理长序列问题。这一特性使得 Transformer 在 NLP 任务和语言识别任务中被广泛使用。

视觉任务中的 Transformer

  DETR、ViT、IPT。

视觉-语言任务中的 Transformer

  主要是预训练模型,image-text matching (ITM)、word-region alignment (WRA)、masked language modeling (MLM)、masked region modeling (MRM)。
  Visual-Linguistic Pre-training(VLP)旨在学习图像文本的共同表示,方便泛化到下游任务中。本文关注于开发一种基于 Transformer 的视觉定位框架,在小量的视觉定位数据下学习执行多模态异构推理。

四、视觉定位中的 Transformer

在这里插入图片描述
  如上图所示,给定输入的图像+语言表达式,将其送入到视觉和语言分支,分别得到它们的 embedding。之后聚合这些 embedding,并添加一个可学习的 token [REG] 来构建视觉-语言融合模块的输入。在自注意力机制的作用下,视觉-语言 Transformer 同时从不同的模态中 embed 输入的特征到公共的语义空间上。最后,[REG] token 在预测头中用于预测指代目标的 4D 坐标。

4.1 基础知识

  想必大家都很了解 Transformer的结构,这里只列一些公式加深巩固。qeury embedding、key embedding、value embedding 分别用 f q f^q fq f k f^k fk f v f^v fv 表示,单头注意力层计算如下:
Atn ( f q , f k , f v ) = softmax ( f q f k d k ) ⋅ f v \text{Atn}(f^q,f^k,f^v)=\text{softmax}(\frac{f^qf^k}{\sqrt{d^k}})\cdot f^v Atn(fq,fk,fv)=softmax(dk fqfk)fv d k d^k dk f k f^k fk 的通道维度。注意:本文仅使用 Transformer 编码器层。
  接下来是多头自注意力层和前向传播模块 FFN,由 MLP + ReLU 激活层组成。当然,还有残差结构。用公式表示如下:
x n ′ = LN ⁡ ( x n + F MSA ( x n ) ) x n + 1 = LN ⁡ ( x n ′ + F FFN ⁡ ( x n ′ ) ) \begin{aligned} x_{n}^{\prime}& =\operatorname{LN}(x_n+\mathcal{F}_{\text{MSA}}(x_n)) \\ x_{n+1}& =\operatorname{LN}(x'_n+\mathcal{F}_{\operatorname{FFN}}(x'_n)) \end{aligned} xnxn+1=LN(xn+FMSA(xn))=LN(xn+FFFN(xn))其中输入为 x n x_n xn L N ( ⋅ ) LN(\cdot) LN() 为归一化层, F M S A ( ⋅ ) \mathcal{F}_{MSA}(\cdot) FMSA() 为多头自注意力层, F FFN ⁡ ( ⋅ ) \mathcal{F}_{\operatorname{FFN}}(\cdot) FFFN() 为前向传播网络。

4.2 TransVG 的结构

  四个主要结构:视觉分支、语言分支、视觉-语言融合分支、预测头。

视觉分支

  视觉分支由一个卷积 backbone 网络 ResNet 组成,跟着一个堆叠 6 层 Transformer 编码器层的 Transformer 组成。每个 Transformer 包含一个多头自注意力层(8 头)、FFN(2 层 FC + ReLU)。FFN 中两层 FC 的输出维度分别是 2048 和 256。
  给定单张图像 z 0 ∈ R 3 × H 0 × W 0 z_{0}\in\mathbb{R}^{3\times H_{0}\times W_{0}} z0R3×H0×W0 作为输入,利用 Backbone 网络生成 2D 特征图 z ∈ R C × H × W z\in\mathbb{R}^{C\times H\times W} zRC×H×W。通常来说, C = 2048 C=2048 C=2048,2D 特征图的宽度和高度是其原始图像尺寸的 1 32 \frac{1}{32} 321,即 H = H 0 32 H=\frac{H_0}{32} H=32H0 W = W 0 32 W=\frac{W_0}{32} W=32W0。之后利用 1 × 1 1\times1 1×1 卷积层减少 z z z 的通道维度到 C v = 256 C_v=256 Cv=256,得到 z ′ = R C v × H × W z'=\mathbb{R}^{C_v\times H\times W} z=RCv×H×W。接下来进一步展平 z ′ z' z z v ∈ R C v × N v z_v\in\mathbb{R}^{C_v\times N_v} zvRCv×Nv,其中 N v = H × W N_v=H\times W Nv=H×W 为输入 tokens 的数量。
  和一般的 Transformer 类似,在每层 Transformer 解码器层给 query 和 key 添加正弦位置编码。最后视觉分支的输出为 f v f_v fv,形状与 z v z_v zv 相同。

语言分支

  语言分支结构与视觉分支相同,包含一个 token embedding 层和一个语言 Transformer BERT。输出维度为 C l = 768 C_l=768 Cl=768
  给定语言表达式作为输入,首先将每个单词转化为 one-hot 向量。之后在 token embedding 层,通过查找 tokens 表将每个 one-hot 向量转化为语言 token。在开始和结尾的 token 处增加 [CLS] 和 [SEP] token。最后将语言 tokens 送入语言 Transformer,得到语言 embedding f l ∈ R C v × N l f_l\in\mathbb{R}^{C_v\times N_l} flRCv×Nl,其中 N l N_l Nl 为语言 tokens 的数量。

视觉-语言融合模块

  视觉语言融合模块 visual-linguistic fusion module (简写为 V-L module) ,包含两个线性投影层(分别对应视觉和语言分支的输出)和一个堆叠 6 层 Transformer 编码器的视觉语言 Transformer 组成。
  给定视觉分支的输出 token f v ∈ R 256 × N v f_v\in\mathbb{R}^{256\times N_v} fvR256×Nv 和语言分支的输出 token f l ∈ R 768 × N l f_l\in\mathbb{R}^{768\times N_l} flR768×Nl。首先利用线性投影层将其映射到相同的维度上 p v ∈ R C p × N v p_v\in\mathbb{R}^{C_p\times N_v} pvRCp×Nv p l ∈ R C p × N l p_l\in\mathbb{R}^{C_p\times N_l} plRCp×Nl,其中 C p = 256 C_p=256 Cp=256。之后,添加一个可学习的 embedding [REG] 到 p v p_v pv p l p_l pl 上。视觉语言 Transformer 的联合 tokens 输入构建如下:
x 0 = [ p v 1 , p v 2 , ⋯   , p v N v ⏟ visual tokens  p v , p l 1 , p l 2 , ⋯   , p l N l ⏞ , p r ] x_0=[\underbrace{p_v^1,p_v^2,\cdots,p_v^{N_v}}_{\text{visual tokens} ~p_v},\overbrace{p_l^1,p_l^2,\cdots,p_l^{N_l}},p_r] x0=[visual tokens pv pv1,pv2,,pvNv,pl1,pl2,,plNl ,pr]其中 p r ∈ R C p × 1 p_r\in\mathbb{R}^{C_p\times 1} prRCp×1 表示 [REG] token,在训练开始时随机初始化, x 0 ∈ R C p × ( N v + N l + 1 ) x_0\in\mathbb{R}^{C_p\times(N_v+N_l+1)} x0RCp×(Nv+Nl+1)。同样的,在每层 Transformer 编码器层为输入添加可学习的位置编码。

预测头

  利用 V-L 模块的输入状态 [REG] token 作为预测头的输入。为执行 box 坐标回归,在 [REG] token 上添加一个回归块,由一个包含两个 ReLU 激活函数的 MLP 和一个线性输出层组成。预测头的输出为 4D box 坐标。

4.3 训练目标

  当尝试预测大的 box 时,smooth L1 损失值往往比较大,反之较小。于是本文通过缩放图像来归一化 GT 坐标,并利用 GIoU 作为损失函数,这并不会被尺寸缩放所影响。
  设预测的 box 为 b = ( x , y , w , h ) b=(x,y,w,h) b=(x,y,w,h),归一化后的 GT box 为 b ^ = ( x ^ , y ^ , w ^ , h ^ ) \hat b =(\hat{x},\hat{y},\hat{w},\hat{h}) b^=(x^,y^,w^,h^),TransVG 的训练目标为:
L = L smooth-11 ( b , b ^ ) + λ ⋅ L giou ( b , b ^ ) \mathcal{L}=\mathcal{L}_{\text{smooth-11}}(b,\hat{b})+\lambda\cdot\mathcal{L}_{\text{giou}}(b,\hat{b}) L=Lsmooth-11(b,b^)+λLgiou(b,b^)其中 L smooth-11 ( ⋅ ) \mathcal{L}_{\text{smooth-11}}(\cdot) Lsmooth-11() L giou ( ⋅ ) \mathcal{L}_{\text{giou}}(\cdot) Lgiou() 分别为 smooth L1 损失和 GIoU 损失, λ \lambda λ 为平衡这两个损失的 GIoU 权重系数。

五、实验

5.1 数据集

  ReferItGame、Flickr30K Entities、RefCOCO/ RefCOCO+/ RefCOCOg。

5.2 实施细节

输入

  输入图像尺寸: 640 × 640 640\times640 640×640,表达式的最大长度 40 40 40。保持图像原始比例不变,长边为 640 640 640,短边用 RGB 通道的平均值填充到 640 640 640。当输入语言 query 的长度大于 38 38 38 时,除去多余的,留下两个位置给 [CLS] 和 [SEP],否则在 [SEP] 后用空的 token 填充到 40 40 40

训练细节

  TransVG 为端到端训练,AdamW 优化器。V-L 模块和预测头的初始学习率 1 0 − 4 10^{-4} 104,视觉和语言分支的初始学习率 1 0 − 5 10^{-5} 105,权重衰减为 1 0 − 4 10^{-4} 104。视觉分支的 backbone 和编码器采用 DETR 模型(好家伙,buff 叠满了是吧)初始化,语言分支采用 BERT 的基础模型进行初始化。其它结构的参数采用 Xavier init 随机初始化。在除了 Flickr30K Entities 的数据集上,训练 90 epochs,在 60 个 epochs 后,学习率下降 10 个百分点。而在 Flickr30K Entities 数据集上,训练 60 个 epochs,在 40 个 epochs 后,学习率下降。Batch_size 64。权重系数 λ = 1 \lambda=1 λ=1。Transformer 中的 dropout ratio 默认为 0.1。

推理

  由于 TransVG 直接输出 box 的坐标,因此推理过程无需额外操作。

5.3 与 SOTA 方法的比较

  评估指标:top-1 accuracy(%):当预测的 box 与 GT box 重叠超过 0.5 时,即认为正确预测(额,不计算 IoU 么?)。

ReferItGame 数据集上的结果

在这里插入图片描述

Flickr30K Entities 数据集上的结果

  同上表 1。

RefCOCO/RefCOCO+/RefCOCOg 数据集上的结果

在这里插入图片描述

5.4 消融实验

  ResNet-50 作为视觉分支的 backbone,所有比较在训练 90 90 90 个 epochs 后进行。

[REG] Token 的设计

在这里插入图片描述
(要在 [REG] 等类似提示词上进行随机初始化的原因找到啦:相比于其它初始化方法,随机初始化不会引入太多其它模态的相关 bias。)

视觉和语言分支上的 Transformer

在这里插入图片描述

5.5 定性分析

在这里插入图片描述
在这里插入图片描述

六、结论

  本文提出基于 Transformer 的 TransVG 用于视觉定位。实验表明 TransVG 的能力很强。

写在后面

  这篇文章在现在看来可能指标被刷了,但是在当时情况下,应该是最优秀的了,以至于凭一己之力还守了一下后续预训练大模型的大门 😅

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

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

相关文章

【网络协议详解】——IPv4(学习笔记)

目录 🕒 1. IPv4地址概述🕒 2. 分类编址🕒 3. 划分子网🕘 3.1 概述🕘 3.2 如何实现🕘 3.3 无分类编址🕘 3.4 应用规划🕤 3.4.1 定长的子网掩码FLSM(Fixed Length Subnet …

【排序算法】冒泡排序、选择排序、插入排序

冒泡排序 依次比较相邻的两个元素,将比较小的数放在前面,比较大的数放在后面,直到所有元素排列完。 最容易理解的版本 对一个数组的n个整型数据进行n趟排序,每趟排序都尝试将较大值放到数组右侧。 每趟排序比较两个相邻的数据&…

相机模型概述

相机模型 如图:假设P是现实世界中的一个点,P是三维世界中的点 Pr(Xr,Yr,Zr) 光心O视作摄像头 Pc(Xc,Yc,Zc) 在相机平面中,Pc的坐标为(0,0,0) 在物理成像平面 Pp(Xp,Yp,0) 在像素平面 P(Xp,Yp,0) 但是!!! 到了像素平面,坐标就不一样了,像素平面坐标顶点(最左上角)才是…

【Java系列】深入解析 Lambda表达式

序言 你只管努力,其他交给时间,时间会证明一切。 文章标记颜色说明: 黄色:重要标题红色:用来标记结论绿色:用来标记一级论点蓝色:用来标记二级论点 希望这篇文章能让你不仅有一定的收获&#xf…

揭秘ChatGPT背后的传奇崛起,探索其引爆引爆网络的隐藏故事

文章目录 前言一、ChatGPT的诞生背景二、ChatGPT的技术原理三、ChatGPT的推广策略四、ChatGPT的未来展望五、橙子送书第3期 前言 ChatGPT是一款基于人工智能技术的聊天机器人,它的出现引起了广泛的关注和热议。在短短的时间内,ChatGPT就成为了全球范围内…

TLS SSL

HTTPS HTTPS,全称为 Hypertext Transfer Protocol Secure,是一种通过加密通道传输数据的安全协议。它是 HTTP 协议的安全版本,用于在 Web 浏览器和 Web 服务器之间进行安全的数据传输。HTTPS 在传输过程中使用了 SSL(Secure Sock…

使用Compose开发一款桌面端APK逆向工具

目录 1.前言2.小感慨3.逆向工具简介3.1.ApkTool3.2.Jadx3.3.其他工具3.3.1.Dex文件反编译为Jar文件dex2jar 3.3.2.Jar文件反编译为Java文件JavaDecompilerProcyonFernflowerCFR 4.桌面端逆向APK应用的开发4.1.文件拖拽4.2.构造工程目录4.3.文件标签页4.4.关键字高亮4.5.本地图片…

大模型没有壁垒吗?开源模型和chatgpt已经没有差距了吗?

近期有很多工作比如Alpaca、Vicuna、Koala等论文宣称通过收集到的大量chatgpt output,在基于开源大模型如LLaMA上进行微调后的模型就接近甚至超过chatgpt效果。有些看热闹不嫌事大的媒体渲染诸如“复制chatgpt,仅需100美元“,”开源大模型超过…

行为型模式--观察者模式

目录 概述 结构 案例实现 优缺点 优点: 缺点: 使用场景 概述 又被称为发布-订阅(Publish/Subscribe)模式,它定义了一种一对多的依赖关系,让多个观察者 对象同时监听某一个主题对象。这个主题对象在…

vscode c++ 环境配置(终极版)

1. window系统 c 环境配置 1.1 配置MinGw编译器 (1)下载mingw64 mingw64 的按照包,我已经放在百度网盘上了,搭建可自行下载: 链接: https://pan.baidu.com/s/1NoPGAYFuP5ysXTf8wtvbEA?pwdwd6w 提取码: wd6w (2&…

目标检测基础

MTCNN 人脸检测 MTCNN,Multi-task convolutional neural network(多任务卷积神经网络),将人脸区域检测与人脸关键点检测放在了一起,它的主题框架类似于cascade。总体可分为P-Net、R-Net、和O-Net三层网络结构。这三个…

IOS工程使用OpenCV库完整步聚

1.打开Xcode15并点击Create New Project 2.引用编译好的opencv2.framework框架 选择添加其它库 选择Add Files ... 选择OpenCV源码编译生成输入的IOS平台的opencv2.framework库 opencv库要放在工程目录下,不然会找不到 成功添加opencv库的引用,现在可在工程中使用openc…

《网络安全0-100》多级安全

1.多级安全 建立安全模型的方法: 信息流模型 访问控制模型 1.1 BLP模型 1.1模型构建 不能下写、不能上读,保持数据的机密性。 例子:军事、商务、外交的机密性强场景。下级可以给上级进行汇报,但下级不能读取上级的作战计划…

【C++学习】C++入门 | 缺省参数 | 函数重载 | 探究C++为什么能够支持函数重载

写在前面: 上一篇文章我介绍了C该怎么学,什么是命名空间,以及C的输入输出, 这里是传送门:http://t.csdn.cn/Oi6V8 这篇文章我们继续来学习C的基础知识。 目录 写在前面: 1. 缺省参数 2. 函数重载 3…

浅谈【AI、算力赋能】“大算力”时代的到来

🔻一、【💣 话题引入:“AI算力最强龙头”,你怎么看?】 🙈 AI人工智能是否可以取代人类?    🙈 应不应该限制人工智能的发展?      🙈 AI研究及龙头行业迎…

011-从零搭建微服务-接口文档(一)

写在最前 如果这个项目让你有所收获,记得 Star 关注哦,这对我是非常不错的鼓励与支持。 源码地址(后端):https://gitee.com/csps/mingyue 源码地址(前端):https://gitee.com/csps…

【P2】VMware 下 docker 快速搭建漏洞靶场 DVWA

文章目录 一、docker 快速搭建漏洞靶场指南二、执行步骤三、为 kali 配置 docker 加速器四、访问 dockerhub 的 dvwa 镜像五、漏洞利用初探,修改 requests 请求参数远程执行命令六、vulhub 搭建漏洞复现 包括什么是 docker、docker 和虚拟机的的区别、docker 搭建 D…

阿里云服务器的虚拟化技术和资源隔离如何?是否支持私有云部署?

阿里云服务器的虚拟化技术和资源隔离如何?是否支持私有云部署?   一、阿里云服务器的虚拟化技术   阿里云服务器采用了业界领先的虚拟化技术,为用户提供了强大而灵活的计算性能。这主要体现在以下几个方面:   1.1 弹性伸缩 …

强化学习从基础到进阶-案例与实践[3]:表格型方法:Sarsa、Qlearning;蒙特卡洛策略、时序差分等以及Qlearning项目实战

【强化学习原理项目专栏】必看系列:单智能体、多智能体算法原理项目实战、相关技巧(调参、画图等、趣味项目实现、学术应用项目实现 专栏详细介绍:【强化学习原理项目专栏】必看系列:单智能体、多智能体算法原理项目实战、相关技巧…

【CMake 入门与进阶(13)】 CMake如何设置交叉编译(附代码)

cmake如果不设置交叉编译,默认情况下,会使用主机系统(运行 cmake 命令的操作系统)的编译器来编译我们的工程,那么得到的可执行文件或库文件只能在 Ubuntu 系统运行,如果我们需要使得编译得到的可执行文件或…