论文阅读:Large-Scale Visual Relationship Understanding

Large-Scale Visual Relationship Understanding (AAAI 2019)

文章
  本文的模型分为两部分:视觉模块语义模块
  对于视觉模块,作者认为关系的存在依赖于主语和宾语物体的存在,但反过来并不是,换句话说就是关系识别是建立在物体识别之上的,但物体识别却是独立于关系识别的。因此,作者希望能学习从物体和关系共享的视觉特征特征空间到两个独立的语义嵌入空间(物体和关系)的映射。为了避免混淆两个空间,所以我们看到在本文的模型中,并没有将关系的视觉特征传递给物体(仅将物体特征传递给了关系)。其实这个在之前港中文的一篇文章中也有类似的做法。特征提取模块中的w_1和w_2分别是VGG-16中的fc6和fc7,这样才能保持住VGG16的capacity,并且主语和宾语的部分是共享相同的w_1和w_2的。此外,和之前大多数工作不一样,本文的模型没有将spatial特征和visual特征拼接起来,因为由于物体和类别的规模太大,关系的几何布局具有非常大的变化性。

论文阅读:Large-Scale Visual Relationship Understanding

  对于语义模块,将主语、宾语和关系标签的词向量输入一个1至2个fc的小MLP,然后得到每个embedding。和视觉模块类似,主语和宾语分支会共享权重而关系分支则是独立的。这个模块希望能够将词向量映射到一个比原始词向量空间更具判别性却保持了语义相似性的嵌入空间。对词向量的初始化有很多方法,本文讨论了以下几种:

  1. 预训练好的word2vec词嵌入向量(wiki),本文用这个作为一个baseline

  2. 关系级别的同时出现嵌入(relco),将一个relationship triplet当作一个句子,因此每个relation会有与之经常一起出现的sub和obj作为context,因此训练word embedding时要最大化P(p|s,o),P(s|p,o)和P(o|s,p)。

  3. Node2vec嵌入向量,由于VG数据集中有scene graph形式的数据,节点对应object和relation,因此可以使用node2vec。

损失函数:
  本文对triplet loss进行了一定的修改,首先对于一个RoI,其用于生成triplet的visual-semantic对为:

论文阅读:Large-Scale Visual Relationship Understanding

L可以为s、p或者o,那么分别在visual和semantic上生成不同类RoI的负样本的话,则有:

论文阅读:Large-Scale Visual Relationship Understanding

因此每个分支(sub、rel、obj)的triplet loss为:

论文阅读:Large-Scale Visual Relationship Understanding

其中N为positive RoI的个数,K为为每个positive RoI采样的负样本的个数,s为相似度函数。原始triplet loss的问题在于一旦两个pair相似度的差距超过了margin,就无法再从loss中学习到东西。因此加上了softmax来缓解这个问题:

论文阅读:Large-Scale Visual Relationship Understanding

上式则会使正样本之间的相似度朝1训练,而正负样本之间的相似度则朝0训练。

  为了进一步使嵌入向量更具区分性,又加入了一个能将同类样本拉得更紧密的损失函数:

论文阅读:Large-Scale Visual Relationship Understanding

这个损失函数希望同类RoI样本中最不相似的一对样本的相似度都应该大于该类和其它类别RoI之间的相似度。

  文中发现L_y使用triplet-softmax loss,而L_x则使用triplet loss的时候模型表现比较好。之所以不全部使用triplet-softmax loss时为了给模型保持一些松弛性(slackness),避免模型崩溃。y可以使用triplet-softmax loss的原因在于每个单词本身就是一类,因此就要它们之间相互远离。最终,总的损失函数为:

论文阅读:Large-Scale Visual Relationship Understanding

实验表明α和β都为1的时候在所有的情况下表现都不错。

  作者将triplet-softmax loss解释为了普通的softmax loss的一个变种,原始的softmax为:

论文阅读:Large-Scale Visual Relationship Understanding

其中x为输入特征,Y为网络权重,triplet-softmax为:

论文阅读:Large-Scale Visual Relationship Understanding

其中S为semantic模块,v_i为每个类别的词向量,意思就是找一个相似度最大的词向量的类别则为输入的类别,可以看到,其实将softmax的网络参数替换成每个词向量的semantic embedding之后就变成triplet-softmax。这种在softmax之前以语义进行指导的结构正是本文的模型同时具有可分辨性和相似性的原因。

  Fast-RCNN中,训练过程中的RoI采样非常重要,一般一次训练128个RoI,其中正负样本的比例为1:3,此处正样本为和ground truth的IoU大于0.5的那些RoI。本文的模型中,sub和obj分支的RoI采样策略和Fast-RCNN的一样,对于relation分支的话则要求两个物体和ground truth的RoI都大于0.5,该relation RoI才是正样本。具体地,会采样64个sub RoI,正负比例1:1,obj RoI也一样。然后组合成4096对relation,如果两个RoI和ground truth的IoU都大于0.5则认为其为正样本。最终在这4096对里采样128个RoI,正负比例为1:3,作为relation分支的训练数据。