本文提出一种融合邻域一致性的Transfomer结构来实现特征点的匹配(NCTR)。整个的实现流程和思想与SuperGlue相似,改进点在于考虑到了邻域一致性。邻域一致性在许多的传统图像匹配和图匹配任务中都有应用,他基于一个很重要的假设,就是对于一对匹配点,其邻域内的其他点也大概是匹配的,至少是相似程度很高的。而在SuperGlue中注意力机制是面向所有的特征点进行信息聚合,而没有考虑到局部邻域的一致性约束。为弥补上述缺陷,作者提出了NCTR
首先,与SuperGlue相同输入的是源图AAA和目标图BBB中关键点的视觉特征diA,djBd_i^A,d_j^BdiA,djB及坐标特征piA,pjBp_i^A,p_j^BpiA,pjB,其中坐标特征pip_ipi包含关键点的二维坐标(xi,yi)(x_i,y_i)(xi,yi)和置信度得分cic_ici,上述特征均有特征提取和描述器提供,如SuperPoint。位置特征经过一个编码器后与视觉特征相加构成初始的输入特征xi(0)x_i^{(0)}xi(0),编码器由多层感知机构成。
然后,要基于注意力机制进行特征聚合。注意力机制包含自注意力(self-attention)和交叉注意力(cross-attention),给定第lll层网络的两个输入xs(l)x_s^{(l)}xs(l)和xt(l)x_t^{(l)}xt(l),对于自注意力层而言,两个输入是来自于同一个图(源图或目标图)的特征;而对于交叉注意力层而言,两个输入分别来自两个图的特征。自注意力层和交叉注意力层是交替进行的,这模拟了人类在进行匹配时会相互比对的过程。
下面简述一下注意力机制的计算过程,这个是由ViT实现的。输入的特征xs(l)x_s^{(l)}xs(l)和xt(l)x_t^{(l)}xt(l)(对于自注意力层两者相同)经过一个LayerNorm层分别被线性映射到Q(l),K(l),V(l)Q^{(l)},K^{(l)},V^{(l)}Q(l),K(l),V(l),其中xs(l)→Q(l)x_s^{(l)}\rightarrow Q^{(l)}xs(l)→Q(l),而xt(l)→K(l),V(l)x_t^{(l)}\rightarrow K^{(l)}, V^{(l)}xt(l)→K(l),V(l)。我们称Q(l),K(l),V(l)Q^{(l)},K^{(l)},V^{(l)}Q(l),K(l),V(l)分别为查询向量、键向量和值向量,他们经过下式可以得到注意力计算方法
注意力可以理解为利用QKTQK^TQKT计算向量之间的相似性作为权重对VVV向量进行加权求和,一组Q(l),K(l),V(l)Q^{(l)},K^{(l)},V^{(l)}Q(l),K(l),V(l)向量得到一个注意力结果,我们称之为一个头Head\mathbf{Head}Head。
按照相同的方法,分别构建hhh个头,并将其拼接起来经过一个线性映射层就得到了多头注意力
再将多头注意力和输入的xs(l)x_s^{(l)}xs(l)拼接起来经过线性映射层得到前向输入网络结果
最后将前向输入网络的结果与输入的xs(l)x_s^{(l)}xs(l)进行残差连接(相加)就得到该层注意力网络的输出结果
其将作为下一层注意力网络的输入继续进行计算。上述过程都是SuperGlue所采用的注意力机制,而本文是将邻域一致性引入上述计算过程。
邻域一致性模块如上图(a)所示,输入的特征xs(l)x_s^{(l)}xs(l)和xt(l)x_t^{(l)}xt(l)经过内积计算和softmax层得到对应性矩阵S~\widetilde{S}S,这并不是最终要求解的匹配关系矩阵。对源图中的特征点分别随机生成对应的颜色向量Rc∈RM×cR_c\in \mathbb{R}^{M\times c}Rc∈RM×c,MMM表示源图中特征点数量,ccc表示颜色向量的长度。这里的颜色向量可不是图像中RGB这样的颜色特征,而是用于表示匹配关系的表示方式。将源图对应的颜色向量RcR_cRc与对应性矩阵的转置S~T\widetilde{S}^TST相乘,就得到变换后的颜色向量TcT_cTc,作为目标图的颜色向量。源图和目标图中的每个关键点都作为一个节点,根据上文计算得到注意力权重作为相似性度量,并选择最相似8个节点作为每个关键点的邻域,将中心节点与8个邻域节点相连构成一个图。源图和目标图对应的边特征分别为EsE_sEs和EtE_tEt(计算方式文中没有介绍),将两幅图边特征和颜色向量分别经过GNN进行信息传递,得到新的节点颜色特征表示
两个节点颜色特征表示之间的差异就表示了两幅图之间的邻域一致性,差异越小,一致性越强。计算两个节点的颜色特征表示的差值,并经过一个多层感知机就得到了邻域一致性信息FFNCFF_{NC}FFNC
将邻域一致性信息FFNCFF_{NC}FFNC与上文介绍的前向输入网络的特征FFTRFF_{TR}FFTR级联起来,在经过一个线性映射层就得到带有邻域一致性的注意力聚合信息
与普通注意力机制相同,通过与输入特征相加得到最终的结果
带有邻域一致性的注意力机制和普通的注意力机制的实现方式和比较如图(b)所示。
最后,对聚合后的特征进行匹配,源图和目标图对应的特征向量xA,xB\mathbf{x}^A,\mathbf{x}^BxA,xB,计算内积得到相似性得分矩阵SSS,并通过Sinkhorn算法得到匹配矩阵PPP。将匹配得分PijP_{ij}Pij低于阈值的点去掉,按照互为最近邻的原则选择最终的匹配结果。损失函数是对匹配矩阵进行负指数似然损失计算
本文在SuperGlue的基础上提出一种带有邻域一致性的注意力机制,邻域一致性的计算思路与《DEEP GRAPH MATCHING CONSENSUS》这篇文章非常相似,实验结果来看是有一定的性能提升的,但计算复杂度较大,对于大规模的特征匹配将会存在计算成本过高的问题。