LoFTR: Detector-Free Local Feature Matching with Transformers 2021

核心思想:本文的目的是为了解决传统匹配的时候detector不鲁棒的问题,例如下图,上边是本文匹配结果,下边是superglue匹配结果:

                LoFTR: Detector-Free Local Feature Matching with Transformers 2021_第1张图片

                 可以认为是在superglue上的简单改进

 

整体pipeline:

    如下图所示,整体pipeline分为四个模块:

LoFTR: Detector-Free Local Feature Matching with Transformers 2021_第2张图片

 

网络输入两张待匹配的image,输出最终的local feature的匹配结果

 

1> local feature

     和传统的deepfeature网络类似,使用cnn网络输出dense的feature map,本文使用的是resnet-18。

     从网络中抽取两层feature map(分辨率分别为1/8和1/2,分别命名为coarse 和 fine feature map)

 

2> coarse loftr

     将1>中生成的coarse feature map pair输入到coarse loftr层对特征进行变换,生成较容易匹配的新的feature。

     具体这里使用了经典的gnn思想,

    2.1 首先将feature的位置和score信息融入coarse feature中(类似superglue)LoFTR: Detector-Free Local Feature Matching with Transformers 2021_第3张图片。生成带有位置信息的feature

    2.2 然后是self attention,分别输入每张feature map 融合局部邻域信息生成新的feature map

    2.3 再然后是cross attention,进行交叉运算,

    2.4 最终生成相对较容易匹配的 feature map

 

上述self attention 和 cross sttention 使用的是和superglue一样标准的多层gnn网络,如下:

            LoFTR: Detector-Free Local Feature Matching with Transformers 2021_第4张图片

核心思想其实就是对特征进行变换,融合本张图片的邻域信息,还有就是融入待匹配图像的信息

 

3> matching module

    该模块和super glue一样将上述生成的新的feature计算feature 距离。生成score matrix,然后对每一行每一列 sofmax归一化。生成P匹配矩阵

 

上述和super glu基本上一样,只不过不用进行detector使用的是dense 的feature map

 

4>coarse to fine module

    该部分是本文的创新,上述得到的match 是在1/8分辨率下的结果,这时候的detector其实是有误差的,感觉作者是借鉴了ETH的Patch2Pix论文

    将detector的位置进行处理,具体做法如下:

首先将上述得到的match提取出来,然后在1>中得到的较为精确的feature map上crop出w*w的window,然后将两个coarse 匹配 window 再次输入到loftr

 固定住query的window的中心作为query的feature,然后计算database的window中feature和query的中心的距离,score最高的即为精确的匹配点。

 

 

LOSS:

  最终的loss为:,其中LoFTR: Detector-Free Local Feature Matching with Transformers 2021_第5张图片和superglue一样使用最大似然,LoFTR: Detector-Free Local Feature Matching with Transformers 2021_第6张图片是位置误差

你可能感兴趣的:(2d_featurematch,3维视觉)