驭势科技, 北京大学机器感知重点实验室, 北京长城航空测控技术研究所
-
本文提出了一种使用多视角图像进行相机重定位的图神经网络。
-
该网络可以使得不连续帧之间进行信息传递,相比于只能在相邻前后帧之间进行信息传递的 序列输入和LTSM,其能捕获更多视角信息以进行重定位。因此LSTM只是一种GNN的特殊情况。
-
为了让GNN能适应于重定位任务,作者重新设计了节点、边、嵌入函数,使用CNN和GNN分别用于特征提取和知识传播。
-
设计了一个通用的基于图的损失函数,超越了原来的连续视角约束,引入了多视角约束
为什么使用GNN呢? 因为GNN可以处理非结构性输入。LSTM和视觉里程计可以提供前后相邻帧的时间一致性约束,且LSTM并不能保持长时间的记忆。而GNN可以提供不连续多视角帧之间的时间一致约束。
整体框架:
论文方法
1.重新设计GNN
2.信息传播
-
首先使用CNN生成要从xi传播到xj的消息:
mj→i=fm(xi,xj)
这里的fm是两层CNN,将xi和xj连接后输入fm得到传播消息
-
进行消息选择,其实就是计算边权重对边加权:
aj→i=fatten(xi,xj)其中fatten是逐通道计算的余弦相似度cs:aj→i(k)=σ(cs(vec(xi(k)),vec(xj(k))))σ为归一化到01
-
信息融合:即连接到x_i的所有边的加权平均:
miagg=Ni1eij∈ϵ∑aj→i⊗mj→i⊗表示逐通道相乘
-
计算好融合的信息后,就是将节点v_i的特征x_i更新为其值了
xi′=fu(xi,miagg)其中fu为更新函数,实际上是CNN和fm相同但是参数不共享
3.多层动态更新
多层更新引入了边池化机制,去除冗余连接。
-
多层图神经网络:
使用ResNet34的四个模块fcl (l=1,2,3,4)对节点进行更新:
Vl=fcl(Vl−1)
使用图神经网络fgl对边进行更新:
KaTeX parse error: Undefined control sequence: \
at position 14:
V^l_{fused},\̲
̲epsilon ^l=f^l_…
-
自适应边池化:
只保留余弦相似度最高的前k个节点之间的连接:
cj→i=cs(maxpool(xi),maxpool(xj))
-
位姿估计:
使用全局平均池化(GAP)对每层GNN的输出进行池化(融合各层特征输出),然后逐通道连接,通过两个全连接网络进行位置和姿态的估计。
4.GNN损失函数
模型的输出包含预测的位姿以及位姿之间的连接(边),因此损失函数包含两项
L=Nv1vi∈Vpose∑d(ζi,ζ^i)+Ne1eij∈Epose∑d(ωij,ω^ij)第一项是绝对位姿损失,第二项是有连接的节点之间的相对位姿损失。d(ζi,ζ^i)=∣∣ti−t^i∣∣1∗e−βp+βp+∣∣ri−r^i∣∣1∗e−γp+γp
5.实验结果:
室内数据集:7scenes
室外数据集:cambridge,RobotCar