Visual Relationship Detection with Language Priors

《visual relationship detection with language priors》,这也是李飞飞在CNCC上提到的一片重要论文,发表于ECCV。
此论文用来进行关系检测的主要方法是:分别训练两种视觉模型,一种来识别物体,一种来识别关系。
关系识别的一个挑战在于没有足够的关系训练样本。比如说骑行这个动作,图片可能是人骑马、人骑车、人骑骆驼等等,想要将这些样本统统搜集起来是高耗能的。本论文在进行关系检测的同时,也证实了这种方法用于zero-shot detection的可能性。


1517557257206_2.png

由图可见此方法的大体流程是:输入图片,经过RCNN产生多个物体检测框,每个物体检测框分别经过视觉模型和语言模型进行打分,给定阈值将得分高于阈值的输出得到关系标签(person - riding - horse)


Training Approach

Visual Appearance Module

训练了一个CNN来对100个物体进行分类,同时训练了另一个CNN来对70个predicates进行分类。这里有实验表明,将每个objects predicates对分开进行训练得到的效果要比visual phrases’ detectors(将所有对一起训练)好。则视觉模型V如下:


R《i,k,j》 i,j是对象的类别,k是谓词(where i and j are the object classes (with bounding boxes O1 and O2) and k is the predicate class)
0-是{zk, sk}的参数集合,zk和sk是将CNN特征转换到关系可能性得到的参数。P(O)是物体CNN得到的objects likelihoods,CNN(O1,O2)是O1,O2的联合特征


Language Module

由于关系之间存在着语义关联性,比如person-ride-horse 和 person-ride-elephant是很相近的,即使没见过person-ride-elephant,也应该能从大量出现的相近的样本中推理出来(e.g. person-ride-horse)
所以说我们的语言模型要做的就是将关系映射到一个嵌入空间中,类似的关系被优化为相互靠近。
首先,我们使用word2vec将两个对象映射到词嵌入空间,然后,我们将得到的这两个向量聚集起来利用映射参数W映射到关系向量空间。这个映射说明了物体之间的交互行为。

The relationship projection function

tj是第j个对象的类别(tj is the word (in text) of the jth object category. )
wk是一个600纬的向量,bk是偏移量。
其中W是一个集合:{{w1, b1},…{wk,bk}},其中每一行代表着K个predicates。

Training Projection Function

我们想要得到映射函数能使关系越相似的越接近,所以我们启发式来建立这种关系,其中两个关系之间的距离与其组件对象和谓词之间的word2vec距离成正比:


Likelihood of a Relationship

如果一个relationship在训练数据中出现的频率高于另一个Relationship我们考虑这个relationship有更高的再发生可能性,所以我们的排名损失函数为:


Objective function

我们将视觉外观模型和语言模型结合起来通过排名损失函数来最大化真实relationship的得分:


1517559777558_7.png

最终损失函数


Testing

1517559850528_9.png

使用RCNN提取一组对象,之后使用视觉模型和语言模型对每一个对象对预测视觉关系。

训练算法


总结

这篇文章最大的亮点是引入了Language Module。
从文章来看,视觉模型其实就已经可以把视觉关系推理做完了,引入语言模型,使得在关系空间中相似的关系聚集在一起,使得可以预测未见过的样本(zero-shot)。
可以简单的理解为见过的样本主要是视觉模型起作用来进行预测,未见过的样本主要是语言模型起作用来进行预测。

你可能感兴趣的:(Visual Relationship Detection with Language Priors)