商汤、香港大学、港中文,RGB相机重定位,2019.6
1.摘要
本文模型针对的是相机重定位任务,基于检索的模型被认为是比较有潜力的方向,因为可以很容易的泛化到其他场景。作者观察到现有方法的瓶颈在于检索模块:这些方法对检索和相关姿势回归任务都使用相同的特征,这对学习有潜在的影响。
本文提出一种基于由粗到细检索的深度学习框架,包括:基于图像的粗检索,基于位姿的细检索,精细的相对位姿回归。
最后在室内室外数据集上均达到了SOTA的性能
2.简介 && 相关工作
- 传统方法基于手工提取的特征,通过多视角的几何约束来优化特征点之间的对应关系。 但是,这些方法在弱纹理、光照变化,遮挡,重复结构场景下性能欠佳,计算量大。
- 基于随机森林的方法建立2D-3D的对应关系以对相机位姿进行恢复,并通过RANSAC方法进行优化求解。
- 基于深度学习的方法直接从RGB图像中预测相机位姿, 这些模型利用深度网络的表达能力对场景进行记忆,这也意味着他们在新场景下必须被重新训练,因此泛化能力不够。
- 其他类型的深度学习方法构建了一个数据库,包括目标场景的图像特征及其对应的真实世界位姿。对于给定的检索图像,其首先在数据库中检索最相似的图像,然后对相对位姿变换进行预测。但是,之间检索到最优的匹配是困难的,不好的匹配会降低后面的相对位姿回归的性能。
本文方法属于最后一种,并解决了寻找最优匹配困难的问题。采取有粗到细的策略来逼近最优检索结果
现有的检索的方法使用共享特征进行图像检索和姿势回归。作者认为这是不合理的,因为图像检索模型应该侧重于 学习场景的相似性,而忽略摄像机视角的细微变化,而姿态回归模型则需要识别 成对图像之间视角变化的细微差异。因此,这两个任务在学习上有潜在的冲突,如果所有的特征都共享的话,可能会对彼此产生不良影响。
做出的改进:设计了一个孪生网络,它有三个分支,分别用于基于图像的粗检索、基于姿态的精细检索和相对姿态回归。只有网络的编码器是共享的,而三个任务都有自己的分支,三个任务可以端到端的方式共同学习。
本文贡献:
- 设计了孪生网络camnet
- 提出了新的检索损失和两级检索方法,进一步提高了摄像机重新定位的精度
- 获得SOTA的结果
3.论文方法
总览
Camnet是一个孪生网络,输入是一组重叠的成对图像。包括三个模块:
- 基于图像的粗检索(image-based coarse retrieval module (ICR))
- 基于位姿的细检索(pose-based fine retrieval module (PFR)
- 精细的相对位姿回归( precise relative pose regression module (PRP))
网络编码器由3个模块共享。
网络流程:ICR通过最近邻查询在database中找到一张最相似的图片,然后PFP使用粗的相对位姿回归得到粗略的相机位姿估计。使用PFP通过该粗略的相机位姿 检索最接近的相机位姿 以及 进行相对位姿回归,最后 得到精确的位姿估计。
训练数据是成对的图像,以及对应的相机位姿的真值(4*4的其次坐标)
损失函数:
3.1 Image-based Coarse Retrieval Module (ICR)
ICR模块的任务是从database中找到最有可能获得准确相对位姿的图片。采用的策略是与查询图像的重叠区域越大,其对位姿回归的有效性就越高。论文实际使用双向重叠来应对大范围运动的情况。
但是作者发现有些重叠较大的图像对是在相反的方向采集的,造成了大的旋转。论文使用batch hard-sample mining策略来解决这个问题:计算hard triplet loss和angle based auxiliary loss.
-
Bilateral Frustum Loss(双向截锥体损失)
-
对室内场景中的RGBD数据:
已知图像对X1,X2,对应相机位姿的齐次坐标R1,t1,R2,t2,以及对应的深度图D1(px,py),D2(px,py)
可以将X1中的像素(x,y)投影到世界坐标系中,然后反投影到x2中得到对应的坐标x2’:
-
从第一幅图像X1中抽取一个大小为10×10的均匀像素网格,并将投影到第二幅图像对应区域内的像素点比例视为相机截锥体重叠θ1。类似地,反相机截锥体重叠表示为θ2
-
对于没有深度信息的室外环境
使用ORB代替截锥体重叠:提取两幅图像的ORB特征点S1,S2,然后进行暴力匹配,记为 BFMatcher(S1,S2), 然后计算ORB相似度:
反转该相似度得到θ2’
最后的损失函数:
d1 = 1 − θ1 代表相机的截锥体距离, ˆd1代表预测的截锥体距离
-
Angle-based auxiliary Loss(基于角度的辅助损失)
截锥体重叠对于图像对之间的旋转并不敏感,因此需要针对旋转角度设计新的损失函数
根据两个旋转矩阵计算得到相机的旋转角度:
最后角度损失:
ˆα是预测的旋转角度
-
Hard Triplet Loss
通过对朝向角的学习,弥补了相机重叠方法的弱点。 为了进一步提高相机检索的精度,这里介绍了batch hard sampling with a hard-triplet loss
对于训练集中每个anchor图像,随机的将其和其他图像组合成图像对。然后,根据他们的重叠区域以及相对旋转角和位移将图像对划分为三种类型,简单,中等,以及困难三个batch。
最后的目标是:简单类别图像对的在特征空间的距离相较于中等类别中图像对的距离要小,中等类别图像对相较于困难图像对的距离要小。Hard Triplet 损失函数如下:
f表示图像,i表示anchor图像的序号,下标a,e,m,h表示anchor图像,简单、中等困难图像。()+表示与0求max
β 是margin值,使得网络可以分辨正负样本(??不太懂。。)
3.2 Pose-based Fine Retrieval Module (PFR)(基于位姿的检索优化)
仅使用RGB来确定的相机位姿是不准确的,但是作者发现有了一个比较准确的检索系统(PFR),相对位姿回归的任务(PRP)就会变得简单很多
使用PFR模块预测相对旋转和平移:
然后根据X2可以得到anchor图像的粗略相机位姿估计:
然后在database中检索最接近该位姿的图像,将其与anchor图像结合为图像对。将该图像对作为input,输入到PRP模块中得到精确的相对位姿。
训练PFR的损失函数为:
这里使用了1范数,作者发现比2范数效果更好
具体的PFR检索系统可以表示为:
3.3 Precise RelativePose Regression Module (PRP)(精确的相对位姿回归)
与直接估计相对位姿的模型相比,该模型通过基于位姿的检索(PFR)提高了摄像机重定位的精度。通过PRP模块,可以进一步缩小相对位姿的范围。
注意PRP模块与PRF模块结构相同,但是应用的任务不同。损失函数也与PFR相同
3.4 Inference Stage
首先建立一个database,由训练集的关键帧组成。对于每个绝对真值位姿M,存储其对应的ICR输出的检索描述子f_r,PFR输出的位姿表达f_c,PRP decoder输出的位姿表达f_f。
推理过程如下:
- 给定一个查询图像,及其f_r,在数据库中找到K个最近邻。(K=3)
- 通过PFR decoder得到查询图像的f_c,,将其与最近邻的K个特征表达{f1_c ,…,fk_c } (对应结构图中的target image(corese)),连接起来输入到PFR regressor中,进行粗糙的位姿估计。
- 对于每个估计的位姿,我们检索到最近的位姿作为新的参考位姿。通过PRP decoder得到查询图像的f_f,然后将其与新的参考{f1_f ,…,fk_f}连接输入到PRP regressor中得到预测的位姿{ ˆ M1 f ,…, ˆ Mk f }.
- 对于序列输入,利用查询帧之前的两帧,通过PRP回归估计查询帧Mseq1,Mseq2的姿态。
- 最后,姿势{M1 f,…,mkf,Mseq1,Mseq2}被基于RANSAC的算法过滤,如[18]。最终结果是所有输入样本的平均值。
整个过程消耗的时间主要集中在共享的encoder上,三个模块消耗的时间相比很小
4. 实验
4.1 数据集
- 7-Scene 室内
- Oxford RobotCar 室外
- ApolloScape 室外
4.2 实现细节
。。。
4.3. 消失实验
根据消失实验得出:
- 检索是之前方法的定位精度的瓶颈。本文的三个损失大大提高了检索性能
- 将检索和相对姿势回归 分离为 具有共享权重的多分支体系结构可以提升二者性能。
- 双边截锥体损失集中在提高平移的检索性能上,而基于角度的损失集中在提高方向的检索性能上。batch hard sampling 大大提高了楼梯等混淆场景的检索性能
- PFR模块的姿态估计可以通过PRP模块进一步提升,这表明该由粗到细框架的有效性。
4.4. 相比结果
-
室内数据集
-
室外数据集
5. 总结
结果表明,不同的损失函数有利于不同的检索方式,数据分布对检索精度至关重要。大量实验表明,我们的模型在室内和室外数据集上的性能都大大优于最新的方法。
个人看法:
论文的主要创新点在于设计了孪生网路,把原来共享权重的网络分开来训练得到了非常好的效果。尽管如文中所述时间的消耗主要在encoder上,三个模块的时间占用很小,但是貌似没有提到总体时间性能,也没有对比(也有可能是漏掉了,实验部分看的比较粗略)。