22-CVPR-SGTR End-to-end Scene Graph Generation with Transformer 学习笔记

Abstract

目前现有的方法大多采用自下而上的两阶段或基于点的单阶段方法,而这些方法大多会导致很高的时间复杂度。因此本文提出了一个全新的场景图方法来解决上述提到的问题。为了解决这个问题,我们建立了一个基于transformer的端到端的框架来首先生成entity和predicate的建议集合,然后推断出有向边缘,构成关系三联体。具体的,我们使用了一个利用关系构成属性的结构化关系生成器来建立一个新的实体感知的关系表示。此外,我们设计了一个图组装模型来推断出二元场景图的连接性,这让我们可以使用一个端到端的方法来生成场景图。

Introduction

前人的方法中大多基于两种设计模式:bottom-up two-stage 和 point-based one-stage。

第一类方法往往首先是预测 N N N个实体的proposals,然后预测predicate的类别。但这类方法需要 O ( N 2 ) O(N^2) O(N2)的建议区域而且计算复杂度很高。

第二种方法则会分别从图像中获得实体和关系,目的是减小关系建议集合的大小。但是它们依赖于对相互作用区域的非重叠特性的假设,这极大的限制了其在复杂场景中的应用。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如图一所示,我们将场景图生成变成一个二元图构造问题,每一个三元组可以被表示成两种类型节点(predicate and entity)的连接。这种方法可以让我们共同产生实体和关系建议区域和它们的潜在关系,产生一个丰富的假设空间来推断视觉关系。更重要的,我们提出了一个新的将相关的实体建议信息纳入的predicate表示方法,这丰富了实体表示并让我们建立一个高质量的predicate建议区域。

我们的模型具体由三部分组成:entity node generator, a predicate node generator and a graph assembling module。

本工作的主要贡献包括:

  • 提出了一个包含二元图构造在内的全新的基于transformer的全景图生成方法。
  • 建立了一个实体感知结构来利用视觉关系特性

Preliminary

场景图 G s c e n e = { V e , E r } \mathcal{G_{scene}=\{V_e,E_r\}} Gscene={Ve,Er} 每一个实体 v i ∈ V e \mathcal{v_i\in V_e} viVe都有一个bounding box和类别标签。两个节点对之间的predicate也有predicate label。

整个模型整体上可以被分为两个部分:1. node (entity and predicate) generation 2. directed edge connection。第一个阶段基于三个平行的子解码器来用实体信息增加predicate proposal。第二阶段本文设计了一个图形组装模块来生成二元场景图。

Approach

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们的模型主要由四个子模型构成:(1) 一个用于生成场景特征表示的骨干网络(2)基于transformer的entity node生成器,用于生成entity的proposal(3)一个结构化的predicate node生成器,用于编码predicate node(4)一个二元图组合模型来构造最终的二元图。

Backbone and Entity Node Generator

我们采用ResNet作为骨干网络,然后使用multi-layer Transformer编码器来扩张卷积特征。

由此产生的CNN+transformer特征被表示为 Z ∈ R w × h × d Z\in R^{w\times h\times d} ZRw×h×d,其中 w 、 h 、 d w、h、d whd分别表示特征图的长宽和通道数。

我们将entity generator定义为一个映射函数 F e \mathcal{F_e} Fe

输入为节点的初始Query(随机初始化了100个queries) Q e ∈ R N e × d Q_e\in R^{N_e \times d} QeRNe×d和特征图 Z Z Z

输出为entity location B e ∈ R N e × 4 B_e\in R^{ N_e\times 4} BeRNe×4和类别得分 P e ∈ R N e × ( C e + 1 ) P_e\in R^{N_e\times(C_e+1)} PeRNe×(Ce+1),还有它们的相关的特征表示 H e ∈ R N e × d H_e\in R^{N_e\times d} HeRNe×d

其中 B e = { b 1 , . . . , b N e } B_e=\{b_1,...,b_{N_e}\} Be={b1,...,bNe} b = { x c , y c , w b , h b } b=\{x_c,y_c,w_b,h_b\} b={xc,yc,wb,hb}其中 x c , y c x_c,y_c xc,yc为instance的正则化中心坐标。 w b , h b w_b,h_b wb,hb为entity box的正则化宽和高。

Predicate Node Generator

本文的predecate node 生成器目标是通过将相关entity proposal 信息纳入到每一个predicate node的方法来生成entity-aware的predicate representation。这种方法可以编码predicate它的subject、object的潜在关系。如图2所示,predicate node 生成器由三部分组成:1. 关系查询的初始化模型(Predicate Query Initialization)。2.图像特征的predicate encoder 3. 结构化的关系解码器(predicate decoder)。

Predicate Encoder

encoder部分和Transformer的encoder部分一样,是由multi-layer multi-head 自注意力模块组成。最终的predicate预测特征结果输出为 Z p ∈ R w × h × d Z^p\in R^{w\times h\times d} ZpRw×h×d.

Predicate Query Initialization

本文提出了一种组合式查询表示法对predicate查询进行解耦,最终结果得到 Q p e ∈ R N r × 3 d = { Q i o ; Q i s ; Q p } Q_p^e\in R^{N_r\times 3d}=\{Q_{io};Q_{is};Q_{p}\} QpeRNr×3d={Qio;Qis;Qp},其中entity indicator Q i s , Q i o ∈ R N r × d Q_{is},Q_{io}\in R^{N_r\times d} Qis,QioRNr×d,以及predicate representation Q p ∈ R N r × d Q_{p}\in R^{N_r\times d} QpRNr×d

为了得到这个结果,我们构造了一个几何感知的实体表示。首先得到初始化key 和 value ∈ R N e × d \in R^{N_e \times d} RNe×d K i n i t = V i n i t = ( H e + G e ) , G e = R e L U ( B e W g ) K_{init}=V_{init}=(H_e+G_e),G_e=ReLU(B_eW_g) Kinit=Vinit=(He+Ge),Ge=ReLU(BeWg),(entity location B e ∈ R N e × 4 B_e\in R^{ N_e\times 4} BeRNe×4)其中 G e G_e Ge是一个可学习的embedding of entity proposal。 W g W_g Wg是一个将bbox转成embedding的转换函数。

这里和transformer略有不同,目的就是实现论文中提到的entity-aware。

这里存在的问题是 N r N_r Nr的值是如何得到的?

然后会使用multi-head cross-attention的方法来处理初始向量。 A ( q , k , v ) = F F N ( M H A ( q , k , v ) ) A(q,k,v)=FFN(MHA(q,k,v)) A(q,k,v)=FFN(MHA(q,k,v)),因此最终的共公式为 Q p e = A ( Q i n i t , K i n i t , V i n i t ) W e Q^e_p=A(Q_{init},K_{init},V_{init})W_e Qpe=A(Qinit,Kinit,Vinit)We,其中 W e ∈ R d × 3 d W_e\in R^{d\times 3d} WeRd×3d。子查询 Q i s , Q i o Q_{is} , Q_{io} Qis,Qio被称为entity indicator,因为它们将被用来捕捉下面的predicate—entity关联。

这里有个问题, Q i n i t 和 K i n i t , V i n i t Q_{init}和K_{init},V_{init} QinitKinit,Vinit的向量维度对不上,这是因为这里使用的是cross-attention,相当于计算一个物体对另一个物体的影响,所以物体的数量维度可以不同。

Structural Predicate Node Decoder

该Decoder可以被分为三个子模块

Predicate Sub-decoder

该模块利用包含空间背景信息的图像特征图 Z p Z^p Zp来重新确定predicate的representation。同时该模块使用了cross-attention的机制 Q p ~ = A ( q = Q p , k = Z p , v = Z p ) \tilde{Q_p}=A(q=Q_{p},k=Z^{p},v=Z^{p}) Qp~=A(q=Qp,k=Zp,v=Zp),其中 Q p ~ \tilde{Q_p} Qp~是更新后的predicate representation。

Entity Indicator Sub-Decoders

我们采用在两个entity indicators Q i s , Q i o Q_{is},Q_{io} Qis,Qio和entity proposal feature H e H_e He之间采用cross-attention。

Predicate-Indicator Fusion

提出了一种融合方案来校准predicate query 以及 entity indicator,其中 W i , W p ∈ R d × d W_i,W_p\in R^{d\times d} Wi,WpRd×d

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Q i s l + 1 = Q ~ i s l , Q i o l + 1 = Q ~ i o l Q_{is}^{l+1}=\widetilde{Q}_{is}^{l},Q_{io}^{l+1}=\widetilde{Q}_{io}^{l} Qisl+1=Q isl,Qiol+1=Q iol
基于之前得到的predicate queries,我们可以生成predicate的几何语义预测以及相关的entity indicator的位置和类别。其中 P p P_p Pp是predicate的类别预测, B p B_p Bp表示对应的subject和object的box中心坐标

entity indicator也用同样的方法的到对应的类别预测概率 P s , P o ∈ R N r × ( C e + 1 ) P_s,P_o\in R^{ N_r\times (C_e+1)} Ps,PoRNr×(Ce+1)以及它们的位置预测 B s , B o ∈ R N r × 4 B_s,B_o\in R^{ N_r\times 4} Bs,BoRNr×4。总体来看,每一个predicate decoder layer都会产生所有predicate query的位置和分类。通过多层结构,predicate decoder可以逐渐提高predicate的quality。

Bipartite Graph Assembling

为了将 N e N_e Ne个entity nodes和 N r N_r Nr个predicate nodes结合起来,因此构造了一个对应矩阵 M ∈ R N r × N e M\in R^{N_r\times N_e} MRNr×Ne

具体来讲,我们通过在predicate decoder获得的entity位置预测和entity generator生成的entity节点位置之间的L1距离,以及在predicate decoder获得的entity分类得分和entity generator生成的entity节点分类得分之间的余弦相似度来确定对应矩阵。

以subject为例,其中 d l o c d_{loc} dloc表示L1 distance, d c l s d_{cls} dcls表示余弦距离。

同时,object entity也有一个相同的对应矩阵 M o ∈ R N r × N e M^o\in R^{N_r\times N_e} MoRNr×Ne,然后我们保留得分最高的top-K个link。

最后就可以构造出场景图需要的三元组了。

Learning and Inference

损失函数为 L e n c \mathcal{L}^{enc} Lenc表示entity generator的损失函数, L p r e \mathcal{L}^{pre} Lpre表示predicate generator 的损失函数。 L i p r e \mathcal{L}^{pre}_i Lipre L p p r e \mathcal{L}^{pre}_p Lppre分别表示两个子编码器的损失函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值