天天看点

论文笔记:Semantic Relation Reasoning for Shot-Stable Few-Shot Object Detection

大四的师弟师妹们都要进实验室了~ 回想这一年过的好快,只是从一个小小白变成了 一个小白~

导师似乎也没有时间具体指导,反正抓紧时间吧~~争取年底做出来~

一会去见可爱的女朋友

Semantic Relation Reasoning for Shot-Stable Few-Shot Object Detection

基于语义关系推理的fsod

虽然few shot的数据量很少,但是基类和novel类之间的语义关系应该是恒定的。在这篇工作中,调查了在使用视觉信息的同时使用语义关系,并且将显式的关系推理引入到fsod中。

具体来说,从大量的文本预料库中学习每个类的语义概念。让检测器把图像的表示投影到特征空间中。此外,还提出使用启发式的关系图来解决原始embedding的问题,并提出用动态关系图来增强embedding。

srr-fsd的实验结果对shot的数量具有鲁棒性。非sota,有竞争力的结果

提出从分类数据集中移除预训练的implicit shot的新评估标准,更实用

1.intro

fsod的性能对explicit shot和implicit shot的数量非常敏感

explicit shots: novel 类中的有标签对象数量(应该就是通常理解的shot数)

implicit shots: 根据下图理解为是否使用了imagenet预训练的backbone

论文笔记:Semantic Relation Reasoning for Shot-Stable Few-Shot Object Detection

如上图所示,性能对x轴的shot数量非常敏感。实线表示 其中的backbone是在imagenet上预训练的。虚线表示训练backbone时,去掉了imagenet中novel类出现过的类。可见论文方法对explicit shots(x轴)和implicit shots都更为稳定。

关于implicit shots:用大型图像分类数据集上预训练的模型来初始化是一个非常常用的做法,然而,分类数据集中隐含的包含了很多novel 类中的图片,所以检测器实际上已经在backbone中包含并编码了novel类的知识。如上图所示,移除imagenet中预训练了的类确实会对性能有一定负面影响,所以当面对真实世界的极端情况时候,可能导致失败。

作者认为之所以对shot敏感,是因为没有考虑视觉信息之间的依赖关系。novel对象仅仅是独立的通过图像学习。但是,,不论novel类的shot有多少,基类和novel类之间的语义关系,都是永远存在滴!如下图所示,如果我们有着:摩托和自行车很像的先验、人和车有交互的先验等…就很容易学习一些概念。而当数据不足时,这些语义关系就显得尤为重要。

论文笔记:Semantic Relation Reasoning for Shot-Stable Few-Shot Object Detection

所以如何利用few shot的语义关系呢。在nlp中,语义概念通过0shot的方式,从语言模型中获得word embedding。而且用知识图表示明确的关系。但是,直接在fsod中应用这些,会导致cv和nlp之间的domain gap,以及fsod数据集中的启发式定义。

本工作中,提出了结合语义关系的fsod:srr-fsd,它以端到端的方式同时学习视觉信息和语义关系。具体来说,建立了一个使用了word embedding的语义空间。在类别的word embedding的指引下,检测器学着把对象从视觉空间投影到语义空间,同时让他们的图像表示和相应的class embedding对齐。

为了解决上述问题,提出由图像驱动的动态关系图(而不是启发式的定义)。然后学习到的图将被用来执行执行关系推理并增强原始embedding,从而减少domain gap。

借助语义关系推理,我们的srr-fsd展示了shot的稳定性。在更现实的setting(虚线)中,srr-fsd仍然稳定的保持了性能,而其他方法则都有降低。作者希望这个setting作为未来的新benchmark。

总结的贡献如下:

  1. 是第一个在fsod任务上利用了语义关系推理
  2. srr-fsd在shot波动时,仍有着稳定的性能。在一些setting下超过了sota
  3. 建议大家以后都不要在fsod中使用包含novel的imagenet预训练。

2. relate

3. 方法

典型的fsod检测器有两个阶段:阶段1用基类进行传统的训练,阶段2用基类和novel类共同微调,同时为避免基类占据统治地位,在基类中采样了一个很小的子集以使每个类别的数量相同。

随着阶段2的类别总数增加,给检测器中加入了更多class-specific的参数(不过最近好多方法试图放弃class-specific?),由他们负责检测novel。这些特定类别的参数通常加在网络末端的分类和回归分支中(上图中好像只加在了分类分支?)。

3.2 语义空间投影

本文的fsod建立在faster rcnn的基础上。在分类分支中,特征向量通过全连接层转化为d维向量

v

。然后将

v

乘以一个可学习的权重矩阵W (Nxd)。从而输出一个概率分布。

论文笔记:Semantic Relation Reasoning for Shot-Stable Few-Shot Object Detection

其中N当然是类别数,b(一个长度为N的向量)是可学习的bias vector,交叉熵监督。为了同时从视觉信息和语义关系中学习对象,首先构造一个语义空间,并将上面的视觉向量

v

投影到该语义空间中。

论文笔记:Semantic Relation Reasoning for Shot-Stable Few-Shot Object Detection

具体的,用de维的word embeddings的集合W (Nxde)表示语义空间,然后训练一个检测器来学习分类分支的线性投影矩阵P (d x de),投影的目的是让视觉信息v和词向量对齐。

于是预测的概率分布p,从上面那个公式变为:

论文笔记:Semantic Relation Reasoning for Shot-Stable Few-Shot Object Detection

在训练中,We是固定的,可学习的变量是P。这样做的好处是,泛化到novel类的对象不包含P中的新参数。可以用novel的embedding简单的扩展W,我们仍然保留b来对检测数据集中的类别不平衡建模(没懂)。

vision和language之间的domain gap

We从自然语言中对语义概念的知识进行编码。zero shot没有support,只能依靠embedding之类的,而这里便可以同时依赖image和embedding来学习novel的概念。而这些embedding可以在support很少的时候指引检测器向一个合适的方向收敛。

但如果support增多,来自embedding的知识也可能会造成误导(由于domain gap)使结果变差。因此,需要对语义信息进行增强来减少gap,之前有个工作对每个词向量独立的训练一个转换,但本文利用的类间显式关系对于增强语义更有效果,也就是3.3节提出的动态关系图。

3.3 关系推理

语义空间投影学习将视觉空间和语义概念进行对齐,但它仍然独立的对待每个类,没有进行类别之间关系的传播(即图2提的问题)。

因此,文中进一步引入关系图来对他们之间的关系进行建模。知识图G是一个N x N 的邻接矩阵,表示每个相邻邻接对之间的关系强度。G通过图卷积操作进行分类,数学上更新的概率预测为:(就是再左乘一个)

论文笔记:Semantic Relation Reasoning for Shot-Stable Few-Shot Object Detection

知识图的启发式定义

在0 shot或者few shot的识别算法中,知识图G被定义为一个基于启发式的。它通常由常识知识的数据库构成,方法是通过路径对子图进行采样,以使得语义相关的类有着更强的联系。例如,imagenet数据集中的类具有从WordNet中采样的知识图(?),然而,fsod的数据集中的类别并没有很高的语义相关,也没有像imagenet具有严格的层次结构。我们发现唯一可用的启发式是基于一篇图卷积方法中提到的object co-occurrence方法。尽管共现的统计数据很容易计算出来,但它并不等价于语义关系。

和基于启发式的图,本文提出的是数据驱动的学习动态关系图,以对类别之间的关系推理进行建模。受transformer的启发,使用self-attention结构实现了动态图,如下图所示:

论文笔记:Semantic Relation Reasoning for Shot-Stable Few-Shot Object Detection

原始的词向量W经过3个线性层f,g,h变换,并且从f,g的输出中计算出一个自注意矩阵。然后该矩阵再乘上h的输出,再经过另一个线性层l。还用了一个残差连接原始的矩阵W加在l的输出上。

学习这样的动态图的另一个优点是它可以轻松的适应新来的类别。因为图并不是固定的,而且可以动态的从词向量中生成。而不需要重新定义一个新图重新训练。可以简单的插入对应新类别的embedding,然后微调检测器。

3.4 Decoupled(解耦) Fine-tuning

在第二个微调阶段,像TFA一样,仅仅微调SRR-FSD的最后几层,对于分类分支,在关系推理模块和投影矩阵P中微调参数。对于回归分支,它不依赖于词嵌入,但它和分类分支共享特征。

发现在回归分支上学习novel会因为共享特征而干扰分类分支,使其产生一些FP。

将两个分支之间共享的全连接层解耦可以有效的让每个分支学习更好的特征。换句话说,分类分支和回归分支可以有独立的全连接层,并且分别微调。

4. 实验

对于词向量,使用了300维的word2vec 向量,从维基百科中的无标注文本进行训练。在关系推理模块中,将词向量的维度减为32。

论文笔记:Semantic Relation Reasoning for Shot-Stable Few-Shot Object Detection

voc的效果,相比TFA确有改进

论文笔记:Semantic Relation Reasoning for Shot-Stable Few-Shot Object Detection

cross domain上表现突出,coco训练 voc测。

论文笔记:Semantic Relation Reasoning for Shot-Stable Few-Shot Object Detection

在新benchmark上,low shot (尤其是1,2)表现非常突出。

4.4 消融

语义空间投影,关系推理,解耦微调。

发现:语义空间投影可以获得 shot-stable 的学习

论文笔记:Semantic Relation Reasoning for Shot-Stable Few-Shot Object Detection

提点不少的trick,,解耦微调,作者说主要可以减少fp(similar的扇形),但感觉只能说明similar 的fp很多,提点很多,但减fp似乎没多明显?

论文笔记:Semantic Relation Reasoning for Shot-Stable Few-Shot Object Detection

而且不给代码

论文笔记:Semantic Relation Reasoning for Shot-Stable Few-Shot Object Detection

继续阅读