22-CVPR-Structured Sparse R-CNN for Direct Scene Graph Generation 学习笔记

Abstract

该文章提出了一个简单、离散且同一的框架。该模型的关键是一系列可以学习的三元组向量和一个结构化的三元组检测器,该检测器可以通过端到端的方式进行优化。具体来看,三元列表利用物体对的关系编码了物体对的一般先验,并为后续工作提供了场景图的初始预测。三元组检测器提供了一个层叠式的结构,利用定制的动态头来逐渐优化检测场景。此外,为了缓解我们方法的训练难度,我们提出了一个轻松且加强的从连体稀疏R-CNN中提炼知识的训练方法。

Introduction

本文发现稀疏度是在自然图像中进行关系识别的一个重要财产。目前大多数的现有的dense 或者 dense-to-sparse检测方法没有办法很好的获取一般的稀疏和语义预设。因此,我们提出了一个关于SGG的新观点,将其视为一个直接的稀疏集预测问题。

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

(a)密集检测器在relation inference阶段会生成所有的物体对。

(b)dense-to-sparse检测器会在relation inference阶段前使用一个pruning机制来修剪不合理的物体对

(c)本文的模型则会利用triplet直接生成稀疏的场景图

如图2所示,我们Sparse R-CNN的关键是一系列可以学习的triplet queries 和一个结构化的triplet detector。这些可以学习的triplet queries,由两个object boxes、两个object content vectors,一个relation content vector组成,负责捕捉稀疏检测的一般先验,并对物体的空间和外观信息及其关系进行编码。 具体的,我们对每一个三元detector使用结构化的连接来获取异质的背景信息。

在实际使用中,我们发现直接训练我们的Sparse R-CNN 是很困难的,主要因为在目前的数据集中,关系的标注相对稀少。稀疏的关系注释包含很少的相关对象标签,这导致了物体对检测上缺少完整的监督信号。为了解决这个问题,我们建议建立一个连体稀疏R-CNN来指导我们的结构化稀疏R-CNN在知识提炼框架中的训练。在伪标签的帮助下,我们设计了一个新的宽松的预测损失匹配标准,使结构化稀疏R-CNN的训练更加稳定。

Contribution:

  • 提出了一个新的稀疏且统一的框架来直接进行场景图生成的工作,没有显示的为了后续的inference过程进行物体检测和进行图构造。具有无需多阶段设计的简单性、有效的背景建模和高效率的优点。
  • 提出了一个实用的训练战略来克服训练Structured Sparse R-CNN困难的问题,从Siamese Sparse R-CNN中进行知识蒸馏可以生成有效的伪标签来指导我们的训练过程。我们还提出了一个自适应聚焦参数,并利用对数调整对象和关系的不平衡分布。

Proposed Approach

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

Structured Sparse R-CNN

**Backbone: **图像首先被喂入Feature Pyramid Network中获取特征,然后将特征图喂入到我们的triplet detector当中来检测物体和predicate。

FPN 特征金字塔结构,将高维度特征和低维度特征以卷积方式进行逐层融合,获取图片特征

**Triplet query:**为了定位物体并确认它们的类别和关系,我们的结构化的Sparse R-CNN使用一系列可学习的triplet queries来表示三元组的一般分布先验。具体来说,每一个triplet query由两个proposal boxes组成,来分别表示subject和object物体的位置,两个物体的content vectors来分别编码subject和object的外观,一个关系content向量来获取物体之间的结构信息。每一个box由一个4d的参数来表示正则化的物体中心坐标、宽和高。物体和关系的特征由1024维和256维的参数分别进行表示。

这些triplet query随机初始化,然后通过反向传播进行优化。当训练完成之后,这些triplet queries会作为SGG的先验,在所有的testing images上都相同。基本上,这些学到的triplet queries可以作为潜在物体位置、外观和它们的关系的一般统计,它们提供了对三元组候选的一个初始猜想。

**Triplet detection head:**我们的结构化Sparse R-CNN由一系列模块化网络blocks组成,被称为triplet 检测头。如图三所示,每一个triplet detector 的head由两个模型来进行物体对检测和它们的关系的预测

  • Object pair detection:这里使用多头自注意力机制来进行物体全局背景信息的聚合。为了更好的描述物体对当中的背景特征,本文提出了一个pair Fusion module来构造物体特征之间的关系。公式如下:

    其中 X s   X o X_s\ X_o Xs Xo分别表示subject 和object的content vectors。 P s   P o P_s \ P_o Ps Po表示位置编码。 X s ′ , X o ′ X_s',X_o' Xs,Xo被用于生成self-attention的key和query。

    然后经过强化的object特征向量通过dynamic convolution获得RoI池化特征。随后,一个由两个MLP组成的前馈神经网络(FFN)来分别进行box regression和category classification。

  • **Relation recognition:**同样首先进行Multi-head attention机制,对来自ROI-Align与关系向量的关系级特征进行了类似的动态卷积,然后它们提出了一种融合object-level特征和relation-level特征的方法,被称为E2R方法,该融合公式为:

    其中 F s , F o , F r F_s,F_o,F_r Fs,Fo,Fr表示subject、object和relation的特征, W W W表示线性变换矩阵。同时,因为物体特征对于关系预测来讲非常有用,我们在另一个branch上使用object feature来直接预测关系类别,因此最终的结构来自两个branch的加权输出。

Learning with Siamese Sparse R-CNN

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

实际计算时会在所有detection head后面都计算two-stage triplet label assignment

本文发现直接使用ground truth triplets来训练我们的模型会比较困难。这是因为真实的triplet 的标注涵盖太少的object samples。但是,我们的detector需要大量的triplet。因此我们考虑生成一系列伪标签来帮助训练。因此我们基于知识蒸馏的战略来生成一系列伪标签。

  • **Siamese Sparse R-CNN:**如图4中所示,提出了一个和structured sparse r-cnn共享权重的siamese sparse r-cnn。它被单独用于物体检测,并有独立于triplet的辅助查询。它与我们的三联体检测器联合训练,并且像对象检测器一样有自己的对象标签分配。检测到的物体被分组为一对,作为训练结构化稀疏R-CNN的伪标签。

    注意在Siamese阶段,首先会提出新的一组proposal=【100】(triplet 中的proposal称为so_proposal),它有自己的bbox坐标和feature。然后我们会通过object detection head对这些proposal的特征进行学习,注意这里学习的时候相比于triplet head缺少pair fusion,e2r fusion,只保留了object query自身的self-attention 和 dynamic convolution,且权重是和triplet head 共享的。

  • **Two-stage triplet label assignment:**首先将ground-truth的relations和它对应的objects分配给一系列triplet。然后,对于剩余的不匹配ground-truth的triplet候选者,我们不给他们的对象填充背景标签,而是使用另一个 Hungarian匹配,将这些对象对分配给连体稀疏R-CNN提供的伪标签子集()。有了这样的匹配,这些三联体就被迫近似于最像它们的物体对。最终,在两阶段分配下,我们通过对 L F \mathcal{L_F} LF的sum计算第一阶段的损失, L B \mathcal{L_B} LB来计算第二阶段的损失。

    Hungarian匹配是二分图匹配算法,尽可能寻找一幅图中的最大匹配,使得二分图中可以匹配的节点数量最大。

    在该阶段,伪标签子集的构造是通过利用siamese rcnn学习到的proposal相互连接构造伪三元组(proposal*proposal),并去掉已经和ground-truth匹配的三元组和sub=obj的三元组。

以下是第一阶段中predicted triplets和ground-truth triplet之间的匹配cost。

其中 L c l s r g \mathcal{L}^g_{cls_r} Lclsrg L c l s i g \mathcal{L}^g_{cls_i} Lclsig表示object和relation在predicate和ground truth之间的分类损失, L L 1 i g \mathcal{L}^g_{L_{1_i}} LL1ig L g i o u i g \mathcal{L}^g_{giou_{i}} Lgiouig表示bbox在predicated和ground-truth之间的损失。

在第二阶段,对于一系列伪标签,我们删去了中检测到ground-truth的pairs(triplet),然后将剩下的pairs认为是伪标签集 U U U,原则上来讲我们可以直接使用 U U U来训练我们的triplet检测器,但是一些工作告诉我们hard-label(硬标签,标签的实际值,例如1,2,3)的形式对于训练来讲更好,考虑到 U U U中的对象也在之前的对象标签分配中被分配了标签,因此我们保持没有和ground-truth匹配的物体的bbox(位置坐标和大小)不变,用hard-label替换所有物体的classification score。 然后我们在 U U U和剩余triplets的object pairs中使用另一个bipartite。匹配的cost如下:

三个损失都是predicted object in triplet和objects in U U U之间的损失。 1 i u 1^u_i 1iu在object from U U U hits the ground-truth时为1,否则为0。

经过第二阶段的二元匹配之后,我们会将在剩余triplets中的relation prediction中和伪标签一一对应,loss函数如下:

L c l s r − \mathcal{L}^-_{cls_{r}} Lclsr表示relation prediction(so_proposal生成的triplet) 和 background label(由proposal 100*100构造的persudo-triplet)之间的focal loss。

LA(logit Adjustment):

logit的定义

事件A的odds:事件A出现的次数和非A事件出现的次数之比

事件A的概率:事件A出现的次数和所有事件出现的次数之比

因此对于一个事件,当概率P从0.01-0.99进行变化的时候,概率P的变化范围是[0-1],而odds的变化范围是 [ 0 , + ∞ ] [0,+\infty] [0,+],因此如果对odds取对数,其范围就会变成 [ − ∞ , + ∞ ] [-\infty,+\infty] [,+],而Odds的对数就称之为logit

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值