Super Point 笔记-- 网络结构
接续上一篇文章,上一篇文章中已经大体介绍了Superpoint 网络的框架,本文将继续介绍superpoint内的网络部分
Super Point 结构
与其他网络结构不同,Superpoint 网络结构作用于大尺寸的完整的图片上。网络分为三部分。 1)共享的编码器。2)特征点提取解码器。3)描述子解码网络。
1)共享编码
共享编码部分使用了VGG风格的编码结构。这一部分主要是为了减少图片尺寸。编码器(encoder)包含了卷积层,pooling层以及激活函数。网络结构中的三个Max Pooling将图像尺寸从H,W降低至H/8,W/8。此时,在编码器输出的featuremap中,每一个channel代表了原图中的8x8个像素值,在文章中被称为一个cell。
2)特征点解码器
在上一部分中的encoder将HxWx1的原始图像编码为一个H/8xW/8x65维度的featuremap。65维代表这88可能的特征点的概率以及在该区域不出现特征点的垃圾桶通道(dustbin)。经过一个channel维度的softmax操作后,dustbin通道被去除变成了H/8xW/864的featuremap,最后将其reshape变成HW维度。
3)描述符解码器
描述符解码器将输出一个HxWxD维度的featuremap。个人理解,此处就是对应了图片HW维度上的每一个点,并对图片上的点进行描述,文中的
D为256。
Loss函数
本文中的loss函数如下
L
(
X
,
X
′
,
D
,
D
′
;
Y
,
Y
′
,
S
)
=
L
p
(
X
,
Y
)
+
L
p
(
X
′
,
Y
′
)
+
λ
L
d
(
D
,
D
′
,
S
)
.
\ L(X,X^{'} ,D,D^{'};Y,Y^{'},S)=L_{p}(X,Y)+L_{p}(X^{'},Y^{'})+\lambda L_{d}(D,D^{'},S).
L(X,X′,D,D′;Y,Y′,S)=Lp(X,Y)+Lp(X′,Y′)+λLd(D,D′,S).
本文中的loss函数分为两个部分,
L
p
\ L_{p}
Lp 表示为特征点loss,
L
d
\ L_{d}
Ld表示为描述符的loss函数。
特征点检测的loss函数
L
p
\ L_{p}
Lp是一个交叉熵loss。
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
)
\ L_{p}(X,Y)= \frac{1}{H_{c}W_{c}} \sum_{h=1,w=1}^{H_{c},W_{c}} l_{p}(x_{hw};y_{hw})
Lp(X,Y)=HcWc1∑h=1,w=1Hc,Wclp(xhw;yhw)
在这里面
l
p
(
x
h
w
;
y
)
=
−
l
o
g
e
x
p
(
x
h
w
y
)
∑
k
=
1
65
e
x
p
(
x
h
w
k
)
\ l_p(x_{hw};y) =-log \frac{exp(x_{hwy})}{\sum_{k=1}^{65} exp(x_{hwk})}
lp(xhw;y)=−log∑k=165exp(xhwk)exp(xhwy)
在
L
p
\ L_p
Lp中,相当于对64个channel中和y的真值位置做了一个交叉熵函数。这样将会找到64个通道中的特征点的位置,并映射回HW上。
描述符的Loss
未完待续