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


写在前面

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

一、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%。采用 [email protected] 作为评估指标、

5.3 与 SOTA 方法的比较

  
在这里插入图片描述

5.4 消融实验

每部分的贡献

  
在这里插入图片描述

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

  
在这里插入图片描述

层的数量

  同上表 3。

5.5 定性分析

  
在这里插入图片描述

六、结论

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

写在后面

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

猜你喜欢

转载自blog.csdn.net/qq_38929105/article/details/132360484