论文地址:https://arxiv.org/abs/2304.02008
 源码地址:https://github.com/cvg/GlueStick
概述
  针对视角变化时在闭塞、无纹理、重复纹理区域的线段匹配难的问题,本文提出一种新的匹配范式(GlueStick),该方法基于深度图神经网络将点、线的描述符统一到一个框架中,利用点之间的信息将来自匹配图像之间的线进行粘合,提高了模型的联合匹配效率,表明了在单一框架中使用两种特征的互补性能大幅度提升性能。
 本文的主要贡献如下:
- 使用数据驱动的方法代替启发式几何策略进行线匹配,在统一的框架中联合表征点与线。
- 提供了一种新的架构,充分挖掘图像内特征之间的局部关联信息。
- 实验结果表明,所提出的方法比之前最先进的方法有较大提升。
模型架构

   受启发于:在匹配过程中,每个特征都可以利用其周围的特征信息来提高匹配性能,如线段可以利用周围的点来增强自己的表征能力,或者反之亦然。此外,网络在训练的过程中可以自动学习到对匹配任务有用的周围的点或者线。模型的主要框架如图2所示,主要包含三个部分:
- Front-End:使用常用的特征检测器来提取点、线与它们的描述符,然后将其编码成一个统一的线框。
- GNN:使用图神经网络来对输入特征的外观与空间信息进行编码,充分挖掘特征点之间的内部关联,输入为增强后带有更多信息的匹配特征描述符。
- Dual-Softmax:使用两个独立的softmax层来分别对点和线进行匹配,确定最后的匹配对应关系。
From Points and Lines to Wireframes
   GNN的输入为特征点的位置与描述符、表示线段链接关系的连接矩阵。第一步是建立这些连接关系并构建线框图。使用SuperPoint来预测关键点与稠密的描述符图,并通过LSD检测器检测线段,并将线段两端附近的关键点删除,避免特征冗余。
   LSD检测的线段的为断开的独立线段,为了给模型更多结构化信息,并鼓励网络按照线段的连接性进行推理,使用阈值 
    
     
      
       
        d
       
      
      
       d
      
     
    d 来将相邻端点进行合并,此过程将非结构化的线转换成了互联的线框,将每个关键点与线段端点表示为线框中的一个节点,每个节点有不同的连接性:0表示孤立节点,2表示角点。继而在节点周围使用SP生成的特征点插入,用来增强线段的表征能力,这种方式会改变线段端点的位置,而不会改变线段的数量,对于有高精度要求的下游任务,使用端点的原始位置来保证原始检测器的亚像素精度。
Attention-based Graph Neural Network (GNN)
  模型的关键部分是GNN,该模块可以将视觉和空间信息编码为一组表征能力丰富的特征描述符,通过特征描述符的相似性来建立最后的匹配关系。在网络内部,每个节点(关键点、线段端点)都与一个基于视觉外观和位置信息的描述符相关联。
 
  不妨设 A 与 B 为一对图像,对于每幅图像,网络的输入为:特征点集合 
    
     
      
       
        p
       
      
      
       \mathbf{p}
      
     
    p 的坐标 
    
     
      
       
        (
       
       
        
         x
        
        
         p
        
       
       
        ,
       
       
        
         y
        
        
         p
        
       
       
        )
       
      
      
       (x_p, y_p)
      
     
    (xp,yp),置信度 
    
     
      
       
        
         s
        
        
         p
        
       
      
      
       s_p
      
     
    sp 和视觉特征描述符 
    
     
      
       
        
         d
        
        
         
          v
         
         
          i
         
         
          s
         
        
       
       
        ∈
       
       
        
         R
        
        
         D
        
       
      
      
       \mathbf{d}^{vis}\in \mathbb{R}^D
      
     
    dvis∈RD; 线集合 
    
     
      
       
        l
       
      
      
       \mathbf{l}
      
     
    l 的端点 
    
     
      
       
        (
       
       
        
         x
        
        
         p
        
       
       
        ,
       
       
        
         y
        
        
         p
        
       
       
        )
       
       
        ,
       
       
        (
       
       
        
         x
        
        
         p
        
        
         ′
        
       
       
        ,
       
       
        
         y
        
        
         p
        
        
         ′
        
       
       
        )
       
      
      
       (x_p, y_p), (x_p^\prime, y_p^\prime)
      
     
    (xp,yp),(xp′,yp′) 与线段分数 
    
     
      
       
        
         s
        
        
         l
        
       
      
      
       s_l
      
     
    sl。线段分数可以为先检测器返回的任何值,也可以用线段的长度来表示。节点置信度 
    
     
      
       
        
         s
        
        
         p
        
       
      
      
       s_p
      
     
    sp 由关键点检测器计算而来,如果是线段端点则等于 
    
     
      
       
        
         s
        
        
         l
        
       
      
      
       s_l
      
     
    sl。
 Positional and Directional Encoding.
   首先对每个特征点的空间信息进行编码,使用MLP来学习位置编码 
    
     
      
       
        P
       
       
        
         E
        
        
         p
        
       
      
      
       PE^p
      
     
    PEp 与 
    
     
      
       
        P
       
       
        
         E
        
        
         e
        
       
      
      
       PE^e
      
     
    PEe, 对于每个点生成空间描述符 
    
     
      
       
        
         d
        
        
         p
        
       
      
      
       \mathbf{d}^p
      
     
    dp,并未每个从该节点发出的线段生成描述符 
    
     
      
       
        
         d
        
        
         e
        
       
      
      
       \mathbf{d}^e
      
     
    de。如具有3个连接点的节点将被分配一个 
    
     
      
       
        
         d
        
        
         p
        
       
      
      
       \mathbf{d}^p
      
     
    dp 与 3 个 
    
     
      
       
        
         d
        
        
         e
        
       
      
      
       \mathbf{d}^e
      
     
    de。边位置编码还需要额外的信息,即到线段另一端的偏移量,从而能够范围线段的角度与长度。
     
      
       
        
         
         
          
           
            
             
              
               
                d
               
               
                p
               
              
             
            
            
             
              
               
               
                =
               
               
                
                 
                  PE
                 
                 
                  
                 
                
                
                 p
                
               
               
                
                 (
                
                
                 
                  
                   [
                  
                  
                   
                    x
                   
                   
                    p
                   
                  
                  
                   ,
                  
                  
                   
                    y
                   
                   
                    p
                   
                  
                  
                   ,
                  
                  
                   
                    s
                   
                   
                    p
                   
                  
                  
                   ]
                  
                 
                 
                  ⊤
                 
                
                
                 )
                
               
              
             
            
           
           
            
             
              
               
                d
               
               
                e
               
              
             
            
            
             
              
               
               
                =
               
               
                
                 
                  PE
                 
                 
                  
                 
                
                
                 e
                
               
               
                
                 (
                
                
                 
                  
                   [
                  
                  
                   
                    x
                   
                   
                    p
                   
                  
                  
                   ,
                  
                  
                   
                    y
                   
                   
                    p
                   
                  
                  
                   ,
                  
                  
                   
                    x
                   
                   
                    p
                   
                   
                    ′
                   
                  
                  
                   −
                  
                  
                   
                    x
                   
                   
                    p
                   
                  
                  
                   ,
                  
                  
                   
                    y
                   
                   
                    p
                   
                   
                    ′
                   
                  
                  
                   −
                  
                  
                   
                    y
                   
                   
                    p
                   
                  
                  
                   ,
                  
                  
                   
                    s
                   
                   
                    l
                   
                  
                  
                   ]
                  
                 
                 
                  ⊤
                 
                
                
                 )
                
               
              
             
            
           
          
         
         
         
          
           (1)
          
         
        
       
       
         \begin{aligned} \mathbf{d}^{p} & =\operatorname{PE}^{p}\left(\left[x_{p}, y_{p}, s_{p}\right]^{\top}\right) \\ \mathbf{d}^{e} & =\operatorname{PE}^{e}\left(\left[x_{p}, y_{p}, x_{p}^{\prime}-x_{p}, y_{p}^{\prime}-y_{p}, s_{l}\right]^{\top}\right) \end{aligned} \tag{1} 
       
      
     dpde=PEp([xp,yp,sp]⊤)=PEe([xp,yp,xp′−xp,yp′−yp,sl]⊤)(1)
 其中 
    
     
      
       
        
         d
        
        
         p
        
       
      
      
       \mathbf{d}^p
      
     
    dp 用于初始化节点信息,而 
    
     
      
       
        
         d
        
        
         e
        
       
      
      
       \mathbf{d}^e
      
     
    de 用于线消息传递。
 Network Architecture.
    GNN 包含三种无向边:self-attention edges( 
    
     
      
       
        
         ε
        
        
         
          s
         
         
          e
         
         
          l
         
         
          f
         
        
       
      
      
       \varepsilon_{self}
      
     
    εself) 连接同一副图像之间的节点; line edges(
    
     
      
       
        
         ε
        
        
         
          l
         
         
          i
         
         
          n
         
         
          e
         
        
       
      
      
       \varepsilon_{line}
      
     
    εline) 将同一条线的端点连接; cross attention edges (
    
     
      
       
        
         ε
        
        
         
          c
         
         
          r
         
         
          o
         
         
          s
         
         
          s
         
        
       
      
      
       \varepsilon_{cross}
      
     
    εcross) 连接不同图像之间的节点;
   每个节点 
    
     
      
       
        i
       
      
      
       i
      
     
    i 的特征向量使用空间与视觉信息来初始化: 
    
     
      
       
        
        
         0
        
       
       
        
         x
        
        
         i
        
       
       
        =
       
       
        
         d
        
        
         i
        
        
         p
        
       
       
        +
       
       
        
         d
        
        
         i
        
        
         
          v
         
         
          i
         
         
          s
         
        
       
      
      
       {}^0x_i = \mathbf{d}^p_i + \mathbf{d}^{vis}_i
      
     
    0xi=dip+divis,然后通过 
    
     
      
       
        L
       
      
      
       L
      
     
    L 次 Self,Line与 Cross layers的更新迭代,节点的描述符被不断丰富与精细化,最后将每个节点的特征进行线性投影得到输出层特征。
Self and Cross Layers.
   
    
     
      
       
        
         ε
        
        
         
          s
         
         
          e
         
         
          l
         
         
          f
         
        
       
      
      
       \varepsilon_{self}
      
     
    εself 与 
    
     
      
       
        
         ε
        
        
         
          c
         
         
          r
         
         
          o
         
         
          s
         
         
          s
         
        
       
      
      
       \varepsilon_{cross}
      
     
    εcross 的定义是类似的。第 
    
     
      
       
        m
       
      
      
       m
      
     
    m 层的特征更新过程如下:
 
     
      
       
        
         
         
          
           
            
            
             
              (
             
             
              m
             
             
              +
             
             
              1
             
             
              )
             
            
           
           
            
             x
            
            
             i
            
           
           
            =
           
           
            
            
             
              (
             
             
              m
             
             
              )
             
            
           
           
            
             x
            
            
             i
            
           
           
            +
           
           
            
             ψ
            
            
             m
            
           
           
            
             (
            
            
             
              [
             
             
              
              
               
                (
               
               
                m
               
               
                )
               
              
             
             
              
               x
              
              
               i
              
             
             
              ∥
             
             
              
               a
              
              
               m
              
             
             
              
               (
              
              
               
               
                
                 (
                
                
                 m
                
                
                 )
                
               
              
              
               
                x
               
               
                i
               
              
              
               ;
              
              
               E
              
              
               )
              
             
             
              ]
             
            
            
             )
            
           
           
            ,
           
          
         
         
         
          
           (2)
          
         
        
       
       
         { }^{(m+1)} \mathbf{x}_{i}={ }^{(m)} \mathbf{x}_{i}+\psi_{m}\left(\left[{ }^{(m)} \mathbf{x}_{i} \| a_{m}\left({ }^{(m)} \mathbf{x}_{i} ; \mathcal{E}\right)\right]\right),\tag{2} 
       
      
     (m+1)xi=(m)xi+ψm([(m)xi∥am((m)xi;E)]),(2)
 其中 
    
     
      
       
        ∣
       
       
        ∣
       
      
      
       ||
      
     
    ∣∣ 代表拼接, 函数 
    
     
      
       
        
         ψ
        
        
         m
        
       
      
      
       \psi_{m}
      
     
    ψm 使用 MLP来拟合。 
    
     
      
       
        
         a
        
        
         m
        
       
       
        
         (
        
        
         
         
          
           (
          
          
           m
          
          
           )
          
         
        
        
         
          x
         
         
          i
         
        
        
         E
        
        
         )
        
       
      
      
       a_{m}\left({ }^{(m)} \mathbf{x}_{i}\mathcal{E}\right)
      
     
    am((m)xiE) 为多头注意力机制,其中:
 
     
      
       
        
         
         
          
           
            
             a
            
            
             m
            
           
           
            
             (
            
            
             
              x
             
             
              i
             
            
            
             ;
            
            
             E
            
            
             )
            
           
           
            =
           
           
            
             ∑
            
            
             
              j
             
             
              :
             
             
              (
             
             
              i
             
             
              ,
             
             
              j
             
             
              )
             
             
              ∈
             
             
              E
             
            
           
           
            
             
              softmax
             
             
              
             
            
            
             j
            
           
           
            
             (
            
            
             
              
               
                q
               
               
                i
               
               
                ⊤
               
              
              
               
                k
               
               
                j
               
              
             
             
              
               D
              
             
            
            
             )
            
           
           
            
             v
            
            
             j
            
           
           
            ,
           
          
         
         
         
          
           (3)
          
         
        
       
       
         a_{m}\left(\mathbf{x}_{i} ; \mathcal{E}\right)=\sum_{j:(i, j) \in \mathcal{E}} \operatorname{softmax}_{j}\left(\frac{\mathbf{q}_{i}^{\top} \mathbf{k}_{j}}{\sqrt{D}}\right) \mathbf{v}_{j},\tag{3} 
       
      
     am(xi;E)=j:(i,j)∈E∑softmaxj(Dqi⊤kj)vj,(3)
 其中 
    
     
      
       
        
         q
        
        
         i
        
       
      
      
       \mathbf{q}_{i}
      
     
    qi 与 
    
     
      
       
        
         k
        
        
         j
        
       
      
      
       \mathbf{k}_{j}
      
     
    kj 是由节点特征 
    
     
      
       
        
         x
        
        
         i
        
       
      
      
       x_i
      
     
    xi 和 
    
     
      
       
        
         x
        
        
         j
        
       
      
      
       x_j
      
     
    xj 生成的,在自注意力层中,
    
     
      
       
        
         k
        
        
         j
        
       
      
      
       k_j
      
     
    kj 和
    
     
      
       
        
         v
        
        
         j
        
       
      
      
       v_j
      
     
    vj 来自同一图像,而在交叉注意力中来自不同图像。自注意力允许网络利用整个图像的上下文,并解决重复结构下的模糊匹配问题。交叉注意力将相应特征在描述符空间中的距离拉近,并可以在另一幅图像中搜索类似的节点结构,以充分利用空间信息。
Line Message Passing.
   本文提出一种新的 Line Message Passing(LMP) 的方法在线 
    
     
      
       
        
         ε
        
        
         
          l
         
         
          i
         
         
          n
         
         
          e
         
        
       
      
      
       \varepsilon_{line}
      
     
    εline 之间传播信息,通过在 wireframe 结构中连接 line segments,利用第 
    
     
      
       
        i
       
      
      
       i
      
     
    i 个节点与邻域节点 
    
     
      
       
        
         N
        
        
         i
        
       
      
      
       N_i
      
     
    Ni 的连接关系在匹配图像中寻找类似的连接关系。基于 
    
     
      
       
        m
       
      
      
       m
      
     
    m 层LMP来不断更新聚合来自 两个端点{ }^{(m)} \mathbf{x}_{i} 与 
    
     
      
       
        
        
         
          (
         
         
          m
         
         
          )
         
        
       
       
        
         x
        
        
         j
        
       
      
      
       { }^{(m)} \mathbf{x}_{j}
      
     
    (m)xj本身的信息与相应的位置编码信息 
    
     
      
       
        
         d
        
        
         j
        
        
         e
        
       
      
      
       \mathbf{d}^e_j
      
     
    dje
 
     
      
       
        
         
         
          
           
            
            
             
              (
             
             
              m
             
             
              +
             
             
              1
             
             
              )
             
            
           
           
            
             x
            
            
             i
            
           
           
            =
           
           
            
            
             
              (
             
             
              m
             
             
              )
             
            
           
           
            
             x
            
            
             i
            
           
           
            +
           
           
            
             ∑
            
            
             
              j
             
             
              ∈
             
             
              
               N
              
              
               i
              
             
            
           
           
            
             
              
               ϕ
              
              
               m
              
             
             
              
               (
              
              
               
                [
               
               
                
                
                 
                  (
                 
                 
                  m
                 
                 
                  )
                 
                
               
               
                
                 x
                
                
                 i
                
               
               
                
                 ∥
                
                
                 
                  ∣
                 
                 
                  
                   (
                  
                  
                   m
                  
                  
                   )
                  
                 
                
                
                 
                  x
                 
                 
                  j
                 
                
                
                 ∥
                
               
               
                
                 d
                
                
                 j
                
                
                 e
                
               
               
                ]
               
              
              
               )
              
             
            
            
             
              ∣
             
             
              
               N
              
              
               i
              
             
             
              ∣
             
            
           
           
            ,
           
          
         
         
         
          
           (2)
          
         
        
       
       
         { }^{(m+1)} \mathbf{x}_{i}={ }^{(m)} \mathbf{x}_{i}+\sum_{j \in \mathcal{N}_{i}} \frac{\phi_{m}\left(\left[{ }^{(m)} \mathbf{x}_{i}\left\|\left.\right|^{(m)} \mathbf{x}_{j}\right\| \mathbf{d}_{j}^{e}\right]\right)}{\left|\mathcal{N}_{i}\right|},\tag{2} 
       
      
     (m+1)xi=(m)xi+j∈Ni∑∣Ni∣ϕm([(m)xi
                       ∣(m)xj
                       dje]),(2)
 其中 
    
     
      
       
        
         ϕ
        
        
         m
        
       
      
      
       \phi_{m}
      
     
    ϕm 由MLP来实现,
    
     
      
       
        ∣
       
       
        
         N
        
        
         i
        
       
       
        ∣
       
      
      
       |\mathcal{N}_{i}|
      
     
    ∣Ni∣ 为节点 
    
     
      
       
        i
       
      
      
       i
      
     
    i 的邻域节点之和,此处使用邻域节点的信息的均值来更新当前节点信息,也可以对邻域节点增加注意力机制,从经验数据上看书这样会增加模型的计算量,而对性能的提升不大。
Dual-Softmax for Points and Lines
  最近一些工作表明,dual-softmax相较于Sinkhorm 算法有更好的性能,为此本文采用独立的dual-softmax处理点与线的匹配。此外,再一次使用GNN来对所有的节点(点与线)进行一次匹配:对于A图中的所有节点 
    
     
      
       
        
         f
        
        
         i
        
        
         A
        
       
       
        ∈
       
       
        
         R
        
        
         D
        
       
      
      
       \mathbf{f}_i^A\in \mathbb{R}^D
      
     
    fiA∈RD 与 
    
     
      
       
        
         f
        
        
         j
        
        
         B
        
       
       
        ∈
       
       
        
         R
        
        
         D
        
       
      
      
       \mathbf{f}_j^B\in \mathbb{R}^D
      
     
    fjB∈RD,每个节点的分配矩阵 
    
     
      
       
        
         S
        
        
         p
        
       
      
      
       \mathbf{S}^p
      
     
    Sp:
 
     
      
       
        
         
         
          
           
            
             S
            
            
             
              i
             
             
              j
             
            
            
             p
            
           
           
            =
           
           
            
             
              (
             
             
              
               f
              
              
               i
              
              
               A
              
             
             
              )
             
            
            
             ⊤
            
           
           
            
             f
            
            
             j
            
            
             B
            
           
           
            .
           
          
         
         
         
          
           (5)
          
         
        
       
       
        \mathbf{S}_{i j}^{p}=\left(\mathbf{f}_{i}^{A}\right)^{\top} \mathbf{f}_{j}^{B} .\tag{5}
       
      
     Sijp=(fiA)⊤fjB.(5)
 使用可学习的参数来对分配矩阵增加 dustbin 的行与列(参考super glue)来表示非匹配点,然后对所有行和所有列进行softmax:
 
     
      
       
        
         
         
          
           
            
             S
            
            
             final 
            
            
             p
            
           
           
            =
           
           
            
             
              
               
                softmax
               
               
                
               
              
              
               
                r
               
               
                o
               
               
                w
               
              
             
             
              
               (
              
              
               
                S
               
               
                p
               
              
              
               )
              
             
             
              ⊙
             
             
              
               
                softmax
               
               
                
               
              
              
               
                c
               
               
                o
               
               
                l
               
              
             
             
              
               (
              
              
               
                S
               
               
                p
               
              
              
               )
              
             
            
           
           
            .
           
          
         
         
         
          
           (6)
          
         
        
       
       
        \mathbf{S}_{\text {final }}^{p}=\sqrt{\operatorname{softmax}_{\mathrm{row}}\left(\mathbf{S}^{p}\right) \odot \operatorname{softmax}_{\mathrm{col}}\left(\mathbf{S}^{p}\right)} .\tag{6}
       
      
     Sfinal p=softmaxrow(Sp)⊙softmaxcol(Sp).(6)
 其中 
    
     
      
       
        ⊙
       
      
      
       \odot
      
     
    ⊙ 为逐元素相乘, 选择两个节点之间的匹配分数高于阈值 
    
     
      
       
        η
       
      
      
       \eta
      
     
    η 的视为匹配点。线的匹配过程是类似的,使用两个端点来表示一条线段 
    
     
      
       
        
         f
        
        
         s
        
       
       
        ∈
       
       
        
         R
        
        
         D
        
       
      
      
       \mathbf{f}_{s}\in\mathbb{R}^D
      
     
    fs∈RD 与 
    
     
      
       
        
         f
        
        
         e
        
       
       
        ∈
       
       
        
         R
        
        
         D
        
       
      
      
       \mathbf{f}_{e}\in\mathbb{R}^D
      
     
    fe∈RD, 为了消除端点顺序对匹配的影响,选择分配矩阵中得分比较大的一项作为最后的选择值,如图4所示:
 
 
     
      
       
        
         
         
          
           
            
             
              
               
                
                 S
                
                
                 
                  i
                 
                 
                  j
                 
                
                
                 l
                
               
               
                =
               
               
                max
               
               
                
               
               
                
                 (
                
                
                 
                  
                   (
                  
                  
                   
                    f
                   
                   
                    s
                   
                   
                    A
                   
                  
                  
                   )
                  
                 
                 
                  ⊤
                 
                
                
                 
                  f
                 
                 
                  s
                 
                 
                  B
                 
                
                
                 +
                
                
                 
                  
                   (
                  
                  
                   
                    f
                   
                   
                    e
                   
                   
                    A
                   
                  
                  
                   )
                  
                 
                 
                  ⊤
                 
                
                
                 
                  f
                 
                 
                  e
                 
                 
                  B
                 
                
                
                 ,
                
               
               
                
                 
                  
                   (
                  
                  
                   
                    f
                   
                   
                    s
                   
                   
                    A
                   
                  
                  
                   )
                  
                 
                 
                  ⊤
                 
                
                
                 
                  f
                 
                 
                  e
                 
                 
                  B
                 
                
                
                 +
                
                
                 
                  
                   (
                  
                  
                   
                    f
                   
                   
                    e
                   
                   
                    A
                   
                  
                  
                   )
                  
                 
                 
                  ⊤
                 
                
                
                 
                  f
                 
                 
                  s
                 
                 
                  B
                 
                
                
                 )
                
               
               
                .
               
              
             
            
           
          
         
         
         
          
           (7)
          
         
        
       
       
        \begin{array}{r} \mathbf{S}_{i j}^{l}=\max \left(\left(\mathbf{f}_{s}^{A}\right)^{\top} \mathbf{f}_{s}^{B}+\left(\mathbf{f}_{e}^{A}\right)^{\top} \mathbf{f}_{e}^{B},\right. \left.\left(\mathbf{f}_{s}^{A}\right)^{\top} \mathbf{f}_{e}^{B}+\left(\mathbf{f}_{e}^{A}\right)^{\top} \mathbf{f}_{s}^{B}\right) . \end{array}\tag{7}
       
      
     Sijl=max((fsA)⊤fsB+(feA)⊤feB,(fsA)⊤feB+(feA)⊤fsB).(7)
 最后通过公式6的dual-softmax来得到最后的分配矩阵。
Ground Truth Generation
为了得到点的 Ground True(GT) 值 M p \mathcal{M}^p Mp,利用相机参数与深度图,将关键点从一幅图像中warp到另外一幅图像中,如果重投影点落在现有关键点的一个小邻域内,则认为两个关键点在空间中是接近的,则认为他们是匹配的。
  线段匹配的一大挑战就是对一些碎片化、和部分遮挡的的线段生成高质量的标签数据。不妨设图像
    
     
      
       
        A
       
      
      
       A
      
     
    A 与 
    
     
      
       
        B
       
      
      
       B
      
     
    B 分别包含 
    
     
      
       
        M
       
      
      
       M
      
     
    M 和 
    
     
      
       
        N
       
      
      
       N
      
     
    N 条线段,表示为 
    
     
      
       
        A
       
       
        :
       
       
        =
       
       
        {
       
       
        1
       
       
        ,
       
       
        .
       
       
        .
       
       
        .
       
       
        ,
       
       
        M
       
       
        }
       
      
      
       \mathcal{A}:=\{1, ...,M\}
      
     
    A:={1,...,M}, 
    
     
      
       
        B
       
       
        :
       
       
        =
       
       
        {
       
       
        1
       
       
        ,
       
       
        .
       
       
        .
       
       
        .
       
       
        ,
       
       
        N
       
       
        }
       
      
      
       \mathcal{B}:=\{1, ...,N\}
      
     
    B:={1,...,N}, 则匹配线段表示为 
    
     
      
       
        
         M
        
        
         l
        
       
       
        =
       
       
        {
       
       
        (
       
       
        i
       
       
        ,
       
       
        j
       
       
        )
       
       
        ⊂
       
       
        A
       
       
        ×
       
       
        B
       
       
        }
       
      
      
       \mathcal{M}^l=\{(i, j)\subset\mathcal{A}\times \mathcal{B}\}
      
     
    Ml={(i,j)⊂A×B},对于图 
    
     
      
       
        A
       
      
      
       A
      
     
    A 中的每条线段 
    
     
      
       
        
         I
        
        
         i
        
        
         A
        
       
      
      
       \mathbf{I}_i^A
      
     
    IiA,从线段中采样 
    
     
      
       
        K
       
      
      
       K
      
     
    K 个点 
    
     
      
       
        [
       
       
        
         x
        
        
         
          i
         
         
          ,
         
         
          1
         
        
        
         A
        
       
       
        ,
       
       
        .
       
       
        .
       
       
        .
       
       
        ,
       
       
        
         x
        
        
         
          i
         
         
          ,
         
         
          K
         
        
        
         A
        
       
       
        ]
       
      
      
       [\mathbf{x}_{i,1}^A, ..., \mathbf{x}_{i,K}^A]
      
     
    [xi,1A,...,xi,KA]。如果这个点没有深度值或者重投影到B图时没有深度值,则将该点剔除。同时,这些点应该不属于遮挡区域,使用图 A 中的点warp到图B,然后计算深度值偏差度,如果大于阈值则认为该点是遮挡点:
 
     
      
       
        
         
         
          
           
             Occluded 
           
           
            =
           
           
            
             
              ∣
             
             
              d
             
             
              
               (
              
              
               
                X
               
               
                i
               
              
              
               )
              
             
             
              −
             
             
              
               d
              
              
               B
              
             
             
              ∣
             
            
            
             
              d
             
             
              B
             
            
           
           
            >
           
           
            
             T
            
            
             occlusion 
            
           
           
            ,
           
          
         
         
         
          
           (8)
          
         
        
       
       
        \text { Occluded }=\frac{\left|d\left(\mathbf{X}_{i}\right)-d^{B}\right|}{d^{B}}>T_{\text {occlusion }},\tag{8}
       
      
      Occluded =dB
                     d(Xi)−dB
                     >Tocclusion ,(8)
   然后生成一个邻近矩阵来统计A图中,第 
    
     
      
       
        i
       
      
      
       i
      
     
    i 条线段有多少个点能成功warp到B图中 
    
     
      
       
        j
       
      
      
       j
      
     
    j 条线段附近:
 
     
      
       
        
         
         
          
           
            
             C
            
            
             
              i
             
             
              ,
             
             
              j
             
            
            
             B
            
           
           
            =
           
           
            
             ∑
            
            
             
              k
             
             
              =
             
             
              1
             
            
            
             K
            
           
           
            1
           
           
            
             (
            
            
             valid
            
            
             
            
            
             
              (
             
             
              
               x
              
              
               
                i
               
               
                ,
               
               
                k
               
              
              
               B
              
             
             
              )
             
            
            
             ∧
            
            
             
              d
             
             
              ⊥
             
            
            
             
              (
             
             
              
               x
              
              
               
                i
               
               
                ,
               
               
                k
               
              
              
               B
              
             
             
              ,
             
             
              
               l
              
              
               j
              
              
               B
              
             
             
              )
             
            
            
             <
            
            
             
              T
             
             
              
               d
              
              
               i
              
              
               s
              
              
               t
              
             
            
            
             )
            
           
          
         
         
         
          
           (9)
          
         
        
       
       
        \mathbf{C}_{i, j}^{B}=\sum_{k=1}^{K} \mathbb{1}\left(\operatorname{valid}\left(\mathbf{x}_{i, k}^{B}\right) \wedge d_{\perp}\left(\mathbf{x}_{i, k}^{B}, \mathbf{l}_{j}^{B}\right)<T_{\mathrm{dist}}\right)\tag{9}
       
      
     Ci,jB=k=1∑K1(valid(xi,kB)∧d⊥(xi,kB,ljB)<Tdist)(9)
其中 
    
     
      
       
        1
       
       
        (
       
       
        ⋅
       
       
        )
       
      
      
       1(\cdot)
      
     
    1(⋅) 为指示函数,
    
     
      
       
        
         d
        
        
         ⊥
        
       
       
        (
       
       
        ⋅
       
       
        ,
       
       
        ⋅
       
       
        )
       
      
      
       d_{\perp}(\cdot,\cdot)
      
     
    d⊥(⋅,⋅) 为垂直与点线距离。
    
     
      
       
        
         T
        
        
         
          d
         
         
          i
         
         
          s
         
         
          t
         
        
       
      
      
       T_{\mathrm{dist}}
      
     
    Tdist 为像素为单位的距离阈值,用于控制 GT 的严格程度,
    
     
      
       
        
         C
        
        
         A
        
       
      
      
       C^A
      
     
    CA 的定义与 
    
     
      
       
        
         C
        
        
         B
        
       
      
      
       C^B
      
     
    CB 类似,为此定义一个具有最小重叠阈值 
    
     
      
       
        
         T
        
        
         
          o
         
         
          v
         
         
          e
         
         
          r
         
         
          l
         
        
       
      
      
       T_{overl}
      
     
    Toverl 的成本矩阵:
 
     
      
       
        
         
         
          
           
            
             C
            
            
             
              i
             
             
              ,
             
             
              j
             
            
           
           
            =
           
           
            
             {
            
            
             
              
               
                
                 
                  ∞
                 
                 
                  ,
                 
                
               
              
              
               
                
                 
                   if 
                 
                 
                  
                   C
                  
                  
                   
                    i
                   
                   
                    ,
                   
                   
                    j
                   
                  
                  
                   A
                  
                 
                 
                  <
                 
                 
                  
                   T
                  
                  
                   overl 
                  
                 
                 
                  ∨
                 
                 
                  
                   C
                  
                  
                   
                    j
                   
                   
                    ,
                   
                   
                    i
                   
                  
                  
                   B
                  
                 
                 
                  <
                 
                 
                  
                   T
                  
                  
                   overl 
                  
                 
                
               
              
             
             
              
               
                
                 
                  −
                 
                 
                  
                   C
                  
                  
                   
                    i
                   
                   
                    ,
                   
                   
                    j
                   
                  
                  
                   A
                  
                 
                 
                  
                   C
                  
                  
                   
                    j
                   
                   
                    ,
                   
                   
                    i
                   
                  
                  
                   B
                  
                 
                 
                  ,
                 
                
               
              
              
               
                
                  otherwise. 
                
               
              
             
            
           
          
         
         
         
          
           (10)
          
         
        
       
       
        \mathbf{C}_{i, j}=\left\{\begin{array}{ll} \infty, & \text { if } \mathbf{C}_{i, j}^{A}<T_{\text {overl }} \vee \mathbf{C}_{j, i}^{B}<T_{\text {overl }} \\ -\mathbf{C}_{i, j}^{A} \mathbf{C}_{j, i}^{B},& \text { otherwise. } \end{array}\right.\tag{10}
       
      
     Ci,j={∞,−Ci,jACj,iB, if Ci,jA<Toverl ∨Cj,iB<Toverl  otherwise. (10)
 最后使用匈牙利算法来求解该分配问题,分配结果 
    
     
      
       
        (
       
       
        i
       
       
        ,
       
       
        j
       
       
        )
       
       
        ∈
       
       
        
         M
        
        
         l
        
       
      
      
       (i, j)\in \mathbb{M}^l
      
     
    (i,j)∈Ml 为匹配特征,未被匹配的特征都被标记为未匹配状态。
损失函数
一般使用带有 hard negative mining 的 triplet-ranking-loss作为损失函数,而线段经常出现重复结构,这会导致不稳定的 hard negative,因此使用点与线的分配的负对数似然来作为损失函数:
 
     
      
       
        
         
         
          
           
            L
           
           
            =
           
           
            
             
              NLL
             
             
              
             
             
              
               (
              
              
               
                S
               
               
                final 
               
               
                p
               
              
              
               ,
              
              
               
                M
               
               
                p
               
              
              
               )
              
             
             
              +
             
             
              NLL
             
             
              
             
             
              
               (
              
              
               
                S
               
               
                final 
               
               
                l
               
              
              
               ,
              
              
               
                M
               
               
                l
               
              
              
               )
              
             
            
            
             2
            
           
          
         
         
         
          
           (11)
          
         
        
       
       
        \mathcal{L}=\frac{\operatorname{NLL}\left(\mathbf{S}_{\text {final }}^{p}, \mathcal{M}^{p}\right)+\operatorname{NLL}\left(\mathbf{S}_{\text {final }}^{l}, \mathcal{M}^{l}\right)}{2} \tag{11}
       
      
     L=2NLL(Sfinal p,Mp)+NLL(Sfinal l,Ml)(11)
NLL  ( A , M ) = − ∑ ( i , j ) ∈ M log  A i , j − ∑ i ∈ I log  A i , N + 1 − ∑ j ∈ J log  A M + 1 , j (12) \begin{aligned} \operatorname{NLL}(\mathbf{A}, \mathcal{M})= & -\sum_{(i, j) \in \mathcal{M}} \log \mathbf{A}_{i, j} -\sum_{i \in \mathcal{I}} \log \mathbf{A}_{i, N+1}-\sum_{j \in \mathcal{J}} \log \mathbf{A}_{M+1, j} \end{aligned}\tag{12} NLL(A,M)=−(i,j)∈M∑logAi,j−i∈I∑logAi,N+1−j∈J∑logAM+1,j(12)
实验结果


 
 
 
 
 
 






![[考研数据结构]第3章之栈的基本知识与操作](https://csdnimg.cn/release/blog_editor_html/release2.2.4/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N2N8)












