训练:
模块1:visual appearance module,提取视觉特征
先训练一个CNN用于对物体进行分类,即Pi(O1)/Pj(O2),
然后再训练一个CNN用于对谓词(共70类)进行分类,输入的东西是O1O2的union bounding box,即CNN(O1,O2)。zk,sk的k=1,2,…K,K就是谓词的种类总数(70),这样一来,整个模块得到的就是在主客体分别为O1,O2的前提下,根据它们的视觉特征,对应70类谓词的概率。
visual module这个模块是将CNN feature转换为了概率。
模块2:Language Module,提取语义特征
主要是为了得到一个映射函数,即f。
首先把物体类别i和j用word2vec投影到embedding space,再把这两个word2vec的值cat在一起,最后利用W和b把cat的向量投影到relation space。
最后得到的是基于类别(O1,O2)的语义信息,对应70类谓词的概率。
测试:
目标检测网络检测出的所有物体,两两组合,进行下式计算,即visual module得到的概率乘以language module的概率,得到对应O1,O2的所有谓词(70类)的概率,其中最大的对应的谓词就是<O1, R*, O2>这个三元组的谓词了。
最后再放一次这个图加强理解。