写在前面
最近开始做Referring Expression Comprehension方向的研究,很多论文看了以后就忘了,再解决相关问题时也想不起来论文的思路(可能读的时候就没看出来:)。为了跳出当前这种困境,我打算重新温习下读过的一些论文,并再写作的过程中整理相关思路,为以后有更好的idea打好坚实的基础。因此,带着这个目的,我的文章着眼于论文的思路、创新点以及可以借鉴的地方。废话不多说了,开始写文章!
论文笔记
论文背景
MAttNet这篇文章属于two-stage的方法,即首先利用Faster-RCNN框架提取出各个objects对应的regions,再从这些objests中选出与expressions描述最详尽的object作为referent。
以往的two-stage方法中对于language主要是整体处理,而不关心各个成分的作用;所以以此为切入点,参考VQA等任务,作者将句子分割成不同的module(eg. subject, location, relationship),并根据不同的module对object feature进行不同的处理
主要贡献
- 以往VQA等论文分割expression主要依靠现有的parser,但是这种hard的办法分割出的结果往往会有很多的错误存在;所以作者为了解决这个问题,采用了一个language attention network,用一种更加soft的方式来分割expression
- 同时,对于不同的expressions,不同的成分的贡献度也不同,所以应当为各个成分计算出一个权重
- 上面两点是作者的重点贡献,下面说的是一些小点的贡献
- 一个是attribute predict的使用,如图1所示,此举可以让visual feature和属性+类别描述提前建立一种联系,可以让后面计算score时的module学习起来更加容易
- 为了增强subject部分score的学习,作者还使用了phase attention模块来增强vision feature,增加不同object分数的区分度
- 还有一点作者考虑得很细致,即在localization模块,作者不仅考虑了自身绝absolute position,还选取了n个同类别的五个object,来把relative position也考虑进来;因为这种关系描述一般是“second left person”,所以在relationship模块是没办法考虑到这种关系的,所以这个地方考虑这点并不算多余
实验部分
总的来看,作者的实验部分还是相当solid的,文章中的各个点的对比基本都有涉及到。主要有一个地方我不是十分的确定,就是relationship module对模型的准确率提升很小,基本都在1%以下。。。当然,这对验证该模块的有效性来说应该算是足够了。
我个人认为,提升较小的原因有以下三点:
- 数据集较为简单,大部分expression仅凭subject及localization就可以确定object;如果有较为复杂的数据集,应该可以验证这个看法
- 作者relationship模块设计不是很完美,仅仅考虑了距离最近的五个object中最重要的那个。这种方法很粗暴(scene graph方法的作者们哭晕在厕所),相当于已经假设关系中涉及的object都在自己的附近(虽然数据集中大部分确实如此),对于我来说还是不可取的
- 作者在设计loss function时,也采用了contrast learning的思路,不过选取negative samples应该还可以有一定改进;并且要是能做个不采用contrast learning的对比就更好了(实际上是我不想做┑( ̄Д  ̄)┍)
可借鉴的思路
- 对于以后的expression部分,可以采用本文的做法;当然,也可以举一反三,任何可以用外部工具进行分析的技术都可以学出来
- attribute prediction模块的引入也提供了一定的思路,有点弱监督学习的味道了,间接提供了通向目标的方向
- 同类别关系的处理方法以及object feature的增强也可以借鉴,可以增强各个object最终score的区分度
参考文献
- https://arxiv.org/abs/1801.08186