GRNet: Learning Multi-view Camera Relocalization with Graph Neural Networks

驭势科技, 北京大学机器感知重点实验室, 北京长城航空测控技术研究所

  • 本文提出了一种使用多视角图像进行相机重定位的图神经网络。
  • 该网络可以使得不连续帧之间进行信息传递,相比于只能在相邻前后帧之间进行信息传递的 序列输入LTSM,其能捕获更多视角信息以进行重定位。因此LSTM只是一种GNN的特殊情况。
  • 为了让GNN能适应于重定位任务,作者重新设计了节点、边、嵌入函数,使用CNN和GNN分别用于特征提取和知识传播。
  • 设计了一个通用的基于图的损失函数,超越了原来的连续视角约束,引入了多视角约束

为什么使用GNN呢? 因为GNN可以处理非结构性输入。LSTM和视觉里程计可以提供前后相邻帧的时间一致性约束,且LSTM并不能保持长时间的记忆。而GNN可以提供不连续多视角帧之间的时间一致约束。

计算机视觉中的多视图几何如何学_归一化

整体框架:

计算机视觉中的多视图几何如何学_计算机视觉中的多视图几何如何学_02

论文方法

1.重新设计GNN

  • 节点:是一个3维的张量,每个节点计算机视觉中的多视图几何如何学_初始化_03的特征计算机视觉中的多视图几何如何学_计算机视觉中的多视图几何如何学_04
  • 边初始化:初始化的时候连接所有的节点对,不放过任何可能的两个节点之间连接,后期会有边池化操作简化计算量
    这一步相比于LSTM的相邻节点相连具有优越性。

2.信息传播

计算机视觉中的多视图几何如何学_归一化_05

  • 首先使用CNN生成要从xi传播到xj的消息:
    计算机视觉中的多视图几何如何学_归一化_06
    这里的fm是两层CNN,将xi和xj连接后输入fm得到传播消息
  • 进行消息选择,其实就是计算边权重对边加权:
    计算机视觉中的多视图几何如何学_初始化_07
  • 信息融合:即连接到x_i的所有边的加权平均:
    计算机视觉中的多视图几何如何学_归一化_08
  • 计算好融合的信息后,就是将节点v_i的特征x_i更新为其值了
    计算机视觉中的多视图几何如何学_计算机视觉中的多视图几何如何学_09

3.多层动态更新

多层更新引入了边池化机制,去除冗余连接。

计算机视觉中的多视图几何如何学_初始化_10

  • 多层图神经网络:
    使用ResNet34的四个模块计算机视觉中的多视图几何如何学_初始化_11对节点进行更新:
    计算机视觉中的多视图几何如何学_初始化_12
    使用图神经网络计算机视觉中的多视图几何如何学_计算机视觉中的多视图几何如何学_13对边进行更新:
    KaTeX parse error: Undefined control sequence: \ at position 14: V^l_{fused},\̲ ̲epsilon ^l=f^l_…
  • 自适应边池化:
    只保留余弦相似度最高的前k个节点之间的连接:
    计算机视觉中的多视图几何如何学_初始化_14
  • 位姿估计:
    使用全局平均池化(GAP)对每层GNN的输出进行池化(融合各层特征输出),然后逐通道连接,通过两个全连接网络进行位置和姿态的估计。

4.GNN损失函数

模型的输出包含预测的位姿以及位姿之间的连接(边),因此损失函数包含两项
计算机视觉中的多视图几何如何学_计算机视觉中的多视图几何如何学_15

5.实验结果:

室内数据集:7scenes

计算机视觉中的多视图几何如何学_计算机视觉中的多视图几何如何学_16

室外数据集:cambridge,RobotCar

计算机视觉中的多视图几何如何学_归一化_17

计算机视觉中的多视图几何如何学_归一化_18