论文链接:https://openaccess.thecvf.com/content_CVPR_2020/papers/Luo_ASLFeat_Learning_Local_Features_of_Accurate_Shape_and_Localization_CVPR_2020_paper.pdf
代码链接:https://github.com/lzx551402/ASLFeat

主要内容

这份工作的主要目的是解决关键点和描述子联合学习中的两个缺点。首先是特征的形状信息没有得到充足考虑,其次是所提取关键点的的定位准确性不足。所提出的ASLFeat通过三个轻量且有效的改变来解决了这两个问题:1、使用了DCN(Deformable Convolutional Network)来稠密的估计并采用了局部转换的策略,2、使用固有的特征分级结构来处理精确关键点定位所涉及的空间分辨率和底层细节问题,3、使用高峰值测量的方法关联特征响应并且获得更为可靠的检测分数(通过检测分数来衡量关键点的性能)。

方法

准备工作

主干网络使用DCN(预测和实施稠密的空间转换)和D2-Net(同时学习关键帧和描述子的提取)

DCN

目标是学习动态的感受野从而获得模拟几何变化的能力。举例说来,给定一个格则网络 R \mathcal{R} R,对一个从输入特征图 x x x进行采样,对每一个空间点 p p p进行标准卷积操作后得到的输出特征 y y y可以写作:
y ( p ) = ∑ p n ∈ R w ( p n ) ⋅ x ( p + p n ) ( 1 ) y(p)=\sum_{p_n\in \mathcal{R}}w(p_n)·x(p+p_n) \qquad (1) y(p)=pnRw(pn)x(p+pn)(1)
DCN通过学习采样偏移量 { Δ p n ∣ n = 1 , . . . , N } ( N = ∣ R ∣ ) \{ \Delta p_n|n=1,...,N\}(N=|\mathcal{R}|) {Δpnn=1,...,N}(N=R)和特征幅度 { Δ m n ∣ n = 1 , . . . , N } ( N = ∣ R ∣ ) \{ \Delta m_n|n=1,...,N\}(N=|\mathcal{R}|) {Δmnn=1,...,N}(N=R)增强了这个标准卷积操作,从而上式可以写为:
y ( p ) = ∑ p n ∈ R w ( p n ) ⋅ x ( p + p n + Δ p n ) ⋅ Δ m n ( 2 ) y(p)=\sum_{p_n\in \mathcal{R}}w(p_n)·x(p+p_n+\Delta p_n)·\Delta m_n \qquad (2) y(p)=pnRw(pn)x(p+pn+Δpn)Δmn(2)
由于偏移量 Δ p n \Delta p_n Δpn通常是一个分数,该式可以通过双线性插值实现,同时特征幅度 Δ m n \Delta m_n Δmn被限制在0-1之间。在训练过程中, Δ p n \Delta p_n Δpn Δ m n \Delta m_n Δmn的初值分别设为0和0.5。

D2-Net(可参考D2-Net: A Trainable CNN for Joint Description and Detection of Local Features

提出了一种同时描述和检测的方法,针对特诊图 y ∈ R H × W × C y \in \mathbb{R}^{H×W×C} yRH×W×C,D2-Net使用按照通道的 L 2 L_2 L2归一化来获得稠密的描述子,关键点通过局部分数和通道得分两部分获得。具体说来,对 y c y^c yc中每一个位置 ( i , j ) (i,j) (i,j),局部分数可以通过下式求得:
α i j c = e x p ( y i j c ) ∑ ( i ′ , j ′ ) ∈ N ( i , j ) e x p ( y i ′ j ′ c ) ( 3 ) \alpha_{ij}^c=\frac{exp(y^c_{ij})}{\sum_{(i',j')\in \mathcal{N}(i,j)}exp(y^c_{i'j'})} \qquad (3) αijc=(i,j)N(i,j)exp(yijc)exp(yijc)(3)
其中, N ( i , j ) \mathcal{N}(i,j) N(i,j) ( i , j ) (i,j) (i,j)附近的临近点。
通道分数可以通过下式求得:
β i j c = y i j c / m a x t   y i j t ( 4 ) \beta_{ij}^c=y_{ij}^c/\underset {t}{max}\ y_{ij}^t \qquad (4) βijc=yijc/tmax yijt(4)
将局部分数和通道得分结合得到最终检测分数:
s i j = m a x t ( α i j c β i j c ) ( 5 ) s_{ij}=\underset {t}{max}(\alpha_{ij}^c\beta_{ij}^c) \qquad (5) sij=tmax(αijcβijc)(5)

带有几何约束的DCN

原始的自由型DCN预测高自由度的局部变换,比如对一个3×3的kernel生成9×2的偏差量,一方面,这样使得DCN可以模拟复杂形变,如非平面,但另一方面,会存在对局部形状过拟合的可能性。为了找到最适合的形变,通过向DCN中加入不同几何约束的方法来比较三种形状模型:1)similarity,2)affine,3)homography
在这里插入图片描述

Affine-constrained DCN

传统方法中,局部形状的模拟通常通过对旋转和尺度进行估计,再进行相似变换得到。在Affine-constrained DCN中,这种变换为分解为:
在这里插入图片描述
在HesAff的工作中,进一步引入了shearing estimation,affine transformation可以进一步分解为:
在这里插入图片描述
这里, A ′ A' A的行列式的值等于1。这里,网络主要是用来估计尺度变量 λ \lambda λ,旋转量 ( c o s ( θ ) , s i n ( θ ) ) (cos(\theta),sin(\theta)) (cos(θ),sin(θ))和shearing A A A

Homography-constrained DCN

局部变化可以通过单应(homography)变换 H H H进行更好的估计,这里采用Tensor DLT(Tenso Direct Linear Transform)的方法进行处理。
通常情况下,一个线性系统可以通过求解 M h = 0 Mh=0 Mh=0得到,这里 M ∈ R 8 × 9 M \in \mathbb{R}^{8×9} MR8×9 h h h是具有9个元素的向量,这些元素由 H H H的项组成,每一对匹配点关于 M M M的两个等式,通过将 h h h的最后一个式子置1并且忽略平移变换,即 H 33 = 1 , H 13 = H 23 = 0 H_{33}=1,H_{13}=H_{23}=0 H33=1H13=H23=0,可以重写等式为 M ^ ( i ) h ^ = b ^ ( i ) \hat{M}_{(i)} \hat{h}=\hat{b}_{(i)} M^(i)h^=b^(i),这里 M ^ ( i ) ∈ R 8 × 9 \hat{M}_{(i)}\in \mathbb{R}^{8×9} M^(i)R8×9
在这里插入图片描述
在这里插入图片描述
具体可以参考《视觉SLAM十四讲》的求单应矩阵部分(第二版p170-p172)。
最终的线性系统为:
M ^ h ^ = b ^ \hat{M} \hat{h}=\hat{b} M^h^=b^

在定义了上述的变换 T ∈ { S , A , H } T\in\{S,A,H\} T{S,A,H}后,偏差值 Δ p n \Delta p_n Δpn可以表示为:
Δ p n = T p n − p n , p n ∈ R \Delta p_n=Tp_n-p_n,p_n\in\mathbb{R} Δpn=Tpnpn,pnR

选择准确的关键点

D2-Net中的一个可能的缺陷在于它和通道中实际分布的响应只有微弱的关联,为了研究这一点,对通道引入 s o f t m a x softmax softmax,但是实验效果不佳,受到R2D2(可参考论文笔记:R2D2: Repeatable and Reliable Detector and Descriptor)的启发,作者使用高峰值作为D2-Net中关键点的衡量依据,公式(4)可以修改为:
β i j c = s o f t p l u s ( y i j c − 1 C ∑ t y i j t ) \beta_{ij}^c=softplus(y_{ij}^c-\frac{1}{C}\sum_ty^t_{ij}) βijc=softplus(yijcC1tyijt)
s o f t p l u s softplus softplus用来保证高峰值为正值。
对应的公式(3)可以修改为:
α i j c = s o f t p l u s ( y i j c − 1 ∣ N ( i , j ) ∣ ∑ ( i ′ , j ′ ) ∈ N ( i , j ) y i ′ j ′ c ) \alpha_{ij}^c=softplus(y^c_{ij}-\frac{1}{|\mathcal{N}(i,j)|}{\sum_{(i',j')\in \mathcal{N}(i,j)}y^c_{i'j'}}) αijc=softplus(yijcN(i,j)1(i,j)N(i,j)yijc)

MulDet

D2-Net的一个已知的缺陷是关键点的定位精度不高,因为这些关键点是从低分辨率的特征图(高维度的特征度,感受野过大)中获得的,为了解决这个问题,SuperPoint使用了额外的特征解码器,R2D2引入了扩张卷积,这些方法要么增加了额外的参数,要么需要消耗更多的GPU显存和算力,这里利用网络本身自带的特征图层级,从不同层的特征图中联合提取关键点。
具体说来,记不同层级的特征图为 { y ( 1 ) , y ( 2 ) , . . . , y ( l ) } \{y^{(1)},y^{(2)},...,y^{(l)}\} {y(1),y(2),...,y(l)},这些特征图经过 { 1 , 2 , . . . , 2 ( l − 1 ) } \{1,2,...,2^{(l-1)}\} {1,2,...,2(l1)}的跨度卷积得到,采用上述的检测方法,对每一层的特征图进行检测,进而得到得分地图 { s ( 1 ) , s ( 2 ) , . . . , s ( l ) } \{s^{(1)},s^{(2)},...,s^{(l)}\} {s(1),s(2),...,s(l)}。然后对每一个得分图进行上采样,使他们拥有和原始图片一样的分辨率,然后对这些分数进行加权求和:
在这里插入图片描述
为了验证所提出方法的优越性,对下图所示的四种方法进行了比较:
在这里插入图片描述
实验证明所提出方法效果最优。
注:相比U-Net中的将低层特征图和高层特征图直接进行融合,所提出的方法对底层的特征图不做处理,只对高层特征图进行处理,更好的保留了低层次结构,如角点、边等。

学习框架

主要框架如下图所示:

在这里插入图片描述
为了减少计算量,将D2-Net中采用的VGG主干网络换成了轻量级的L2-Net,参照R2D2的方法,将L2-Net最后一层的8×8卷积层换成了三个3×3的卷积层,使最后的特征图维度为128维,只有原始图片四分之一的像素。最后,使用DCN来替代最后三个卷积层(conv6,conv7,conv8),conv1,conv3和conv8三层被用来执行MulDet操作,根据经验,上式中 ω i = 1 , 2 , 3 \omega_i=1,2,3 ωi=1,2,3,(3)式中的找到临近像素 N ( i , j ) \mathcal{N}(i,j) N(i,j)的扩张率被设置为3,2,1(更偏向于在低层特征图寻找)。

损失函数设计

对一组图片配对 ( I , I ′ ) (I,I') (I,I),设定一系列的响应 C \mathcal{C} C,根据深度的真值和相机参数,通过稠密的warping I I I I ′ I' I。为了得到关键点和描述子的训练损失,使用D2-Net中的方法:
在这里插入图片描述
这里, s k ^ \hat{s_k} sk^ s k ^ ′ \hat{s_k}' sk^是针对 I I I I ′ I' I联合的检测分数, f k f_k fk f k ′ f_k' fk是它们对应的描述子, M ( ⋅ , ⋅ ) \mathcal{M}(·,·) M(,)是排序损失。相比
D2-Net使用的hardest-triplet loss,FCGF中使用的hardest-contrastive效果更好,形式如下:
在这里插入图片描述
其中, D ( ⋅ , ⋅ ) D(·,·) D(,)表示两个描述子之间的欧式距离, m p m_p mp对应positives,设置为0.2, m n m_n mn对应negatives,设置为1.0。仿照D2-Net ,设置大小为3的安全半径,以避免将空间上过于靠近的特征点视为负数。

实验结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐