PoseNet: A Convolutional Network for Real-Time 6-DOF Camera Relocalization 论文笔记

时间:2024-04-04 19:56:54

剑桥大学 ,单目图像,RGB,室内室外,相机重定位

PoseNet是使用神经网络做相机定位的开山之作,之后的PoseNet2对其损失函数做了一些修改和提升。

看完PoseNet和PoseNet2,感觉这个团队写论文的风格都特别务实么得空话,全部是实验、数字、说明以及一些训练的tricks。

摘要

2015年的文章,对比的baseline是基于手工特征的方法,相比之下更为鲁棒。输入为单张RGB图像,模型可端到端训练。室外精度: 2m and 3◦,室内0.5m and 5◦。速度一帧5ms。PoseNet由23层的卷积层构成。

论文简介

基于appearance的重定位方法在此之前已经能够将相机进行粗略的定位到离散的位置区域,使得相机位姿的预测成为了一个需要解决的问题。这时PoseNet应运而生:PoseNet的主要贡献就是相机位姿回归器。主要通过两个主要技术实现:

  1. 使用SFM方法来自动生成训练标签,减轻了人力成本。然后通过迁移学习的方法在大型分类数据集上实现了由识别到定位的迁移训练。 与重新训练相比,即使训练集非常稀疏,也能在更短的时间内收敛到更低的误差。
  2. 对于CNN生成的特征表示的理解。PoseNet能够学到如何计算易于投影的特征向量,而这种特征可以泛化到测试集上。
PoseNet

模型输入为单目图像II,输出为坐标和四元数p=[x,q]p = [x,q],四元数相比于旋转矩阵的好处是参数少,且归一化操作四元数更加简单

1. 学习坐标和朝向

回归位姿的损失函数:
loss(I)=x^x2+βq^qq2 loss(I) = ||\hat{x}-x||_2+ \beta||\hat{q}-\frac{q}{||q||}||_2
根据后面一项四元数预测值的归一化操作可以看出模型的输出并不是单位四元数,需要额外归一化操作

原因在于Euclidean损失函数并不能将四元数输出保持在单位球面上。但是作者在训练时发现预测值和真值非常接近,就省略了单位球约束。

此外,作者还尝试将预测坐标和预测四元数分为两个部分,让两个模型分开预测,结果并不好,因为坐标信息和四元数信息互相关联辅助预测,分开会损失一部分信息。

在训练的时候,作者还发现随机初始化最后的位置回归层是很重要的,这样每个位置维度的权重范数与该维度的空间尺度成比例。

2.模型结构

GoogLeNet基础上做了修改:

  1. 将三个softmax分类器替换为仿射回归器。并修改每个最终的全连接层,以输出位置和方向的7维位姿
  2. 在特征尺寸为2048的最终回归器之前插入全连接层。这是为了形成局部特征向量,然后可以对其进行泛化。
  3. 在测试时,将四元数向量规一化为单位长度

此外在每个场景中减去了图像平均值,实验发现可以提升性能

实验

数据集:

室内:7 Scenes

室外:Cam-bridge Landmarks

PoseNet: A Convolutional Network for Real-Time 6-DOF Camera Relocalization 2015论文笔记

论文还可视化了PoseNet提取到的显著性特征:

PoseNet: A Convolutional Network for Real-Time 6-DOF Camera Relocalization 2015论文笔记

说明了PoseNet不止提取到了分辨性明显的特征,还有大范围的纹理信息。使得模型可以更好的应对一些复杂场景