Abstraction
该模型将场景图生成分为了三个阶段:分别是场景图构造、场景图reasoning和场景图inference。
在reasoning阶段,提出了基于边的图卷积网络(EdgeGCN),以利用多维度的边特征进行明确的关系建模,同时探索节点和边缘之间的两个相关双重互动机制,以实现场景图表示的独立演化。
Contribution
- 为了赋予图卷积网络(GCN)以边缘辅助推理能力,我们提出了一个面向边缘的GCN(EdgeGCN),利用多维边缘特征进行明确的节点间关系建模。
- 进一步探讨了SG节点和边缘之间的两个结对交互,为每个单独的SG表征演化进行全面的SG推理,从而更好地感知和利用面向节点和边缘的视觉线索,通过注意的方式协助其他节点的演化。
- 我们的模型不仅仅在计算机辅助的三维场景合成或真实世界的三维扫描有效,且我们边缘驱动的互动方案也被证明在传统的图表示学习任务中是非常有效的
Method
G = ( V , E ) \mathcal{G=(V,E)} G=(V,E)
模型整体分为了三个部分:Scene Graph Construction、reasoning、inference
Scene Graph Construction
本文和3DSSG中使用两个分开的backbone来获取独立的物体和特定关系特征不同,本文通过共享一个单一的backbone来减少场景理解中的冗余,表示为 F B ( ⋅ ) \mathcal{F_B(\cdot)} FB(⋅)来从 P ∈ R N × C i n p u t \mathcal{P\in R^{N\times C_{input}}} P∈RN×Cinput中获取点层面的特征 X P ∈ R N × C p o i n t \mathcal{X_P\in R^{N\times C_{point}}} XP∈RN×Cpoint,其中 C i n p u t \mathcal{C_{input}} Cinput和 C p o i n t \mathcal{C_{point}} Cpoint表示输入点相应的特征维度以及经过特征获取后的点的特征维度。 X P \mathcal{X_P} XP被进一步传播,以方便对图中 m m m个节点和 m 2 m^2 m2个边的表征进行初始建模。 X P \mathcal{X_P} XP分别被表示为 X V ∈ R N × C n o d e \mathcal{X_V\in R^{N\times C_{node}}} XV∈RN×Cnode和 X E ∈ R m × m × C e d g e \mathcal{X_E\in R^{m\times m\times C_{edge}}} XE∈Rm×m×Cedge。
注意,这里的 F B ( ⋅ ) \mathcal{F_B(\cdot)} FB(⋅)在实际使用时用的是PointNet模型和DGCNN模型进行特征提取。
C i n p u t \mathcal{C_{input}} Cinput的特征维度为9,其中3维为坐标、3维为RGB-color、3维为法向量。 C p o i n t \mathcal{C_{point}} Cpoint为256
Node feature generation
对称池化函数 g ( ⋅ ) \mathcal{g(\cdot)} g(⋅),和class-agnostic的point-to-instance指标 M ∈ { 1 , . . . , m } N \mathcal{M\in\{1,...,m\}^N} M∈{1,...,m}N一起从点的特征 X P \mathcal{X_P} XP来生成场景图中每一个物体 i i i实例特征 X V i ∈ R 1 × C n o d e \mathcal{X_{V_i}\in R^{1\times C_{node}}} XVi∈R1×Cnode,这个过程可以表示为
其中 δ ( ⋅ , ⋅ ) \delta(\cdot,\cdot) δ(⋅,⋅)表示换标函数,具体为括号内二者相等为1,不同为0,这里应该起到掩码的作用,用于表示属于结点 V i \mathcal{V_i} Vi的点云中的点。最终可以生成所有节点的特征 X V \mathcal{X_V} XV
Edge feature initialization
和别的模型将对象间的结构关系重新表述为特殊类型的节点不同,该模型的框架会将这种信息表示为多维的边 X E \mathcal{X_E} XE, X E ( i , j ) = ( X V i + ( X V j − X V i ) ) \mathcal{X_{E_{(i,j)}}=(X_{V_i}+(X_{V_j}-X_{V_i}))} XE(i,j)=(XVi+(XVj−XVi))用于表示初始的边特征。
Scene Graph Reasoning via EdgeGCN
以前的场景图工作大多将边缘预测作为从节点表征学习中获得的副产品,这可能会忽视了节点和边的在SGG中潜在能力。然而本模型会将节点和边同等对待,作为成对的联合表示。因此,我们给每个人分配一个专属的学习分支,并研究图推理技术对其特征表示的增强。
Twinning Edge Attention for Node Evolution
1. Twinning edge attention
该注意力机制的目标是学习到 A E ∈ R m × C n o d e ′ \mathcal{A_E\in R^{m\times C^{\prime}_{node}}} AE∈Rm×Cnode′,该mask是根据边特征 X E \mathcal{X_E} XE决定的。
为了使用上 X E \mathcal{X_E} XE中的方向信息,我们在计算其边迭代向量 a E i ∈ R m × C n o d e ′ \mathcal{a_E^i\in R^{m\times C^{\prime}_{node}}} aEi∈Rm×Cnode′时会同时考虑其作为source和target的情况。当 V i \mathcal{V_i} Vi作为源头和目标时,边迭代特征会被分表表示成 a E ( i , ⋅ ) i \mathcal{a_{E_{(i,\cdot)}}^i} aE(i,⋅)i和 a E ( ⋅ , i ) i \mathcal{a_{E_{(\cdot,i)}}^i} aE(⋅,i)i
其中 W φ ∈ R C e d g e × C n o d e ′ \mathcal{W_\varphi\in R^{C_{edge}\times C^{\prime}_{node}}} Wφ∈RCedge×Cnode′是一个可以训练的转换矩阵,用于将 X E ( ⋅ , ⋅ ) ∈ R m × C e d g e \mathcal{X_{E_{(\cdot,\cdot)}}\in R^{m\times C_{edge}}} XE(⋅,⋅)∈Rm×Cedge的特征维度映射到 C n o d e ′ C^{\prime}_{node} Cnode′,然后 A r o w ( ⋅ ) A_{row}(\cdot) Arow(⋅)和 A c o l ( ⋅ ) A_{col}(\cdot) Acol(⋅)表示在每一个特征维度上的信息聚合函数。因此边迭代向量 a E i ∈ R m × C n o d e ′ \mathcal{a_E^i\in R^{m\times C^{\prime}_{node}}} aEi∈Rm×Cnode′最终的值可以表示 a E i = σ ( a E ( i , ⋅ ) i ⊙ a E ( ⋅ , i ) i ) \mathcal{a}_\mathcal{E}^i=\sigma(\mathcal{a}_\mathcal{E_{(i,\cdot)}}^i\odot\mathcal{a}_\mathcal{E_{(\cdot,i)}}^i) aEi=σ(aE(i,⋅)i⊙aE(⋅,i)i),其中 ⊙ \odot ⊙表示点乘, σ \sigma σ表示sigmoid激活函数
2. Node evolution stream
A G \mathcal{A_G} AG定义为场景图 G \mathcal{G} G上的邻接矩阵,场景图结点特征表示 X V ′ \mathcal{X^{\prime}_V} XV′为:
X V ′ = f ( A ^ G ( f ( A ^ G X V W G 1 ) ⊙ A E ) W G 2 ) \mathcal{X}'_{\mathcal{V}}=f(\hat{A}_\mathcal{G}(f(\hat{A}_\mathcal{G}\mathcal{X}_{\mathcal{V}}W_{G1})\odot A_{\mathcal{E}})W_{G2}) XV′=f(A^G(f(A^GXVWG1)⊙AE)WG2)
其中 A E \mathcal{A_E} AE表示边驱动的交互score, f f f表示非线性激活函数, A ^ G = A G + I \widehat{A}_\mathcal{G}=\mathcal{A_G}+I A G=AG+I, W G 1 ∈ R C n o d e × C n o d e ′ W_{G1} \in \mathcal{R^{C_{node}\times C^{\prime}_{node}}} WG1∈RCnode×Cnode′, W G 2 ∈ R C n o d e ′ × C n o d e W_{G2} \in \mathcal{R^{C^{\prime}_{node}\times C_{node}}} WG2∈RCnode′×Cnode,因此特征维度变换为 C n o d e → C n o d e ′ → C n o d e \mathcal{C_{node}\to C^{\prime}_{node}\to C_{node}} Cnode→Cnode′→Cnode
这里可以和GCN的公式做对比,发现差别主要是点乘上 A E \mathcal{A_E} AE其它部分都相同。也就是说在原本的GCN的基础上加上了边的特征信息。
在实际使用时, C n o d e = 2 × C n o d e ′ = 256 \mathcal{C_{node}}=2\times C^{\prime}_{node}=256 Cnode=2×Cnode′=256
Twinning Node Attention for Edge Evolution
1. Twinning node attention
和edge attention中相同,本模块的目标是学习到点作为source和target时的多维注意力mask A V ∈ R m × m × C e d g e ′ \mathcal{A_V\in R^{m\times m\times C^{\prime}_{edge}}} AV∈Rm×m×Cedge′,因此对于给定的边 E ( i , j ) \mathcal{E_{(i,j)}} E(i,j),最终产生一个边缘节点互动的驱动得分 a V ( i , j ) ∈ R 1 × 1 × C e d g e ′ \mathcal{a_V^{(i,j)}\in R^{1\times 1\times C^{\prime}_{edge}}} aV(i,j)∈R1×1×Cedge′
这里的双加号 + + ++ ++文中是根据边进行对应特征拼接。
2. Edge evolution stream
边特征可由该方法进行学习,其中 A V \mathcal{A_V} AV表示的就是上面学习到的attention mask,最终同样让边的特征维度变化为: C e d g e → C e d g e ′ → C e d g e \mathcal{C_{edge}\to C^{\prime}_{edge}\to C_{edge}} Cedge→Cedge′→Cedge
实际使用时, C e d g e = 2 × C e d g e ′ = 512 \mathcal{C_{edge}}=2\times C^{\prime}_{edge}=512 Cedge=2×Cedge′=512,且激活函数 f ( ⋅ ) f(\cdot) f(⋅)为 R e L U ReLU ReLU
EdgeGCN
EdgeGCN包括了两个卷积流,一个是对于节点的 ( X V → X V ′ ) (\mathcal{X_V \to X^{\prime}_V}) (XV→XV′),另一个是对于边的 ( X E → X E ′ ) (\mathcal{X_E \to X^{\prime}_E}) (XE→XE′),且在卷积过程中使用了上文提到的attention交互机制 ( A E o r A V ) (\mathcal{A_E\ or\ A_V}) (AE or AV)来保证自己与结对代表之间的相互依存关系。
Scene Graph Inference
对于上一阶段的输出节点特征 X V ′ \mathcal{X^{\prime}_V} XV′和边特征 X E ′ \mathcal{X_E^{\prime}} XE′,使用NodeMLP和EdgeMLP,这两个MLP都是由两层全连接层组成,但是参数不共享。
**Loss:**损失函数使用的是muti-class cross entropy L n o d e + L e d g e \mathcal{L_{node}+L_{edge}} Lnode+Ledge
Experiment
3DSSG
Result
为了进行有效的对比实验,该模型在3DSSG数据集上进行测试的时候, F B ( ⋅ ) \mathcal{F_B(\cdot)} FB(⋅)使用的是PointNet模型。因此在后续工作中通过修改backbone可以进一步提高模型的准确率。
在进行对比实验的时候,节点和边的特征提取的backbone都相同,不同的是后续的推理部分
Ablation Studies
菱型表示PointNet,星星表示DGCNN
model A 展示了骨干网络在SG中进行object classification的性能
model B 在model A的基础上使用了两个相同的GCN网络来构造一个没有变特征参与的网络。
model C 在通过在模型训练中加入边缘监督,丰富了模型A,使其适应场景图中对象和关系的联合识别任务。