尝试UVTransE
这篇论文是在VTransE 上进行改进的,具体的VTransE 运行代码是matlab caffe
可以参考我的另一篇文章: https://blog.csdn.net/u012211422/article/details/115800878?spm=1001.2014.3001.5501
其中这篇文章涉及三种任务,predicate 识别,phrase识别,relationship 识别。
如图所示。predicate 是最简单的一种,框和类别都标注好 ,只预测之间的关系。
phrase 和relationship 都是只给一个图片,难度大,然后phrase 直接框出一个框,并给出三元组。而relationship 是分别框出主语和宾语,并给出类别和谓词。
其中文中说了两种评价准则recall @ 100 和recall @ 50,我认为应该是模型选出最高置信度的100个和50个,看命中率
代码来源:https://github.com/zhung2/uvtranse
这篇文章的整体框架如下:
其主要思想是VtransE 使用的是s+p~o 其中s 是主语框特征,p 是谓词,作为翻译向量。o 为宾语框特征。但是它没有考虑并联框的特征,而只关注了主语和宾语的框。本文就是关注了并联框的信息。而该并联框代表了谓词,作者使用了减法模型,将并联框的特征向量分别减去主语和宾语的特征向量,就可以得到谓词向量。
1.注释一些信息
该代码中有很多是需要注释掉的。例如
如果运行train.py出现,import initialze Not Found the module. 等问题就是需要注释,作者已经给你写好了注释后,应该写的内容例如下图的红色区域
2.如果出现train.txt 找不到
请注释掉vrd.py 中的这一行
3.如果运行出现找不到1_net.pth 找不到
这时可能在某个目录下多出一个刚刚生成的checkpoint
而不是代码中同名目录,它里面只有opt.txt。 所以这个时候你要创建vgg16,创建空文件1_net.pth。 这样你就可以真正的运行代码了。
4.pickle 文件读取不了
出现pickle文件读取不了问题,是因为作者提供的是python2生成的pickle 文件,需要使用指定python2 格式进行读取,整体程序python3 运行
5.结果截图
后期会整理一篇代码阅读文章,已经整理好,下面链接打开即可