论文地址: https://arxiv.org/abs/1712.07629
代码地址:https://github.com/magicleap/SuperPointPretrainedNetwork
背景与意义
人工标记特征点需要大量的工作量,且在特征点的语义信息不明确时难以标记;为此提出一种自监督网络框架,基于数据驱动策略来同时获取图像中的特征点位置与描述符,同时本文提出一种Homographic Adaptation策略来增强特征点的复检率与跨域鲁棒性;
- 在合成的虚拟数据集上进行有监督训练一个全卷机网络得到初始特征点检测器MagicPoint;
- 使用多尺度变换方法Homographic Adaptation对真实场景warp得到不同视角下的图像,再使用使用MagicPoint来得到多个视图的特征点,再将多个视角得到的特征点反warp回原视图作为伪标签;
- 图像对之间的位姿表示为warp单应性矩阵,再将已知位姿的图像对送入SuperPoint提取特征点与描述子;
- 将原图进行warp得到图像对,将图像对送入SuperPoint中得到图像对的特征点,利用图像对之间的位姿关系与伪标签来构建自监督训练损失,监督模型训练;
网络结构
SuperPoint Architecture结构主要包含三个部分:权值共享特征提取、兴趣点检测、描述符生成;
其中权值共享特征提取模块:使用VGG网络来得到特征图
H
8
×
W
8
×
128
\frac{H}{8}\times\frac{W}{8}\times128
8H×8W×128;
兴趣点检测模块: 通常可以通过反卷积或者双线性插值来得到原图大小的图像,但这样会导致计算量剧增,因此本文采用了一个“子像素卷积”(像素洗牌)的方式对图像进行上采样:先使用一个CNN将特征图转换为 H 8 × W 8 × 65 \frac{H}{8}\times\frac{W}{8}\times65 8H×8W×65 的特征图,其中每个点代表特征图中每一点对应原图的的8*8邻域中的点是否为特征点,以及第65维代表该邻域内无特征点,在channel维度做softmax,将非特征点dustbin剔除,最后将 H 8 × W 8 × 64 \frac{H}{8}\times\frac{W}{8}\times64 8H×8W×64的概率图reshape为原图 H × W H\times W H×W大小 ;
描述子生成模块:使用一个CNN将特征图转换为
H
8
×
W
8
×
c
1
\frac{H}{8}\times\frac{W}{8}\times c_1
8H×8W×c1 的稀疏描述子图,再通过双三次多项式插值得到原图大小的描述符(代码中使用双线性插值完成),然后通过
L
2
L_{2}
L2得到正则化后描述符;
损失函数
损失函数包含两个部分:特征点检测损失
L
p
\mathcal{L}_{p}
Lp 与描述子损失
L
d
\mathcal{L}_{d}
Ld;
L
(
X
,
X
′
,
D
,
D
′
;
Y
,
Y
′
,
S
)
=
L
p
(
X
,
Y
)
+
L
p
(
X
′
,
Y
′
)
+
λ
L
d
(
D
,
D
′
,
S
)
(1)
\begin{aligned} \mathcal{L}\left(\mathcal{X}, \mathcal{X}^{\prime}, \mathcal{D}, \mathcal{D}^{\prime} ; Y, Y^{\prime}, S\right)= \mathcal{L}_{p}(\mathcal{X}, Y)+\mathcal{L}_{p}\left(\mathcal{X}^{\prime}, Y^{\prime}\right)+\lambda \mathcal{L}_{d}\left(\mathcal{D}, \mathcal{D}^{\prime}, S\right) \end{aligned}\tag{1}
L(X,X′,D,D′;Y,Y′,S)=Lp(X,Y)+Lp(X′,Y′)+λLd(D,D′,S)(1)
其中
X
\mathcal{X}
X 代表输入图像中得到的特征点检测的结果,
Y
Y
Y 代表伪标签;
X
′
\mathcal{X}^{\prime}
X′ 与
Y
′
Y^{\prime}
Y′ 表示经过单应性变换 H 矩阵 warp后的对应图像的特征点检测结果与其对应的伪标签;
特征点损失:
L
p
(
X
,
Y
)
=
1
H
c
W
c
∑
h
=
1
;
w
=
1
H
c
,
W
c
l
p
(
x
h
w
;
y
h
w
)
]
(2)
\mathcal{L}_{p}(\mathcal{X}, Y)=\frac{1}{H_{c} W_{c}} \sum_{h=1; w=1}^{H_{c}, W_{c}} l_{p}\left(\mathrm{x}_{h w} ; y_{h w}\right)]\tag{2}
Lp(X,Y)=HcWc1h=1;w=1∑Hc,Wclp(xhw;yhw)](2)
其中特征点损失用交叉熵损失来衡量:
l
p
(
x
h
w
;
y
)
=
−
log
(
exp
(
x
h
w
y
)
∑
k
=
1
65
exp
(
x
h
w
k
)
)
(3)
l_{p}\left(\mathrm{x}_{h w} ; y\right)=-\log \left(\frac{\exp \left(\mathrm{x}_{h w y}\right)}{\sum_{k=1}^{65} \exp \left(\mathrm{x}_{h w k}\right)}\right)\tag{3}
lp(xhw;y)=−log(∑k=165exp(xhwk)exp(xhwy))(3)
描述子损失:
L
d
(
D
,
D
′
,
S
)
=
1
(
H
c
W
c
)
2
∑
h
=
1
;
w
=
1
H
c
,
W
c
∑
h
′
=
1
;
w
′
=
1
H
c
,
W
c
l
d
(
d
h
w
,
d
h
′
w
′
′
;
s
h
w
h
′
w
′
)
(4)
\begin{array}{l} \mathcal{L}_{d}\left(\mathcal{D}, \mathcal{D}^{\prime}, S\right)= \frac{1}{\left(H_{c} W_{c}\right)^{2}} \sum_{h=1; w=1}^{H_{c}, W_{c}} \sum_{h^{\prime}=1; w^{\prime}=1}^{H_{c}, W_{c}} l_{d}\left(\mathbf{d}_{h w}, \mathbf{d}_{h^{\prime} w^{\prime}}^{\prime} ; s_{h w h^{\prime} w^{\prime}}\right) \end{array}\tag{4}
Ld(D,D′,S)=(HcWc)21∑h=1;w=1Hc,Wc∑h′=1;w′=1Hc,Wcld(dhw,dh′w′′;shwh′w′)(4)
其中
l
d
l_{d}
ld 为Hinge-loss
l
d
(
d
,
d
′
;
s
)
=
λ
d
∗
s
∗
max
(
0
,
m
p
−
d
T
d
′
)
+
(
1
−
s
)
∗
max
(
0
,
d
T
d
′
−
m
n
)
(5)
\begin{aligned} l_{d}\left(\mathbf{d}, \mathbf{d}^{\prime} ; s\right) &=\lambda_{d} * s * \max \left(0, m_{p}-\mathbf{d}^{T} \mathbf{d}^{\prime}\right) +&(1-s) * \max \left(0, \mathbf{d}^{T} \mathbf{d}^{\prime}-m_{n}\right) \end{aligned}\tag{5}
ld(d,d′;s)=λd∗s∗max(0,mp−dTd′)+(1−s)∗max(0,dTd′−mn)(5)
若
s
=
1
s=1
s=1 时,说明两点是匹配点,则只考虑第一项,此时两点的描述符特征向量
d
T
d^{T}
dT 与
d
′
d^{\prime}
d′ 两者越接近,惩罚越小,若
s
=
0
s=0
s=0 时, 说明两点是非匹配点,则 两点的描述符特征向量
d
T
d^{T}
dT 与
d
′
d^{\prime}
d′ 差异越大,惩罚越小,
m
p
m_{p}
mp 与
m
n
m_{n}
mn 为超参数,
λ
d
\lambda_{d}
λd 是用于平衡正负样本(不匹配点多)之间的数量权重;
s
h
w
h
′
w
′
=
{
1
,
if
∥
H
p
h
w
^
−
p
h
′
w
′
∥
≤
8
0
,
otherwise
(6)
s_{h w h^{\prime} w^{\prime}}=\left\{\begin{array}{ll} 1, & \text { if }\left\|\widehat{\mathcal{H} \mathbf{p}_{h w}}-\mathbf{p}_{h^{\prime} w^{\prime}}\right\| \leq 8 \\ 0, & \text { otherwise } \end{array}\right.\tag{6}
shwh′w′={1,0, if ∥∥∥Hphw
−ph′w′∥∥∥≤8 otherwise (6)
其中
s
h
w
h
′
w
′
s_{h w h^{\prime} w^{\prime}}
shwh′w′ 为指示矩阵;
P
h
w
P_{hw}
Phw 为单元格
(
h
,
w
)
(h, w)
(h,w) 中心像素的位置,式6的含义为,原图先检测出的特征点以单应性矩阵H做单应性变换后到对应图像的位置与原图以H做单应性变换后检测的特征点的的距离不超过8(在邻域内),说明两点是匹配上的;