深度学习结合传统几何的视觉定位方法:HSCNet简介
引言
在之前的博文中,笔者分别介绍了基于传统几何技术路线(虽然包含深度学习图像检索,但不影响整体的传统框架)以及完全基于深度学习技术路线(端到端回归出6DoF位姿)的视觉定位方法。从实际使用情况来看,目前传统的技术路线往往能够得到更为准确的定位结果,这可能是因为完全依赖深度学习进行端到端回归的方案有时忽略了传统的视觉几何关系导致的。因此也有一系列的工作开始寻求二者的结合。今天介绍一篇2020年CVPR的论文,作者通过分类+回归结合的深度神经网络(Hierarchical Scene Coordinate,HSCNet)预测出2D-3D的匹配对,再结合传统几何中PnP+RANSAC的方法计算出相机位姿。
方法
基本思路
图中给出了HSCNet的大致思路。首先对3D地图按照层级由粗到细进行分类。例如作者给出的例子是分了3层,分别对应于图中Region Labels、Subregion Labels、Scene Coordinates三幅子图。其中Region Labels对3D地图场景进行了较粗的分类,分成了4个类别,给每个3D点分配了一个Label;Subregion Labels的分类更为细致,约有十来个类别,同样给每个3D点分配了一个Label;Scene Coordinates则不再进行分类,而是记录了每个3D点的坐标。在进行Query时,HSCNet则先后在这三个粒度的层级中进行预测,最终给出2D点匹配的3D坐标,以支撑PnP+RANSAC进行6DoF的位姿估计。
网络结构设计
HSCNet具体的网络结构如图所示。网络分别有两个分类层和一个基础回归层,这对应了上述的由粗到细的三层结构。上两层的分类分支分别以类别标签作为最后的输出,基础回归层则以场景3D坐标作为最后的输出。为了使得粗粒度层产生的标签信息能够在细粒度层的预测中使用,HSCNet特别设计了一种调节层(由上图右侧所示)。首先由一个调节参数生成器接收到类别标签的输入,然后产生两个参数 和 ,再由调节层将这两个参数施加在上一个卷积层给出的输出上,施加方式为:
其中, 表示阿达玛积,即矩阵对应位置相乘。调节参数生成器由一系列1x1的卷积层构成,同样参与训练。
损失函数设计
由于HSCNet共有三层输出,分别为两层分类标签输出和一类回归坐标输出,因此HSCNet使用了两种不同的损失函数,分别对应分类和回归。分类输出的损失函数以交叉熵的形式定义,表达为:
其中, 表示第 个像素第 个分类层的one-hot形式分类标签, 则表示对应的分类输出(输入某类的概率向量)。回归输出的损失函数则以欧氏距离的形式定义,表达为:
其中, 和 分别表示第 个像素的坐标真值和预测坐标。
最终总的损失函数则为三层损失函数的加权求和:
实验结论
该方法在7-Scenes、12-Scenes、Cambridge数据集上进行了对比测试,几乎总是能得到最优的测试结果。
但在大场景数据集Aachen上效果距离传统技术路线的方法还是有一定差距。
总结
HSCNet提供了一种分类回归结合的网络结构来执行2D-3D匹配,并且得到了不错的结果。值得一提的是,这种框架还有不同形式的扩展,比如并非输入图片的所有像素,而是添加一个关键点提取过程;再比如以足够细粒度的分类器网络代替回归网络等。本篇博文对HSCNet进行了总结和介绍,希望能够对视觉定位领域的研究人员和开发者有所帮助。
References
Li X, Wang S, Zhao Y, et al. Hierarchical scene coordinate classification and regression for visual localization[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020: 11983-11992.
- 点赞
- 收藏
- 关注作者
评论(0)