Language Adaptive Weight Generation for Multi-task Visual Grounding 论文阅读笔记

2023-09-18 16:55:43


写在前面

  新的一周开始了,冲冲冲~
  这篇文章是 上一篇博文 的参考文献之一,遂找来读读,粗略一扫,论文创新点挺好的,可惜没有提供源代码。话说,上篇浙大的不开源,这篇难道也不开源吗?那以后可能得绕道了。。。

一、Abstract

  之前的方法通常以一种被动的方式利用视觉 Backbone,即以固定权重提取视觉特征,而没有表达式的参与。理想情况下,视觉 Backbone 应当主动根据表达式来提取视觉特征。于是本文基于语言自适应权重 Language Adaptive Weights(VG-LAW),提出一种主动感知视觉定位框架。通过不同表达式生成的动态权重将视觉 Backbone 作为一个特定表达式的特征提取器,不需要额外的跨模态交互模块。实验表明方法很有效。

二、引言

  首先指出视觉定位的含义,难点,应用。之前的方法通常采用通用的目标检测框架,且重点关注跨模态交互模块的设计。然而采用固定结构来提取视觉特征可能会导致提取出的视觉特征和表达式不匹配,例如存在缺失或冗余的特征。如下图所示:

在这里插入图片描述
一些特征可视化例子如下图所示:

在这里插入图片描述
  有一些方法已经注意到这一现象并提出相应的解决办法,例如 QRNet 和 LAVT, 通过嵌入设计的交互模块,例如 QD-ATT、PWAN 到每个阶段的末尾。然而这一先提取后调整的策略无法避免包含大量固定权重提取出来的特征。于是本文采用一种更简单且细粒度的计划来修改视觉 Backbone 的权重。如图 1 c 所示。
  本文基于语言自适应权重 Language Adaptive Weights(VG-LAW),提出一种主动感知视觉定位框架。通过将指代表达式注入权重中,从而动态调整视觉 Backbone 的权重。具体来说,VG-LAW 首先通过两个连续的特征聚合和权重生成得到语言特征的自适应权重,用于视觉 Backbone。然后语言感知的视觉 Backbone 能在无需手动修改视觉 Backbone 结构的情况下提取相关表达式的视觉特征,因此无需额外的跨模态融合。进一步地,基于表达式的相关特征,提出一种轻量、整洁的多任务预测头用于指代表达式理解 REC 和指代表达式分割 RES 任务。
  
  文本贡献总结如下:

  • 基于语言自适应权重 Language Adaptive Weights(VG-LAW),提出一种主动感知视觉定位框架。能够在无需手动修改视觉 Backbone 框架的情况下主动地提取相关表达式的视觉特征。
  • 能够直接用于 REC 和 RES 任务,无需设计跨模态注意力模块。
  • 实验表明达到了 SOTA 的结果。

三、相关工作

3.1 指代表达式理解

  得益于注意力机制,最近基于 Transformer 的方法能够有效捕捉模态内部和模态间的上下文交互信息。

3.2 指代表达式分割

  最近的研究利用 Transformer 来实现跨模态交互,已达到优越的性能,但所有的这些方法要么通过调整输入,要么修改固定网络权重的结构来实现跨模态交互。

3.3 动态权重网络

  网络能够自适应地动态调整权重。根据其生成方式,大致分为三种:使用可学习的 embedding 或中间特征作为输入,使用全连接层直接生成动态权重;将可学习权重进行求和,这被认为是混合专家,可能会导致优化困难;用矩阵分解的方式得到权重,最终的权重通过计算一些矩阵的乘法生成。

四、方法

在这里插入图片描述

4.1 总览

  VG-LAW 框架由四个部分组成,语言 Backbone、语言自适应权重生成器、视觉 Backbone、多任务头。

  给定一个指代表达式,N 层的 BERT 语言编码器将表达式 tokenizes,再前置一个 [CLS] token,提取出语言特征 F l ∈ × R L × d l F_l\in\times{R}^{L\times d_l} Fl×RL×dl,其中 L L L d l d_l dl 分别表示 token 的数量和维度。之后将 F l F_l Fl 送入语言自适应权重生成器得到权重,用于视觉 Backbone。

  接下来,给定一张图像 I ∈ × R 3 × H × W I\in\times{R}^{3\times H\times W} I×R3×H×W,通过视觉 Backbone 提取出表达式感知的视觉特征 F v ∈ R C × H s × W s F_v\in\mathbb{R}^{C\times\frac{H}{s}\times\frac{W}{s}} FvRC×sH×sW,其中 C C C s s s 分别表示通道数量和步长。最后,将 [CLS] token 表示的语言特征 F l 1 ∈ R d l F_l^1\in\mathbb{R}^{{d}_l} Fl1Rdl 和视觉特征送入多任务头中,预测指代表达式的 bounding box 和 mask。

4.2 语言自适应权重生成

语言特征聚合

  考虑到指代表达式对应的是不同数量的语言 tokens,且视觉 Backbone 的每层可能会倾向于不同的语言 tokens,于是尝试用固定尺寸聚合每层的语言特征。根据多头注意力机制,引入一个可学习的特定层 embedding e i ∈ R d l e_i\in\mathbb{R}^{d_l} eiRdl 用于视觉 Backbone 的第 i i i 层,动态提取特定层的语言特征。将 e i e_i ei F l F_l Fl 分为 G G G 组,对于每一个组 g g g,令逐 token 注意力 α i g ∈ [ 0 , 1 ] L \alpha_{i}^{g}\in[0,1]^{L} αig[0,1]L e i g e_i^g eig F l g F_l^{g} Flg 的 Softmax 点乘:
α i g = S o f t m a x ( [ e i g ⋅ F l g , 1 , e i g ⋅ F l g , 2 , ⋯   , e i g ⋅ F l g , L ] ) \alpha_{i}^{g}=\mathrm{Softmax}([e_{i}^{g}\cdot F_{l}^{g,1},e_{i}^{g}\cdot F_{l}^{g,2},\cdots,e_{i}^{g}\cdot F_{l}^{g,L}]) αig=Softmax([eigFlg,1,eigFlg,2,,eigFlg,L])然后对特征拼接得到聚合的语言特征 h 0 i ∈ R d l h_0^i\in\mathbb{R}^{d_l} h0iRdl
h 0 i , g = ∑ j = 1 L α i g , j F l g , j {h_{0}^{i,g}}=\sum_{j=1}^{L}\alpha_{i}^{g,j}F_{l}^{g,j} h0i,g=j=1Lαig,jFlg,j最后,使用全连接层 (FC) 减少其维度,用于视觉 Backbone 的第 i i i 层:
h 1 i = δ ( W 1 i h 0 i ) h_{1}^{i}=\delta(W_{1}^{i}h_{0}^{i}) h1i=δ(W1ih0i)其中 W 1 i ∈ R d l × d h W_{1}^{i}\in\mathbb{R}^{d_l\times d_h} W1iRdl×dh 将维度降低为 d h = d l / r d_h=d_l/r dh=dl/r r r r 为减少比例, δ \delta δ 表示 GeLU 激活函数。

权重生成

  基于指代表达式,生成语言自适应的权重用于生成视觉 Backbone 中的 qeury X q X_q Xq,Key X k X_k Xk,Value X v X_v Xv
X q = θ ( X ; W q ) , X k = θ ( X ; W k ) , X v = θ ( X ; W v ) X_q=\theta(X;W_q),X_k=\theta(X;W_k),X_v=\theta(X;W_v) Xq=θ(X;Wq),Xk=θ(X;Wk),Xv=θ(X;Wv)其中 θ ( ⋅ ; W ) \theta(\cdot;W) θ(;W) 表示线性投影, X X X 表示输入的视觉特征。 W q , W k , W v ∈ R d o u t × d i n W_q,W_k,W_v{\in}\mathbb{R}^{d_{out}\times d_{in}} Wq,Wk,WvRdout×din 是用于生成 query,key,value 的动态投影权重。 d i n d_{in} din d o u t d_{out} dout 是特征 X X X 和 query/key/value 的维度。

   d o u t × d i n d_{out}\times d_{in} dout×din 还不足以用全连接层直接生成权重,例如 Hypernetworks。通过 K 个静态核的加权求和生成权重,DynamicConv 和 CondConv 能够缓解这一问题,但很难优化。于是根据动态通道融合 dynamic channel fusion,尝试用矩阵分解的方法生成动态权重。拿第 i i i 层的 ViT 块举例:
[ W q i , W k i , W v i ] = W 0 i + P Φ ( h 1 i ) Q T [W_q^i,W_k^i,W_v^i]=W_0^i+P\Phi(h_1^i)Q^T [Wqi,Wki,Wvi]=W0i+PΦ(h1i)QT其中 W 0 i ∈ R d o u t × d i n W_0^i\in\mathbb{R}^{d_{out}\times d_{in}} W0iRdout×din 为特定层的静态可学习权重。 P ∈ R d o u t × d w P\in\mathbb{R}^{d_{out}\times d_{w}} PRdout×dw Q ∈ R d i n × d w Q\in\mathbb{R}^{d_{in}\times d_{w}} QRdin×dw 也是静态可学习权重,在所有 ViT 块中共享。 Φ ( h 1 i ) \Phi(h_1^i) Φ(h1i) 为全连接层,以聚合的语言特征 h 1 i h_1^{i} h1i 为输入,生成形状为 d w × d w d_w\times d_w dw×dw 的动态矩阵。

dynamic channel fusion:Yunsheng Li, Yinpeng Chen, Xiyang Dai, Dongdong Chen, Ye Yu, Lu Yuan, Zicheng Liu, Mei Chen, Nuno Vasconcelos, et al. Revisiting dynamic convolution via matrix decomposition. In ICLR, 2020. 3, 4

4.3 多任务头

  多任务头中有两个分支分别用于 REC 和 RES 任务。

  对于 REC 分支,直接应用坐标回归来预测指代目标的 Bounding box。为了池化 2 − d 2-d 2d 视觉特征,提出一个语言自适应的池化模块 language adaptive pooling module (LAP),使用语言自适应的注意力来聚合视觉特征。具体来说,视觉特征 { F v i , j } ∈ R C × H s × W s {\{F_{v}^{i,j}\}}\in\mathbb{R}^{C\times\frac{H}{s}\times\frac{W}{s}} {Fvi,j}RC×sH×sW 和语言特征 F l 1 ∈ R d l F_l^1\in\mathbb{R}^{d_l} Fl1Rdl 首先投影到低维度空间 R k \mathbb{R}^{k} Rk,并计算其点乘相似度的 softmax 归一化后的注意力权重 A ∈ R H s × W s A\in\mathbb{R}^{\frac Hs\times\frac Ws} ARsH×sW。然后通过计算注意力权重 A A A 的求和来聚合视觉特征。最后,将聚合后的视觉特征送入三层全连接层,Sigmoid 函数用于预测指代的 bounding box b ^ = ( x ^ , y ^ , w ^ , h ^ ) \hat b=(\hat x,\hat y,\hat w,\hat h) b^=(x^,y^,w^,h^)

  对于 RES 分支,应用二分类沿着视觉特征的空间维度来预测指代目标的 mask。具体来说,视觉特征 F v F_v Fv 首先采用连续的转置卷积上采样到 F v ^ ∈ R d l × H 4 × W 4 \hat{F_{v}}\in\mathbb{R}^{d_{l}\times\frac{{H}}{4}\times\frac{W}{4}} Fv^Rdl×4H×4W,然后在每个视觉特征上使用线性投影 θ ( ⋅ ; W ) \theta(\cdot;W) θ(;W) 得到中间的分割图 s ˉ ∈ R H 4 × W 4 \bar{s}\in\mathbb{R}^{\frac H4\times\frac W4} sˉR4H×4W,其中 W = F l 1 W=F_l^1 W=Fl1。最后在 s ˉ \bar s sˉ 上使用双线性插值上采样得到全分辨率分割 mask s ^ ∈ R H × W \hat s\in\mathbb{R}^{H\times W} s^RH×W,后接一个 Sigmoid 函数。

4.4 训练目标

  对于 REC,给定预测的 bounding box b ^ = ( x ^ , y ^ , w ^ , h ^ ) {\hat{b}}=(\hat{x},{\hat{y}},\hat{w},\hat{h}) b^=(x^,y^,w^,h^) 和 GT box b = ( x , y , w , h ) b=(x,y,w,h) b=(x,y,w,h),检测损失为:
L d e t = λ L 1 L L 1 ( b , b ^ ) + λ g i o u L g i o u ( b , b ^ ) \mathcal{L}_{det}=\lambda_{L1}\mathcal{L}_{L1}(b,\hat{b})+\lambda_{giou}\mathcal{L}_{giou}(b,\hat{b}) Ldet=λL1LL1(b,b^)+λgiouLgiou(b,b^)其中 L L 1 ( ⋅ ) \mathcal{L}_{L1}(\cdot) LL1() L g i o u ( ⋅ ) \mathcal{L}_{giou}(\cdot) Lgiou() 分别表示 L1 损失和通用 IoU 损失, λ L 1 \lambda_{L1} λL1 λ g i o u \lambda_{giou} λgiou 为控制损失函数的相关权重。
  对于 RES,给定预测的 mask s ^ \hat s s^ 和 GT s s s,分割损失定义为:
L s e g = λ f o c a l L f o c a l ( s , s ^ ) + λ d i c e L d i c e ( s , s ^ ) \mathcal{L}_{seg}=\lambda_{focal}\mathcal{L}_{focal}(s,\hat{s})+\lambda_{dice}\mathcal{L}_{dice}(s,\hat{s}) Lseg=λfocalLfocal(s,s^)+λdiceLdice(s,s^)其中 L f o c a l ( ⋅ , ⋅ ) \mathcal{L}_{focal}(\cdot,\cdot) Lfocal(,) L d i c e ( ⋅ , ⋅ ) \mathcal{L}_{dice}(\cdot,\cdot) Ldice(,) 分别表示 focal 损失和 DICE/F-1 损失, λ f o c a l \lambda_{focal} λfocal λ d i c e \lambda_{dice} λdice 为控制两个分割损失的相关权重。本文提出的框架可以同时训练 REC 和 RES 任务,其共同训练损失函数为:
L t o t a l = L d e t + L s e g \mathcal{L}_{total}=\mathcal{L}_{det}+\mathcal{L}_{seg} Ltotal=Ldet+Lseg

五、实验

5.1 数据集和评估指标

数据集

  RefCOCO、RefCOCO+、RefCOCOg、ReferItGame。

评估指标

  分别使用 P r e c @ 0.5 Prec@0.5 Prec@0.5 m I o U mIoU mIoU 来评估 REC 和 RES 的性能。

5.2 实施细节

训练

  输入图像尺寸 448 × 448 448\times448 448×448。视觉 Backbone ViT-Base,采用 ViTDet 中的自适应方法将视觉 Backbone 应用于高分辨率图像。预训练使用 Mask R-CNN 在 MS-COCO 上,除去 val/test 子集。 W 0 i W_0^i W0i Φ ( h 1 i ) \Phi(h_1^i) Φ(h1i) 采用相应的视觉 Backbone 权重和 0 来初始化。表达式的最大长度 40, 无级联的 6 层 BERT 作为语言 Backbone 来提取语言特征。 λ L 1 \lambda_{L1} λL1 λ g i o u \lambda_{giou} λgiou 设为 1, λ f o c a l \lambda_{focal} λfocal λ d i c e \lambda_{dice} λdice 设为 4。减少率 r r r 设为 16。视觉和语言 Backbone 的初始学习率 4 e − 5 4e-5 4e5,剩下部分的学习率 4 e − 4 4e-4 4e4。AdamW 优化器,90 epochs,batch size 256,权重衰减 1 e − 4 1e-4 1e4。在第 10 和 60 个 epochs 乘 10%。数据增强:水平翻转。NVIDIA A100 GPUs(不差钱)。

推理

  推理时,输入图像尺寸 448 × 448 448\times448 448×448,表达式的最大长度 40。RES 的二值化阈值设为 0.35。无需后处理,直接输出 bounding box 和 分割 mask。

5.3 与 SOAT 方法的比较

REC 任务

在这里插入图片描述

RES 任务

在这里插入图片描述

指代表达式的长度分析

在这里插入图片描述

5.4 消融分析

在这里插入图片描述

5.5 定量分析

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

六、结论和限制

  基于语言自适应权重,本文提出一种主动感知框架 VG-LAW 用于视觉定位。VG-LAW 能够直接注入表达式的信息到视觉 Backbone 的权重中而无需修改其结构。实验效果很好。

  限制主要有两点:VG-LAW 在可解释性方面差,整体推理过程隐式,很难理解推理过程;多任务头一次预测一个实例,限制了其在短语定位中的应用。

写在后面

  这篇文章创新点很足,算是打开了另一种思路。写作上也不拖沓,就是代码能不能开源呀?这么好的文章就别藏着掖着了。看看人家 LAVT。

更多推荐

生产数据追溯产线管理看板助力企业实现产品质量追踪

在现代制造业中,企业对于产品质量的追踪和管理变得越来越重要。产品质量的好坏直接关系到企业的声誉和客户满意度。然而,传统的生产管理方式往往无法提供足够的数据和信息来进行全面的质量追踪。生产看板管理系统的出现为企业解决了这一难题。通过实时的数据采集和分析,企业可以追溯每个产品的生产过程,了解每个环节的质量控制情况。这些数据

攻防世界-web-easyphp

1.题目描述打开链接,可以看到如下代码2.思路分析代码都给出来了,接下来就是理解代码的含义了,从代码中不难发现,总共传入三个参数a,b,c,分别需要满足以下条件:2.1a的长度小于等于3,但是转换成int后需要大于60000002.2对b计算md5值,md5的一部分为’8b184b’2.3c是一个json对象,其中c[

7-1_MSPI_NANDFLASH SDK例程详解

1.代码示例路径PRJ_M66_4.3.3\boards\apollo4l_blue_eb\examples\interfaces\mspi_ds35x1ga_quad_example\src\mspi_ds35x1ga_quad_example.c本文中主要讲解初始化流程内容2.MSPI通信示意图SCK(Serial

JavaScript系列从入门到精通系列第四篇:JavaScript基本语法(二)

文章目录前言一:Number类型1:字符串与Number类型2:检查数据类型3:Number最大值4:Number四则运算精确性二:布尔值1:布尔值数量2:布尔值类型查看三:Null和Undefined1:Null类型2:null值意义3:Undefined前言varstr="123";varstr="456";这么些

第七章 查找 五、二叉排序树

目录一、定义二、代码实现1、查找2、插入3、构造4、删除三、查找效率分析1、查找成功ASL2、查找失败ASL四、总结一、定义二叉排序树(BinarySearchTree,BST)是一种特殊的二叉树,它满足以下条件:若左子树不为空,则左子树上所有节点的值(权值)均小于它的根节点的值;若右子树不为空,则右子树上所有节点的值

《Docker与Kubernetes容器运维实战》简介

#好书推荐##好书奇遇季#《Docker与Kubernetes容器运维实战》已经出版。本书帮助读者系统掌握Docker与K8s运维技能。本书内容本书分两部分系统介绍Docker与Kubernetes的运维技术。(1)Docker部分包括:全面认识Docker、初步体验Docker、Docker基本管理、Docker仓库

springboot

回顾spring轻量级的:指的是spring核心功能的jar包不大。非侵入式的:业务代码不需要继承或实现spring中任何的类或接口IOC:控制反转(InverseofControl),以前项目都是在哪儿用到对象,在哪儿new,把生成对象的权利反转给spring框架,可以对对象进行功能的增强(让spring把对象管理起

分类问题和回归问题的区别是什么?

分类问题和回归问题是机器学习和统计分析中两种不同类型的问题,它们的主要区别在于其目标和处理方式:问题类型:分类问题(Classification):在分类问题中,目标是将数据分为不同的类别或标签。这意味着模型的输出是一个离散值,通常代表预定义的类别。例如,垃圾邮件检测是一个分类问题,它需要将电子邮件分为两个类别:垃圾邮

Python爬虫深度优化:Scrapy库的高级使用和调优

在我们前面的文章中,我们探索了如何使用Scrapy库创建一个基础的爬虫,了解了如何使用选择器和Item提取数据,以及如何使用Pipelines处理数据。在本篇高级教程中,我们将深入探讨如何优化和调整Scrapy爬虫的性能,以及如何处理更复杂的抓取任务,如登录,处理Cookies和会话,以及避免爬虫被网站识别和封锁。一、

探索人工智能 | 计算机视觉 让计算机打开新灵之窗

前言计算机视觉是一门研究如何使机器“看”的科学,更进一步的说,就是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。文章目录前言主题原理常用算法CNNSVM应用自动驾驶医学影像分析无人机和机器人小结面临挑战总结主题计算机视觉既是工程领域

OpenCV实战(27)——追踪视频中的特征点

OpenCV实战(27)——追踪视频中的特征点0.前言1.追踪视频中的特征点2.特征点追踪原理3.完整代码小结系列链接0.前言我们已经知道可以通过一些最独特的点来分析图像,对于图像序列同样如此,其中一些特征点的运动可用于了解捕获场景的不同元素如何移动。在本节中,我们将学习如何在特征点逐帧移动时通过跟踪特征点来执行序列的

热文推荐