文章目录
一、介绍
论文地址:https://arxiv.org/abs/1711.11575
CVPR2018的文章,通过引入object relation module来刻画object之间的关系,借助attention来提升object detection的效果。
1.1 对象间的关系
视觉领域:上写文信息或目标之间的关系能提升目标检测:
视觉领域已经充分认识到上下文信息或对象之间的关系有助于目标识别。但是大多数这样的作品都是在深度学习流行之前完成的。在深度学习时代,利用对象关系进行检测学习的研究进展缓慢,大多数方法仍然侧重于分别识别对象。
深度学习领域利用对象关系建模发展缓慢的原因:
1.对象-对象关系很难建模:对象可能有任意的图像位置、尺度、类别、数量可能会随着不同的图像而变化。
2.CNN本身为层级结构,难以建立关系。这也是图网络逐渐流行的原因。
1.2 对象关系模块
(1)基本注意力模块(自然学习领域)
注意力模块可以通过从一组元素(例如,源句中的所有单词)中汇集信息(或特征)来影响单个元素(例如,机器翻译中的目标句中的一个单词)。在任务目标的驱动下,注意力汇总权重可以自动学习。注意力模块可以对元素之间的依赖关系建模,且不需要对它们的位置和特征分布做过多的假设。
(2)关系模块(本文提出的用于目标检测的注意力模块,受NLP领域的启发)
1.改进点:
关系模块建立在一个基本注意力模块上,与基本注意力模块有一个明显的区别是关系模块的基本元素是对象/目标而不是单词。对象具有二维的空间排列和变化的尺度/纵横比,它们的位置(几何特征),比一维句子中的位置更复杂、重要。对象关系模块将原注意力模块的权重扩展为两部分1.原权重;2.新几何权重。后者对对象之间的空间/几何关系进行建模,只考虑对象间的相对几何关系,使得模块具有平移不变的性质(一个理想的对象识别属性)。新的几何权重在实验中被证明是重要的。
2.优点:
它具有注意力模块的相同优点。它有可变数量的输入,可以并行运行,完全可微,并且是就地的(输入和输出之间没有维度变化)。因此它可以作为一个基本的构建块在任何体系结构中灵活地使用。
3.作用:
应用于先进的目标检测体系结构中,显示出显著的提升。它用于改进实例识别步骤和去除重复步骤。识别步骤,对象关系模块可以实现所有对象的联合推理,提高识别精度。消除重复步骤,传统的NMS方法被一个轻量级的关系网络所取代和改进,从而产生了第一个端到端对象检测器。
4.总结:
1.原则上本文方法与大多数基于CNN的对象检测方法是完全不同的,并且是互补的。它利用了一个新的维度:一组对象同时被处理、推理和相互影响,而不是单独识别。
2.对象关系模块是通用的:不局限于对象检测,例:实例分割,动作识别,对象关系检测,标题,VQA等。
二、相关工作
(1)后处理过程中使用对象关系:
大多数早期作品都将对象关系作为后处理步骤。通过对象关系对检测到的目标重新打分。这些方法在深度学习时代之前取得了一定的成功,但在深度卷积神经网络中并不有效。一个可能的原因是深层卷积神经网络通过大的感受野隐式地合并了上下文信息。
(2)顺序关系建模:
最近的一些研究采用顺序推理(LSTM和空间记忆网络(SMN))对对象关系进行建模。在检测过程中,前面检测到的对象用于帮助接下来对象的检测。这种方法的训练通常是复杂的,更重要的是,它们没有显示出改善最先进的目标检测方法的证据。
我们的方法对于多个对象是并行的,并且很自然地适应并改进了现代的目标检测器。
(3)人类为中心的场景:
一些工作关注人与物的关系,它们通常需要关系的附加注释,例如人类行为。
我们的方法对于对象-对象关系是通用的,不需要额外的监督。
(4)重复删除:
深度学习进行对象检测的方法取得了显著的进步,但是最有效的方法仍然依赖贪婪和手工制作的非最大抑制(NMS)。
GossipNet:试图通过将一组对象作为一个整体进行处理,来学习重复删除。然而它的网络是专门为任务设计的,非常复杂(深度>80),精度虽可与NMS媲美,但计算成本较高。虽然它原则上允许端到端学习,但没有实验证据显示。
我们的关系模块与它有相同的思想但简单、通用。网络简单,有小的计算开销,超过了SoftNMS。更重要的是,我们首次证明了端到端对象检测学习的可行性和有效性。
(5)NLP领域和物理系统建模中的注意力模块:
注意力模块最近已经成功地应用于NLP领域和物理系统建模。注意力模块可以很好地捕获这些问题中的长期依赖关系。在NLP中,最近出现了用注意力模型代替递归神经网络的趋势,使并行实现和更有效的学习成为可能。
我们的方法是由这些工作所激发的,将注意力模型扩展到对象检测。对于视觉对象关系的建模,对象的位置(一般意义上的几何特征)扮演着复杂而重要的角色。对象关系模块引入了一种新的几何权重来捕捉对象之间的空间关系,新的几何权重是平移不变的。
三、对象关系模块
3.1 注意力模块
输入由dk维度的 query和key以及dv维度的value组成,在query和所有key之间执行点积,以获得它们的相似性。通过softmax计算在各个key上的注意力分配概率分布(值上的权重),然后再与原有的V相乘–>聚焦,V代表整个图片的信息(视觉特征和几何特征),softmax中计算注意力在各个物体的分配概率(即各个物体与当前物体的关联度,得到各个物体对当前物体的影响)
例:给定一个query-q,所有的key(被压缩到矩阵K中)和value(被压缩到V中),输出值被加权平均到输入值,
3.2 对象关系模块
(1)对象:几何特征fG、外观特征fA、关系特征fR
1)几何特征fG: 在本文中是一个4维对象边界框
2)外观特征fA: 取决于任务。
3)关系特征fR:
输入集:N个对象(每个对象包含外观特征和几何特征),整个对象集相对于第n个对象的关系特征即第n个对象的关系特征fR(n):
第n个对象的关系特征是其他对象的外观特征经过WV线性变换后的加权和。,m属于[1,N]
①关系权重:
表明其他对象m对该对象n的影响,分母是对分子的归一化。第m个object对第n个object的关系权重是由外观权重和几何空间权重共同决定的。
公式3中使用公式5-几何权重,使得我们的方法有别于基本的注意力模型。
②外观权重:
和公式1一样是由点积计算得到:WK和WQ都是矩阵,将m,n的外观特征fA映射到低维空间(实际操作是降维,维度为dk),然后通过向量的内积来衡量两个object外观特征的相似性。分母表示降维之后的维度(典型的64维)。
③几何权重:
首先:将两个对象的几何特征嵌入到高维表示,ξG函数用来将第m个object和第n个object之间的几何特征映射到高维空间(典型的64维),计算m和n之间的相对位置。为了使其不受平移和缩放变换的影响,使用了一个四维的相对几何特征:
这个4-维特征通过ξG函数方法嵌入到高维表示中,它计算不同波长的余弦和正弦函数,嵌入后的特征维数为dg。
其次:将嵌入的特征通过WG变换为标量权重,并使用ReLU非线性函数。
(2)对象关系模块:
对象关系模块聚合总共Nr个关系特征,并通过加法增强输入对象的外观特征,
Concat(·)用于聚合多个关系特征。为了匹配通道维度,每个 的输出通道设置为输入特征
维度的1/Nr。
对象关系模块算法及流程:
对象关系模块参数量、计算量:
公式2中的每个关系函数由四个矩阵(WK、WQ、WG、WV)参数化,共4Nr。设df为输入特征fA的维数。参数个数为
根据算法1,计算复杂度为
典型参数值为Nr= 16, dk= 64, dg= 64。一般来说,N和df通常以百位为单位。当应用于现代对象检测器时,总体计算开销很低。
总结:
对象关系模块具有相同的输入和输出维度,因此可以看作是在任何网络体系结构中使用的基本构建块。它是完全可微的,因此可以很容易地通过反向传播进行优化。
四、用于目标检测的Relation Network
4.1 对象检测管道回顾
大多数现代目标检测器,工作中都使用了四步管道:
①生成完整的图像特征:深度卷积骨干网络从输入图像中提取全分辨率卷积特征(通常比输入图像分辨率小16倍)。骨干网络在ImageNet分类任务上进行预训练,并在检测训练中进行微调。
②生成区域建议的特征:ROI pooling从整个卷积特征中为稀疏区域提案提取固定分辨率区域特征。
③实例识别:预测提案属于某一对象类别的概率,并通过回归对提案边界框进行细化。
④重复删除:删除对同一对象的重复检测。这通常通过非最大抑制(NMS)实现。尽管NMS在实践中运行良好,但它是手工设计的,而且是次优的,它禁止用于对象检测的端到端学习。
在最后两个步骤中,我们使用对象关系模块,它增强了实例识别和重复删除。这两个步骤都可以很容易地进行训练,可以单独进行,也可以联合进行,联合训练进一步提高了精度,产生了第一个端对端通用目标检测系统。
4.2 关系模块用于实例识别
输入:ROI池化后的提议特征,提议边界框。
处理:(fc层+RM)×r
输出:实例分类分数和边界框回归后的位置
对象关系模块可以在不改变特征维数的情况下变换提案的1024-d特征。因此它可以在公式9中的任意fc层之后使用任意次数。
实例识别的增强关系模块:2fc+RM (RM for relation module)
在公式10中,r1和r2表示一个关系模块被重复多少次。关系模块还需要所有提案的边界框作为输入,这里忽略了这个符号。增加关系模块可以有效提高实例识别的准确性。
4.3关系模块用于重复删除
重复删除网络:
去除重复是一个二类分类问题。对于每个真值框,一个检测对象与之相匹配则被归类为正确,其他与之匹配的则被归类为副本。
重复删除网络(如图):输入是一组检测到的对象(每个对象实例识别的输出,都有1024-d特征、分类得分s0、边界框)。重复删除网络输出每个对象的二进制分类概率s1∈【0,1】(1表示正确,0表示重复)。s0s1的乘积是最终的分类分数。
网络有三个步骤:
①首先,融合1024-d特征和分类得分,生成外观特征。
②其次,关系模块转换所有对象的外观特征。
③最后,每个对象变换后的特征通过一个线性分类器和sigmoid输出概率∈[0,1]。
关系模块是网络的核心,它利用来自多个来源的信息(边界框、原始外观特征和分类得分)实现有效的端到端学习。此外,分类分数的使用也很重要。
rank特征:
将分数转换为排名而不是使用它的值是一种最有效的方法。具体地说,输入N个对象按照它们的分类分数降序排列。相应地,每个对象都被赋予一个rank∈[1,N]。然后,使用与嵌入几何特征相同的方法,将标量秩嵌入到更高维度的128-d特征中。
将rank特征和原有的1024-d外观特征转化为128-d,并加入关系模块作为输入。
哪个对象是正确的?
给定一些被检测到的对象,一个预定义的阈值η,检测框与真值框的IOU≥η且得分最高的检测框是正确的,其他的是重复的。
我们的方法和NMS相比有一个好处:去除重复的步骤可以根据需要自适应地学习,而不是使用预设的参数。
重复删除网络的训练:
损失:网络应用二元交叉熵损失训练(两个分数相乘,见上图)。对所有对象类别上的所检测框的损失进行平均。训练一个单一的网络用于检测所有对象类别。
端到端训练:如图中的红色箭头所示,反向传播的梯度可以传递到原始的1024-d特征和分类分数中,这些特征和分类分数可以进一步传播回骨干网络中。
注意,重复分类问题是非常不平衡的。大多数检测都是重复的,正确检出率通常< 0.01。然而简单的交叉熵损失工作得很好,这是由于最后得分是s0s1相乘,因为大多数检测都有非常小的s0(大部分< 0.01),因此s0s1也很小。它们的损失值L =−log(1−s0s1)(对于不正确的对象)和反向传播的梯度∂L/∂s1= s0/(1−s0s1)的值也非常小,对优化影响不大。直观地说,训练集中于使用大的s0进行一些真实的重复检测。这与最近的焦点focal损失工作具有类似的思想,其中大多数不重要的损失项是向下加权的,并在优化过程中扮演次要角色。
重复删除网络的推断:
同一删除重复网络可应用于所有对象类别。在实践中,大多数探测的原始得分s0在大多数对象类中接近于0。去除这些无关类和检测后,最终的识别精度不受影响。最近的NMS工作使用了一个非常深入和复杂的网络(深度可达80),这比我们的效率要低得多(因为NMS是顺序的)。
4.4 端对端目标检测
端到端训练简单地将区域建议损失、4.2节中的实例识别损失和4.3节中的重复分类损失等权重组合起来。端到端训练显然是可行的。
两个问题:
①首先,实例识别步骤和重复删除步骤的目标似乎是矛盾的。前者期望所有与同一真值框匹配的对象都有高分。后者只希望其中一个这样做。这一表面上的冲突通过最终得分s0s1的乘法行为得到了调和,使得两个目标相辅相成而非冲突。实例识别步骤只需要产生高分s0就可以很好地检测(无论是否重复)。删除重复项的步骤只需要为重复项生成较低的s1分。只要两个分数中的一个是正确的,大多数非对象或重复检测就是正确的。
②其次,去除重复步骤中的二分类真值标签依赖于实例识别步骤的输出,并在端到端训练过程中发生变化。
通过实验验证(5.3),端到端训练提高了识别精度。
五、实验
所有实验都是在80个对象类别的COCO检测数据集上进行的。使用80k个训练图像和35k个验证图像。对于骨干网络,使用ResNet-50和ResNet101。除非另有说明,否则使用ResNet-50。
5.1 关系模块用于实例识别
本节所有实验均采用IoU阈值为0.6的NMS去除重复。
表比较了基准2fc(不使用关系模块)和不同参数下的2fc + RM(添加关系模块的增强)。
消融研究在三个关键参数上进行:
(1)使用几何特征:在公式5中使用几何特征与两种简单实现进行了比较。结果表明,我们的方法是最好的,虽然三个都超过了基线。
(2)使用关系:更多的关系可以稳步提高准确度。改善在Nr= 16处达到饱和,达到+2.3 mAP增益。
(3)关系模块的数量:使用更多的关系模块可以稳步提高精度,达到+3.2mAP增益。由于这也增加了参数和计算的复杂性,因此默认情况下使用r1= 1, r2= 1。
性能改善来自于更多的参数或深度吗?
表通过在宽度或深度上增强基线2fc (a)来回答这个问题,使其复杂性与添加关系模块的复杂性相当。一个更宽的2fc(1432-d, b)只引入了很小的改进(+0.1 mAP)。较深的3fc©会降低精度(-0.6 mAP),这可能是由于训练的难度造成的。为了使训练更容易,使用了残差块(d),但只观察到适度的改善(+0.3 mAP)。当使用全局上下文时(e, 2048-d的全局平均池化特性与分类之前的第二个1024-d实例特性相连接),没有任何改进。
相比之下,我们的方法(f)显著提高了准确性(+2.3 mAP)。
我们还考虑了另一个基线,它将原始的池化特征与来自一个2* 更大的Ro I(g)的特征连接起来,性能从29.6提升到30.4mAP,表明了一种更好的利用上下文线索的方法。另外,我们把这个新头和关系模块结合起来,替代2fc,得到了32.5mAP,比默认(f)(31.9mAP)好了0.6。这表明使用较大的窗口上下文和关系模块大多是互补的。
当使用更多的剩余块,并且头部网络变得更深(i)时,准确性不再增加。然而,当使用更多的关系模块(j)时,准确度会不断提高。比较表明,关系模块是有效的,其影响超越了网络容量的增加。
5.2 关系模块用于重复删除
表研究不同输入特征对关系模块的影响:
使用η= 0.5,我们的方法提高了映射到30.3。当不使用rank特征时,mAP下降到26.6。当类分数s0以类似的方式取代rank时(分数嵌入到128-d), mAP下降到28.3。当不使用1024-d外观特征时,mAP稍微下降到29.9。这些结果表明,rank特征对最终的准确性至关重要。
当不使用几何特征时,mAP下降到28.1。这些结果验证了我们使用几何权重的有效性。
比较我们的方法与NMS、SoftNMS–目前最先进的去除重复的方法:
5.3 端对端目标检测
表中的最后一行比较了端到端学习与实例识别和重复删除的单独训练。端到端学习提高了+0.5mAP的精度.
最后方法在一些更强的骨干网络/更好的检测体系结构,在ResNet-101中使用Faster RCNN,将2fc头替换为2fc+RM头(默认参数),我们的方法在COCO 上改进了2.5%mAP。利用端对端训练的去重网络,进一步提高了0.5 mAP的精度。对COCO测试-dev的改进也是类似的。在更强的基线上,例如DCN和FPN],通过特征增强网络和端对端训练去除重复,在精度上有了适度的提高。
六、结论
综合消融实验表明,当对单个物体进行学习时,关系模块已经学会了物体之间缺失的信息。然而,还不清楚在关系模块中学到了什么,尤其是当多个关系模块叠加在一起时。
为了理解,我们研究了表1©中的{r1, r2} = {1,0} head中的(only)关系模块。图4显示了一些具有代表性的具有高关联权重的示例。左边的例子表明,在同一地面上重叠的几个物体(自行车)对中心物体有贡献。正确的例子表明这个人对手套有贡献。虽然这些例子是直观的,但我们对关系模块如何工作的理解是初步的,留待以后的工作。