Hierarchical Scene Coordinate Classification and Regressionfor Visual Localization
芬兰阿尔托大学 , Facebook AI Research
这篇论文的工作应该是在DSAC++ 的基础上改的,且仅仅对其场景坐标回归网络进行了改进。在大场景中也是SOTA,同时模型足够紧凑,解决了模型尺寸和容量的问题。未来可以考虑综合其他模块的改进进一步提升性能(如RANSAC模块,使用DSAC++的自适应RANSAC,或NG-RANSAC)。
DSAC++中,使用一个场景坐标回归网络对像素点对应的场景坐标进行稠密预测,然后使用pnp-RANSAC求解出相机位姿。
本文认为DSAC++的场景坐标回归网络泛化性不够,只适用于小场景。在大场景中感受野受限(DSAC的image patches输入),增大感受野(DSAC++)又容易过拟合。
由此本文提出HSC-Net,一种由粗到细层级结构的场景坐标回归网络。解决了场景坐标回归网络容易产生局部场景混淆的问题。
整体框架与DSAC++一样,但是对其场景坐标回归网络进行了改进,使用分层架构。
改进后的场景坐标回归网络由两个分类分支和一个回归分支,
分类分支分别为每个像素预测其区域标签(即属于哪个区域),两层分类分支则可以达到对场景进行层级分割的目的,最后得到sub regions。回归分支则在此基础上再对其场景坐标的偏移量进行回归预测。使用偏移量而不是绝对场景坐标,因为这样网络更容易拟合。
网络的详细结构:
base regression network 还是VGG_like的,但是在每一个输出层之前都加入了条件层(conditioning layer)。 条件层的想法来自于视觉推理的论文《FiLM: Visual reasoning witha general conditioning layer》。
条件层的结构如图:
首先有一个条件参数生成器(conditioning parameter generator),其以分类分支预测的标签图L为输入,输出缩放参数 γ \gamma γ和平移参数 β \beta β。
然后条件层使用这两个参数对特征图X做线性变换:
f
(
x
,
l
)
=
γ
(
l
)
⊙
x
+
β
(
l
)
f(x,l) =\gamma(l)\odot x+\beta(l)
f(x,l)=γ(l)⊙x+β(l)
其中 ⊙ \odot ⊙表示矩阵逐点相乘.
损失函数:
两个分类分支和一个回归分支,所以是三个损失函数项:
L
=
w
1
L
c
1
+
w
2
L
c
2
+
w
3
L
r
L=w_1L^1_c+w_2L^2_c+w_3L_r
L=w1Lc1+w2Lc2+w3Lr
其中分类损失是交叉熵损失,回归损失是场景坐标的二范数。回归损失是主要损失项,因此w3较大.
训练用的场景坐标和区域标签是对3D点云使用k-means聚类制作的。每个像素对应一个场景坐标和一个层级聚类的标签,代表其对应的区域。
实验结果:
室内外三个数据集:
相比DSAC++,室内室外都更准确。注意DSAC++使用了分阶段的训练方式且需要训练两天,其RANSAC机制也是经过精心设计的,本文只是用最简单的RANSAC。后期可以考虑加入DSAC++的RANSAC机制或者NG-RANSAC?
相比于regression only的方法,在训练是其损失值明显更小,说明分类分支预测的局部位置标签(subregion label)是有用的。
即使没有使用数据扩增,HSC-Net在仅仅改进了场景回归网络的前提下,精度依然小幅超越DSAC++。
在大场景下模型仍然足够紧致。