NMS-Free论文----Relation Netorks for Object Detection解读

image-20220107164710361

代码链接

paper链接

个人博客

问题

本文首先提出了一个目前在目标检测领域的一个共识就是: 丰富的上下文信息和目标之间的关系能够更好的帮助网络去检测目标。但是现有的网络都没有很好的利用这个信息,或者说现有的卷积神经网络都不能很好的处理这些问题。原因是一个场景中往往有很多类别的目标,且类别的数目是不一定的,而且目标的数目也是不一定的。因此,按照之前的CNN网络很难对这些目标之间的关系进行建模。作者受到在NLP领域中非常成功的Transformer的影响,提出了一种自适应的注意力网络用于目标检测领域。作者把这个模块称为目标关系模块。作者将这个关系模块应用于两个任务,一个是instance-recognitionDuplicate-remova阶段。其中前一个阶段就是在提取proposal的特征之后,在对RoI进行调整和rescore之前。后者应用于消除重复的预测阶段,是取代了NMS,因为NMS不是一个端到端的结构。具体应用阶段如下图所示:

image-20220107165406903

解决方法

Relation Module的结构

image-20220107165648497

Relation Module的结构如上图所示。下面分别介绍W_V,W_Q,W_V, \varepsilon_G的计算方法,以及f_A^n,f_G^m,f_G^n的具体含义。

在开始介绍本文所提的Realtion Module之前,作者首先回顾了self-attention的计算方法。
v^{out}=softmax(\frac{qK^t}{\sqrt{d_k}})V
首先介绍f_A^n,其表示对是n^{th}这个RoI的外观特征(Apperance Feature)。F_G^n表示的是n^{th}这个RoI的集合特征,其实就是表示简单的四维边界框。这样,对于一个大小为N的目标集合,其特征可以表示为{(f^n_A, f^n_G)}。第n^{th}个目标关于其他所有目标的关系的计算方法如下:
f_{R}(n)=\sum_{m}w^{mn}\cdot (W_V \cdot f_A^m)
这里的w^{mn}的作用和self-attention中的前半部分基本类似。但是还是存在一些区别。其具体做法如下:
w^{mn} = \frac{w_G^{mn}\cdot w_{A}^{mn}}{\sum_{k}w_G^{kn}\cdot exp(w_A^{kn})}

w_A^{mn} = \frac{dot(W_Kf_A^m, W_Qf_A^n)}{\sqrt{d_K}}
上述式子的作用是将f_A^mf_A^n投影到相同的子空间,然后计算其相关性。其中子空间的维度为d_K

w_G^{mn}=max(0, W_G \cdot \varepsilon_G(f_G^m, f_G^n))
\varepsilon_G表示的是将(f_G^m,f_G^n)嵌入到一个高维空间中,同时为了保证一些旋转不变性和尺度不变性,作者并没有采用原始的描述bbox的参数,而是做了一下变化:
(log(\frac{|x_m-x_n|}{w_m}), log(\frac{|y_m - y_n|}{h_m}),log(\frac{w_n}{w_m}), log(\frac{h_n}{h_m}))^T
这个几何特征嵌入的空间的维度为d_g。其实这里可以将w_G^{mn}理解为公式(3)中的w_A^{mn}的权重。就是在attention的过程中,除了要考虑语义特征之外,对于那些在几何特征上关联性不大的proposal,我们也是不考虑的。换句话说就是在式子(2)中,作者同时考虑了proposal之间的几何和语义关联性。

此外,作者还引入了类似于multi-head的attention设计。其中head的数目用N_r表示。然后将这些head的输出进行拼接之后与原始的语义特征进行拼接。即
f^n_A=f_A^n+Concat(f_R^1(n),...,f_R^{N_r}(n))
上述结构就是作者设计的relation module的主要结构。

正文开头叙述的,作者在目标检测中的两个阶段使用了realtion module.下面将介绍其在不同部分的使用。

RM在Instance Recognition中的使用

原始的Instance Recognition的使用的以下结构:

image-20220107191420021

作者对此提出了一个增强版的检测头,其在两个FC层之间增加了Realtion Module子网络。其结构如下:

image-20220107191545020
image-20220107191602270

RM在Duplicate Removal中的应用

在本节中,作者首先分析了NMS的缺陷。NMS虽然简单,但是由于其采用的是贪心的策略,因此其可能得到的是次优解。此外,目标之间的关系还能对于去除重复有一定的帮助。对此,作者尝试抛弃NMS来做重复预测的去除。也就是NMS-Free的方法。作者将这个重复去除看作一个二分类问题,对于每一个基准框,只有一个被检测的目标能够与之匹配。这样的话可以将这个重复去除问题看做事一个二分类问题。与基准框绑定的预测框为correct,其余的为duplicate的预测。这个预测是能够通过网络来进行的。这个网络的输入就是各个预测的目标。每个目标有一个1-24-D的语义特征,分类分数s_0和预测得三维边界框。网络的得输出事一个二值分类分数s_1 \in [0,1],1表示的是correct,0表示得duplicate。最终边界框得分数为s_0 \cdot s_1。也就是说,一个好的预测,s_0, s_1都要大才行。这部分的子网络如下图所示:

image-20220107192723917

RM模块是这部分网络得核心模块。对于RM中得几何特征,作者首先将s_0做了一个rank embed,就是使用排名来取代原始得s_0,然后将其嵌入到高维空间,为重得维度为128-D,然后是这个RoI对应得1024-D语义特征也将其转化为128-D得特征,然后将这两个特征进行相加,作为RM模块中得语义特征,bbox作为几何特征得输入。然后将输入经过线性层和softMax之后作为s_1输出,s_1得含义其实就是这个RoI是否被选择与GT绑定。这样就得到了最终得预测输出。

但是这存在一个问题就是,这个输出得标签怎么来呢,由于预测得RoI每次都不同,且数据集中并没有关于RoI的label,这样的话网络是没办法训练的。针对这个问题,作者提出给定一个在基准框和预测的bbox之间的IoU阈值。对于匹配同一个基准狂且大于阈值的预测的bbox,选择分数最大的作为correct的bbox,其余的为duplicate的预测。这样的话就获得了bbox的标签,文中使用的是交叉熵损失来对部分网络进行训练。

文中还发现了不同的预测通常会获得不同的效果,当阈值为0.5时,mAP_{0.5}获得最大,当阈值为0.75时,mAP_{0.75}最大。因此,为了能够在COCO数据集中获得最好的性能,作者设计了多个阈值来获得一个比较均衡的性能。

解决效果

image-20220107194151453

上图中,对于每个精度组合,第一个表示的时2fc head和softNMS组合得到的结果,第二个精度表示的是2fc+RM head+SoftNMS获得的结果,第三个结果表示的是2fc+RM head + e2e得到的结果。

从上述结果中可以看出,作者提出的RM在不同阶段均有很大的提升。

消融实验

在Instance Recognition部分的消融实验

为了验证所提方法的有效性,作者对进行了丰富的消融实验。对于Instance Recognition部分,作者对是否使用几何特征,以及mutli-head中的head的个数和relation-module的个数进行了探索。其结果如下:

image-20220107194624603

对于几何特征,none的意思是不使用几何特征,unary的意思是将几何特征转化到和语义特征一致的维度,相加,其他操作与none一致。

此外,作者还验证了上述提升并不是因为网络层数加深,参数增多带来的。

image-20220107194808989

从上述结果中可以看出,使用更多参数的FC (a)VS(b)可以获得0.1mAP的提升。但是增加一层FC之后, (a)VS(c)之后,模型的性能有所下降,分析原因可能是因为层数增多之后模型有所下降。为了能够使得模型能够被更简单的训练,作者在FC层之间加入了残差层(a) VS (d),加入残差层之后模型性能得到了0.3mAP的提升。此外,作者引入了一个2048-D的全局上下文向量。(a) VS (e)也获得了0.3mAP的提升。(a) VS (f)表示的是作者引入了RM模块对于检测性能的影响。此外,作者还观察到将RoI扩大两倍之后得到的聚合的特征与原始1024-D的语义特征拼接之后,模型的检测性能也得到了一定的提升。即(a) VS (g)。检测精度从29.6提升到了30.4。作者还在此基础上增加了RM模块。即(g) VS (h)。作者还进行了(i)和(j)实验发现增加更多的残差曾和RM层对于模型的性能并没有显著的影响。

在Duplicate Removal部分的消融实验

首先也是对于这部分的RM网络的输入特征的一些实验,实验结果如下图所示:

image-20220107200459387

其中,rank f_R中none表示的是不适用s_0,s_0表示的不进行rand embeding。几何bbox中none表示的是不适用几何box,unary表示的是含义与前文相似,将其融入到语义特征中。

此外,作者还将本文所提方法与NMS进行了比较.

image-20220107201712700

从上表的结果中可以看出,本文所提方法所获得的性能在不同程度上超过了NMS和softNMS。其中e2e表示的同时训练前面提到的两个网络。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容