一文带你畅游视觉关系检测(visualrelationshipdetection)

author author     2023-04-12     443

关键词:

参考技术A

视觉关系识别/检测 任务不仅需要识别出图像中的物体以及他们的位置(detection),还要识别物体之间的关系(relationship)。例子如下图所示,输入为一张图片,输出为objects和bounding boxes,以及objects之间的关系,如<person on motorcycle>。

视觉关系识别是图像理解的基础,可以 应用

挑战:

这篇文章将整理与视觉关系相关的论文,并作简要的介绍。论文列表:

第一篇是比较经典的论文,提出了一个数据集VRD和一个结合语言先验的关系预测模型。

Visual Phrases只有13个类型,Scene Graph 有两万多关系,但是它平均每个对象只有大约2个谓词关系。除了这三个数据集,还有有名的 VIsual Genome 大数据集,包含99658张图片,19237个关系,标注了物体类型,位置,属性和物体间的关系(场景图),还有caption,qa。虽然数据量大了,但是数据集的标注还是会有一些没有被标注的,毕竟组合多。

思考:论文利用了语言先验word embedding,对预测起到了很大的帮助,但是先验知识可能会使得关系预测倾向于频繁的关系,而忽略了视觉方面的信息。一个解决方案是先预训练视觉模型。然而,真正合理的融合先验的方式我觉得不是简单的乘法(先验可能会误导),是一个思考的点。

**Motivation: **这篇论文的启发是来源于知识图谱中,使用转移向量(translation vector)来表示实体之间的关系(见 Trans系列的知识表示 )。在视觉关系中,通过将对象的视觉特征映射到低维的关系空间中,然后用对象间的转移向量来表示对象之间的关系,比如person+ride=bike。如下图所示:

所以为了让 能够接近 ,即相似,loss函数为

在实验中,单从在VRD数据集上的predicate预测,与上一篇论文Lu对比是没有提升的(44<47),这是这篇论文中没有说明的,是我从两篇论文的实验数据中发现的。这篇论文在另外两个任务上效果比Lu的好些,我觉得有可能是用了Faster RCNN的缘故。
除了这三个任务的实验对比,还加了图像检索,zero-shot关系检测(没有Lu的好),特征重要性分析的实验。实验也表明了关系检测任务对目标检测任务的准确率的提升,不过其实很少。

更多相关的可参考原论文。

思考:论文用TransE来表示关系空间中对象与predicate的关系,如何映射到关系空间,更好的表达对象的联系,甚至predicate间的关系,是值得研究的一个点。(比如结合语言先验等,因为我觉的它的效果其实应该比不上加了语言先验的)

这篇论文跟上一篇论文类似,都是将<subject, rel, object>中的subject和object映射到一个空间中,他们间的关系表示为 .上一篇是基于知识图谱embedding的TransE(NIPS2013,Translating embeddings for modeling multi-relational data),而这一篇是基于TransD(ACL2015,Knowledge graph embedding via dynamic mapping matrix)。这是一个研究的方向,怎么将object,relationship很好的在embedding空间中表示。
论文的整个框架如图:

思考:这也是篇关于投射对象和关系到另一空间的论文,不过任务稍有不同,效果也比上一篇好些。同上,embedding也是可研究的一个方向。

这篇论文使用场景图scene graph来建模图片中对象以及它们的关系,任务是生成场景图:

这篇论文的亮点就是利用上下文信息以及消息传递,迭代更新以更好地预测关系。这是一个在场景图层级上的新的预测关系的方式,其消息传递方法等都是可以改进的地方,甚至结合embedding。

这篇论文的主要贡献是使用因式分解的方法来得到信息先验(a factorization scheme that yields highly informative priors),也就是关系的先验分布,即两个object间的predicate分布。
这个分布是通过张量分解的方法得到,具体是:
(1) 张量构建Tensorize :关系张量 , i, j是对象,k是关系,表示为关系k的矩阵 的堆叠,每一个值对象i, j在数据集中有关系k的次数。张量表示可以反映objects间的内在联系,关系分布等。

最后BP训练SG网络,θ设为0.2.
在实验中,论文对比了Lu的Visual Relationship Detection with Language Priors,和Xu的Scene Graph Generation by Iterative Message Passing,都有较好的提升。

思考:这篇论文通过张量分解的方式来得到关系的先验分布,与论文Visual Relationship Detection with Language Priors用到的语言先验有着异曲同工之处,都是用predicate的先验分布来调整网络预测的关系,提升zero shot能力。 不过我认为这种直接相乘的调整方式是比较粗糙的,需要更好的方式来融合先验分布与视觉上预测的分布。

这是一篇用场景上下文信息和实体间的关系来改进目标检测的论文,举个被错误检测的例子说明上下文的作用:

这篇论文做的任务不是关系预测,而是利用关系来消歧关系中的相同类的对象,其实是根据关系元组,来定位对象的位置。比如下图中需要确定人踢球是图中的哪个人,在什么位置。

论文首先用attention到对象object/subject,然后用predicate的卷积核来进行注意力的shift,同时object和subject需要结合。

这又是李飞飞团队做的工作(他们团队做了很多relationship相关的工作,语言先验那篇,迭代消息传递那篇等),做的是语句生成图像,利用了场景图表示语句中对象间的关系/联系,一个很有趣的研究,应该是第一个使用场景图的图像生成尝试了。

Sentence一般包含多个对象,以及对象间关系的描述,是比较复杂的,从上图也可以看出,直接从语句到图像效果是很差的。但是当我们把语句解析为场景图,然后再生成图像,可以更好的生成图像表示对象间的关系。
具体做法大致是根据场景图做布局预测 (layout prediction) 预测对象的位置,最后结合噪声,用生成网络生成图像。具体细节这里就不啰嗦了,列一下最终效果吧。

可以看出,对象的位置基本位于正确的位置,不过生成的图像质量不是很高,所以还是有很大的改进空间的。

这篇论文是Arxiv上今年7月份的论文,利用图像中的对象间的关系和对象属性,做QA任务。关系挖掘根据图像和问题得到一系列相关的fact——关系,对象属性,然后再attention到需要的fact上,联合视觉特征最后得到最终answer。

思考:这种提取fact的方法为QA提供了高层的语义信息,也符合人的思维方式。相比于我之前调研过的方法( 一文带你了解VQA ),可以认为这是知识的补充,之前的方法有的是只有类,属性信息,或者是额外的文本形式的知识,本论文的方法多了关系的检测,且用一个网络来提取高层语义用于QA,相比直接做数据增强更具解释性。不过论文没有用到那个bottom-up attention,这是我觉得可以改进的地方。

至此,有关VIsual Ralationship的相关问题,方法大家应该有个大致的了解和收获。有什么问题和想法欢迎一起交流学习。

一文带你了解基于视觉的机器人抓取自学习(robotlearning)

作者:夏初点击上方“计算机视觉工坊”,选择“星标”干货第一时间送达 “一眼就能学会动作”,或许对人而言,这样的要求有点过高,然而,在机器人的身上,这个想法正在逐步实现中。马斯克(ElonMusk)创立的人工智... 查看详情

一文带你了解人脸检测算法的类型及其工作原理(代码片段)

在过去的几年里,人脸识别受到了广泛的关注,被认为是图像分析领域最有前途的应用之一。人脸检测可以考虑人脸识别操作的很大一部分。根据其强度将计算资源集中在持有人脸的图像部分。图片中的人脸检测方法很... 查看详情

一文读懂计算机视觉坐标系相机参数关系及相机标定

计算机视觉坐标系关系相机参数及相机标定坐标系关系世界坐标系(WorldCoordinate)相机坐标系(CameraCoordinate)世界坐标系到相机坐标系变换关系旋转平移变换公式以及相机外参(Extrinsics)Q&A像素坐标系图像坐标系图像坐标系到像素坐... 查看详情

一文带你入门javastream流,太强了

两个星期以前,就有读者强烈要求我写一篇JavaStream流的文章,我说市面上不是已经有很多了吗,结果你猜他怎么说:“就想看你写的啊!”你看你看,多么苍白的喜欢啊。那就“勉为其难”写一篇吧,嘻嘻。单从“Stream”这个... 查看详情

一文入门3d视觉算法基础(代码片段)

背景知识一,基于3DMM的三维人脸重建技术概述1.1,3D人脸重建概述1.2,初版3DMM二,视觉SLAM算法基础概述2.1,视觉里程计2.2,后端优化2.3,回环检测2.4,建图三,三维点云语义分割和实例分割综述3.1,三维数据的表示方法3.2,基... 查看详情

一文带你了解推荐系统常用模型及框架

可以看KDD会议,最新推荐系统论文。推荐系统概述传统推荐模型OldschoolModel协同过滤模型通过对用户之间的关系,用户对物品的评价反馈一起对信息进行筛选过滤,从而找到目标用户感兴趣的信息。用户---商品的评分矩阵(该矩... 查看详情

一文带你了解大数据技术之hadoop(代码片段)

Hadoop概述1.Hadoop是什么2.Hadoop发展历史3.Hadoop三大发行版本3.1ApacheHadoop3.2ClouderaHadoop3.3HortonworksHadoop4.Hadoop优势5.Hadoop组成5.1HDFS架构概述5.2YARN架构概述5.3MapReduce架构概述5.4HDFS、YARN、MapReduce三者关系6.大数据技术生态体系7.推荐系统... 查看详情

一文带你搞懂内存泄漏!!!(代码片段)

好文推荐:作者:codelang检测内存是否泄漏非常简单,只要在任意位置调用Debug.dumpHprofData(file)即可,通过拿到hprof文件进行分析就可以知道哪里产生了泄漏,但dump的过程会suspend所有的java线程,导致用户界... 查看详情

一文带你了解python中的继承知识点

1类继承Python是面向对象的编程语言,因此支持面向对象的三大特性之一:继承。继承是代码重用的一种途径,Python中的继承就像现实生活中的继承一样,子类可以顺利继承父类的属性或方法。允许我们再对象之间创建复杂且类... 查看详情

身为程序员还看不懂uml类图?一文带你零基础学会看uml类图!(代码片段)

身为程序员还看不懂UML类图?一文带你零基础学会看UML类图!一,UML类图示例图二,UML类图图例三,分步解析说明3.1类图:3.2接口:3.3实现继承3.4实现接口:3.5关联关系:3.6聚合关系:3.7合... 查看详情

一文带你弄懂visualstudio:运行时库及mt/mtdmd/mdd(代码片段)

一文带你弄懂VisualStudio:运行时库及MT/MTD、MD/MDD引子什么是RuntimeLibrary?RuntimeLibrary和运行库MTMTDMDMDD的关系静态链接的多线程库动态链接的运行时库MDD、MTD和MD、MT开发时注意事项1.在多工程开发时,所有的工程使用同... 查看详情

golang|一文带你深入context

前言首先解答上一篇文章一文带你快速入门context中留下的疑惑,为什么要defercancelFunc()?funcmain(){parent:=context.Background()fori:=0;i<100;i++{godoRequest(parent)}time.Sleep(time.Second*10)}//doRequest模拟网络请求funcdoRequest(parentc 查看详情

一文带你了解知识图谱融入预训练模型哪家强?九大模型集中放送

©原创作者 |疯狂的Max01预训练模型与知识图谱1.预训练模型近年来,随着语言模型的技术发展,其在NLP领域获得巨大的成功,业界SOTA的前沿模型也大多是Transformer结构模型的变体。Transformer结构模型使用注意力机制来获取文本... 查看详情

一文带你入门flinksql(代码片段)

文章目录一文带你入门flinksql写在前面环境准备正文遇到的一些问题错误一错误二错误三一文带你入门flinksql写在前面本次实战主要是通过FlinkSQLClient消费kafka的实时消息,再用各种SQL操作对数据进行查询统计。环境准备具体... 查看详情

[github开源]基于html5实现的轻量级googleearth三维地图引擎,带你畅游世界(代码片段)

AWebGLvirtualglobeandmapengineWebGlobeWebGlobe是基于HTML5原生WebGL实现的轻量级GoogleEarth三维地图引擎。桌面版在线访问地址:https://ispring.github.io/WebGlobe/index.html移动版二维码访问(小米系统中的微信、小米默认浏览器在某些情况下存在已知bug... 查看详情

微信小程序一文带你搞懂小程序的页面配置和网络数据请求(代码片段)

文章目录页面配置页面配置文件的作用页面配置和全局配置的关系页面配置网络数据请求网络数据请求的限制配置request合法域名发起get/post请求在页面刚加载时请求数据跳过request合法域名校验关于跨域和ajax请求页面配置每个小... 查看详情

一文带你了解java编程语言的前世今生|java核心知识点整理

他们质疑你,嘲讽你,却又想成为你,取代你本文由海拥原创,首发于CSDN,参与原力计划目录👴前言☕️一、为什么Java要叫Java(咖啡)?🍺二、Java标准划分✍三、Java语言的优点🍚四... 查看详情

一文带你了解java编程语言的前世今生|java核心知识点整理

他们质疑你,嘲讽你,却又想成为你,取代你本文由海拥原创,首发于CSDN,参与原力计划目录👴前言☕️一、为什么Java要叫Java(咖啡)?🍺二、Java标准划分✍三、Java语言的优点🍚四... 查看详情