【论文笔记】视觉重定位 场景坐标回归 Efficient multi-output scene coordinate prediction 2020

Efficient multi-output scene coordinate prediction for fast and accurate camera relocalization from a single RGB image

巴黎中央理工

这是一篇混合方法,使用重新设计的CNN网络提取patches的特征,

然后输入到回归森林对patches的中心点像素坐标进行预测,得到多个3D坐标,选择置信度最高的一个作为预测,由此得到2D-3D对应关系。

最后根据Pnp和RANSAC求解相机位姿

在这里插入图片描述

论文方法

1.patch选择和对应标签制作

使用patch可以过滤掉与场景无关的位置(天空、墙壁等),去除噪声可以减少RANSAC的工作量进而加快运行速度。

本文只取以SURF特征点为中心的49X49的区域作为patch输入。

对应中心点的3D坐标标签计算:(使用RGBD信息,D为深度,p为图像二维坐标,k为相机内参)
相 机 坐 标 系 下 坐 标 : P i c = D i K − 1 [ p i 1 ] 相机坐标系下坐标:P_{i}^{c}=D_{i} K^{-1}\left[\begin{array}{c}p_{i} \\1\end{array}\right] Pic=DiK1[pi1]

使 用 已 知 相 机 位 姿 转 换 到 世 界 坐 标 系 : [ P i w 1 ] = [ R t 0 1 ] [ P i c 1 ] 使用已知相机位姿转换到世界坐标系:\left[\begin{array}{c}P_{i}^{w} \\1\end{array}\right]=\left[\begin{array}{c|c}R & t \\0 & 1\end{array}\right]\left[\begin{array}{c}P_{i}^{c} \\1\end{array}\right] 使姿[Piw1]=[R0t1][Pic1]

得到训练标签。

2.patch特征提取网络xyzNet

xyzNet和后面的回归森林是分开训练的,单独训练流程图:

在这里插入图片描述

在后面加了两个FC层用于输出位姿预测。

损失函数是绝对位姿误差:
l ( p ) = ∑ p i ∈ p ∥ P i w − P ^ i w ∥ 2 2 l(p)=\sum_{p_{i} \in p}\left\|P_{i}^{w}-\hat{P}_{i}^{w}\right\|_{2}^{2} l(p)=pipPiwP^iw22

3.多输出深度回归森林

论文使用回归森法融合xyzNet的输出特征

在这里插入图片描述

每个回归树中的每个节点都以全部特征向量为输入,来训练回归森林

对于每个回归树,选择一个特征子集S作为输入,分裂节点i将其分类到左子树和右子树,直到到达叶子节点:
h ( f j , θ i ) = { 0 ,  if  d ( r e f i , f j ) < τ i ,  go to left child node  1 ,  if  d ( r e f i , f j ) ⩾ τ i ,  otherwise  h\left(f_{j}, \theta_{i}\right)=\left\{\begin{array}{ll}0, & \text { if } d\left(r e f_{i}, f_{j}\right)<\tau_{i}, \text { go to left child node } \\1, & \text { if } d\left(r e f_{i}, f_{j}\right) \geqslant \tau_{i}, \text { otherwise }\end{array}\right. h(fj,θi)={0,1, if d(refi,fj)<τi, go to left child node  if d(refi,fj)τi, otherwise 

其中fi为特征向量, θ i = d ( r e f i , f j ) \theta_{i}=d\left(r e f_{i}, f_{j}\right) θi=d(refi,fj)为节点参数。

优化目标为最小化叶子节点的特征方差:
Q ( S i , θ i ) = ∑ d ∈ { L , R } ∣ S i d ( θ i ) ∣ ∣ S i ∣ V ( S i d ( θ i ) )  with  V ( S ) = 1 ∣ S ∣ ∑ m ∈ S ∥ m − m ˉ ∥ 2 2 \begin{array}{l}Q\left(S_{i}, \theta_{i}\right)=\sum_{d \in\{L, R\}} \frac{\left|S_{i}^{d}\left(\theta_{i}\right)\right|}{\left|S_{i}\right|} V\left(S_{i}^{d}\left(\theta_{i}\right)\right) \\\text { with } V(S)=\frac{1}{|S|} \sum_{m \in S}\|m-\bar{m}\|_{2}^{2}\end{array} Q(Si,θi)=d{L,R}SiSid(θi)V(Sid(θi)) with V(S)=S1mSmmˉ22

为了使回归树尽可能平衡,减少树的深度,需要自适应的改变节点参数,因此作者设计为可学习的参数形式,其损失函数:
θ i = { ref ⁡ i , τ i ∣ ∣ S i L ∣ = ∣ S i R ∣ } \theta_{i}=\left\{\operatorname{ref}_{i}, \tau_{i}|| S_{i}^{L}|=| S_{i}^{R} \mid\right\} θi={refi,τiSiL=SiR}
最终每个叶节点的输出可以根据其置信度来选择出最有可能的3D坐标预测,得到2D-3D对应关系

4.位姿估计

先用RANSAC和PnP去除离群点,然后生成位姿估计。RANSAC中的内点数目可以作为最后预测位姿的置信度。

5.实验验证

7—scenes:

在这里插入图片描述
在这里插入图片描述

户外数据集:cambridge

在这里插入图片描述

和AC差不多,超越PoseNet2

作者认为没有显著超越AC的原因是在特征点密集的场景中,需要更深的回归树来进行分类。、

在重复结构、遮挡、运动场景、动态环境下性能更好。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值