论文解读:Relation Networks for Object Detection

论文链接:https://arxiv.org/abs/1711.11575 

代码链接:https://github.com/msracver/Relation-Networks-for-Object-Detection

这篇是CVPR 2018的文章,通过引入object的关联信息,在神经网络中对object的relations进行建模。主要贡献点有两条: 
1. 提出了一种relation module,可以在以往常见的物体特征中融合进物体之间的关联性信息,同时不改变特征的维数,能很好地嵌进目前各种检测框架,提高性能 
2. 在1的基础上,提出了一种特别的代替NMS的去重模块,可以避免NMS需要手动设置参数的问题


研究背景

目前主流的目标检测方法大多遵循 R-CNN模式,找到一组稀疏的候选区域,对候选区域执行目标分类和边界框回归,最后用NMS消除重复检测。

relation module进展缓慢的原因之一是物体和物体之间的关系存在很多不规范的问题,物体以不同的类别、不同的尺寸,位于图像的任意位置,其数量也可能因不同图像而异。

本文提出的方法受到NLP领域的attention module启发,主要区别在于原先的注意力权重扩展到两个部分:外观特征权重和几何权重。

同时relation module不限于目标检测中的应用,在其它视觉任务中如实例分割、行为识别、对象关系检测、字幕、VQA(视觉问答)等领域也可以广泛应用。

举例

假设现在有一个显示屏幕,问这是电脑显示屏还是电视屏幕,该怎么判断?如果单纯把屏幕取出来,确实很难回答这个问题,但是如果结合周围的东西,就很好解决了……比如,放在客厅环境、旁边有茶几的是电视,而旁边有键盘和鼠标的是电脑显示屏;又或者,宽度有沙发那么大的是电视,而只比一般座椅稍大一点的是电脑屏…… 
总之,周边其他物体的信息很可能对某个物体的分类定位有着帮助作用,这个作用在目前的使用RoI的网络中是体现不出来的,因为在第二阶段往往就把感兴趣的区域取出来单独进行分类定位了。这篇文章作者就考虑改良这个情况,来引入关联性信息。 
放一个直观的例子,蓝色代表检测到的物体,橙色框和数值代表对该次检测有帮助的关联信息。

2. object relation module

这个模块的特点就是联合所有object的信息来提升每个object recognition的准确性。它的模块示意图如下图所示:

这里的f_{A}^{n}代表第n个物体的apperance特征,其实就是物体自身的大小、颜色、形状这些外观上的特征,而f_{G}^{n}对应的是是第n个物体的geometry特征,代表物体的位置和大小(bounding box)。这里有多个relation模块(数量为N_{r}),可以类比神经网络中我们每层都会有很多不同的通道,以便于学习不同种类的特征。每个relaiton模块都用所有object的两个特征做输入,通过以下公式计算出当前区域特征和图像中所有候选特征的关系特征后再concat,和原来的外观特征以加法融合,作为物体的最终特征。

 

计算了整个对象集相对于第n个对象的关系特征f_{R}(n),它是由各个所有物体的外观特征经过W_{V}的维数变化后,又赋予不同的权重加权求和得到的。w^{mn}即为物体和物体之间的关系权重,几何特征的作用体现在在关系权重中。第m个物体对于当前第n个物体的权重w^{mn}求法如下:

公式分母是个归一化的项,重点看分子,w^{mn}主要是由两者决定的,那就是第m个物体对于当前第n个物体在geometry上的权重 w_{G}^{mn}和在apperance上的权重 w_{A}^{mn},它们各自的求法如下:

这里的W_{Q}W_{K}是矩阵,起到变化维度的作用。把原始矩阵映射到子空间中,用点积衡量两个object的apperance特征关系。点积后的特征维度为d_{k}

w_{G}^{mn}类似于ReLU操作,首先进行升维,将4维的几何特征(关于x,y,w,h的公式)升到d_{g}维空间,这里的\varepsilon _{e}是通过另一篇论文(Attention Is All You Need)中提到的位置编码方法将低维数据映射到了高维,主要由一些cosine函数和sine函数构成。这里对x和y做了log操作,原因在于这里要处理的xm与xn、ym与yn之间的距离要比目标检测算法中的距离远,因为目标检测算法中的距离是预测框和roi之间的距离,而这里是不同预测框(或者说是不同roi)之间的距离,因此加上log可以避免数值变化范围过大。

变换公式为:

然后经过

解析:pos对应输入的位置,i这里在翻译上是维度。我在很多讨论该论文的帖子上看到,i有很多人有疑问,到底是指什么维度。在Vaswani的Attention is what you need论文中,是用上面的公式。举个例子,如pos=3,d(model)=128,那么3对应的位置向量如下

用位置向量与输入词向量进行相加这样的特征组合方式,因此位置向量的长度必须为d(model)。

在得到一个关系特征fR后,这篇文章最后的做法是融合多个(Nr个,默认是16)关系特征后再和图像特征fA做融合,如公式6所示。这里有个细节是关于关系特征的融合方式,这里采用的concat,主要原因在于计算量少,因为每个fR的通道维度是fA的1/Nr倍,concat后的维度和fA相同。假如用element-wise add的方式进行融合,那么每个fR的维度和fA都一样,这样的加法计算量太大。

总结一下这个模块的求法:

  • 分别根据两个特征计算它们各自的权重
  • 由两个特征的权重获得总权重
  • 按照第m个物体对当前物体的总权重,加权求出各个relation模块
  • concat所有relation模块,与原来的特征叠加,最终输出通道数不变的新特征 

应用 

现在大多数目标检测器,可以分为以下四步:

  • 生成全图特征;
  • 生成局部特征;
  • 执行实例识别;
  • 执行去重操作

目标关系模块在第二模块中可以直接应用到FC层之后,即从原来的: 

改变为:

框架图:

\gamma _{1},\gamma _{2}代表重复次数。关系模块也需要所有候选的“边界框”作为输入。这个符号在这里被忽略了。

添加关系模块可以有效地提高实例识别的准确性。

目标关系模块可以在去重步骤中,代替NMS

作者把duplicate removal当成一个二分类问题,对于每个ground truth,只有一个detected object被归为correct类,而其余的都是duplicate。 

这个模块的输入是instance recognition模块的output,也就是一系列的detected objects,它们每个都有1024-d的特征,预测框分数s_{0}(这个socre对应公式9和10中最后一行的输出socre),还有bbox(预测框的坐标),而输出则是s0∗s1得到的最终分类分数。

那么s_{1} 是怎么算的呢?首先,对于detected objects作者按照它们的scores对它们进行排名,然后将scores转化为rank,据作者说这样更加有效,随后rank信息会按照类似\varepsilon _{e}的求法映射到高维特征,然后这个rank特征和原先的appearence 特征通过W_{fR}W_{f}函数转变为128维特征,最后和输入的bbox特征相加,作为relation module的输入,输出通过sigmoid函数,得到s_{1}

如何判断哪个detected object是correct,而哪些是duplicate?在这里,作者设置了一个阈值\eta,凡是IoU(交并比)超过该阈值的样本都会被选择;接着,在选择的样本中,IoU值最大的为correct,其余为duplicate。当对定位要求比较高的时候,可以设置较高的\eta,相应的被选择的样本就会发生变化,s_{1}也会发生变化,直接影响最终的分数。

 

如上图,两个目标分别有多个选择框,现在要去掉多余的选择框。分别在局部选出最大框,然后去掉和这个框IOU>0.7的框。 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值