本文主要是介绍通过场景landmark做定位的新思路(CVPR 2022),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Learning to Detect Scene Landmarks for Camera Localization(论文阅读笔记)
2022 CVPR 微软与明尼苏达大学联合研究
项目地址和代码:https://github.com/microsoft/SceneLandmarkLocalization.
主要内容:
提出了一种基于学习的相机定位算法,其无需存储图像特征和场景三维点云,降低了存储限制,通过识别场景中稀疏但显著有代表性的landmark来找到2D-3D对应关系进行后续的鲁棒姿态估计,通过训练检测landmark的场景特定的CNN来实现所提出的想法,即回归输入图像中对应landmark的2D坐标。
创新点与Contributions:
1)与大多数landmark通常可见的人体姿态估计不同,由于相机视野有限并且无法同时观察场景的不同部分,相机姿态估计任务中大多数场景landmark不会同时可见,文章通过提出一种新的神经方位估计器(Neural Bearing Estimator,NBE)来解决这一问题,该估计器可以直接回归相机坐标系中场景landmark的3D方位向量,NBE学习全局场景表示的同时学习预测场景landmark的方向向量,即使它们不可见。
2)提出了一个新的室内定位数据集,INDOOR-6,相对于传统的7-Scenes室内数据集,包含更多变化的场景、昼夜图像和强烈的照明变化
3)与现有的无存储定位方法相比,具有低存储的优点且性能较好
文章提出了两种预测图像中场景landmark的方法,在第一种方法中训练了一个模型来识别图像中的2D场景地标,称之为场景地标检测器(SLD),由于假设已知的相机内参,这些2D检测可以转换为3D方位矢量或射线。在第二种方法中训练了一个不同的模型直接预测相机坐标系中landmark的3D方位向量,称之为神经方位估计器(NBE)。注:使用SLD,只能检测到相机视场(FoV)中可见的landmark,而NBE预测所有landmark的方位,包括相机视场外不可见的landmark。
首先会有一个SFM构建的点云模型,会在这些点云中挑选出有代表性的点云子集,用这些子集以及建图时SFM算法生成的数据库图像的伪真值来训练两个提出的网络模型。
SLD:
SLD被设计为将RGB图像I作为输入并输出一组像素似然图(热图)表示每个可见地标的位置,其模型架构如下:
由四个主要组件组成:使用ResNet-18为backbone,删除最后三个最大池化层以保留高分辨率特征图(输出分辨率为输入图像分辨率的四分之一),其次在ResNet-18之后使用扩张卷积块,扩张率设置为1、2、3和4,接下来转置卷积层执行上采样,并负责生成分辨率为输入图像一半的热图,最后一层由1×1卷积组成,预测L个热图通道,每个地标一个。
训练损失:
在推断过程中,假设当其最大热图值超过阈值τ=0.2时表明检测到地标,利用亚像素精度计算热图峰值位置处裁剪的17×17 patch的期望值。
NBE:
设计了一个模型在给定图像I的情况下回归全部场景landmark(即使它不可见)的方位向量。
CNN将图像I作为输入以生成深度特征图,然后是多个MLP(多层感知器)块,每个块输出指向landmark的方向向量,MLP包含两个全连接层,具有128个ReLU激活节点。
训练好两个模型后,将每个查询图像输入SLD网络以获得2D检测,然后根据内参将其转换为一组landmark方位向量B1,如果检测到超过八个场景landmark,使用鲁棒最小解算器(P3P+RANSAC)计算相机姿态,然后使用基于Levenberg-Marquardt的非线性细化。如果没有8个,将相同的图像输入NBE网络并获得预测方位B2,然后合并方位估计B1和B2的集合以形成新的集合B3,当集合B1和B2中的方位指向同一地标时,保留来自B1的估计,因为SLD通常比NBE更准确。最后使用上面描述的相同过程但使用B3计算相机姿态。
如何从点云中选择有代表性的场景landmark提供给网络进行训练?
从SfM点云P中找到L个场景landmark的最佳子集是一个组合问题,其中评估每个子集都是困难的。本文受之前以贪婪的方式寻找有区别的关键点或场景元素工作的启发,去选择鲁棒性(具有更长的轨迹)、可重复性(在多个场景中看到)和可概括性(从许多不同的观看方向和深度观察)的场景landmark,测量轨迹长度大于阈值t的3D点x的显著性得分A(x),如下所示:
除了最大化总体显著性得分之外还寻找在空间上覆盖3D场景的场景landmark以便从场景内的任何地方都可以看到一些地标,例如无论摄像机在场景中的哪个位置都希望一些地标可见。为此使用算法1中描述的约束贪婪方法
下图表述一些挑选到的landmark在二维图像中的投影的裁剪patch
实验:
训练模型的细节可去论文中查看
实验数据集是在自己提出的INDOOR-6数据集和7Scenes数据集上
评估了单独使用NBE, SLD,联合使用NBE+SLD, NBE+SLD(E)(是更紧凑的网络),和SOTA的基于分层定位方法结合HLoc+SLD
Baseline为Posenet、DSAC、HLoc
在INDOOR-6数据集上的结果:
存储比较和消融研究:
7Scenes数据集上的实验结果:
总结:
算法是一种存储要求低但精度高的方法。主要见解是在人和物体姿态估计中广泛用于关键点检测的现代CNN架构也适用于检测显著的、场景特定的3D landmark。
实验结果表明,其方法优于以前的无存储方法,但不如HLoc(顶级检索和匹配方法之一)准确,但是HLoc需要高存储。而且基于landmark的2D–3D对应关系补充了HLoc的对应关系,并且在计算姿态之前结合这些对应关系进一步提高了HLoc精度。
局限性:首先神经网络是特定于场景的,像其他学习方法一样每个场景需要许多训练图像,而且在使用之前需要仔细选择场景landmark集。
本文仅做学术分享,如有侵权,请联系删文。
干货下载与学习
后台回复:巴塞罗那自治大学课件,即可下载国外大学沉淀数年3D Vison精品课件
后台回复:计算机视觉书籍,即可下载3D视觉领域经典书籍pdf
后台回复:3D视觉课程,即可学习3D视觉领域精品课程
3D视觉工坊精品课程官网:3dcver.com
1.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
2.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
3.国内首个面向工业级实战的点云处理课程
4.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
5.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
6.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
7.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)
8.从零搭建一套结构光3D重建系统[理论+源码+实践]
9.单目深度估计方法:算法梳理与代码实现
10.自动驾驶中的深度学习模型部署实战
11.相机模型与标定(单目+双目+鱼眼)
12.重磅!四旋翼飞行器:算法与实战
13.ROS2从入门到精通:理论与实战
14.国内首个3D缺陷检测教程:理论、源码与实战
15.基于Open3D的点云处理入门与实战教程
16.透彻理解视觉ORB-SLAM3:理论基础+代码解析+算法改进
重磅!粉丝学习交流群已成立
交流群主要有3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、ORB-SLAM系列源码交流、深度估计、TOF、求职交流等方向。
扫描以下二维码,添加小助理微信(dddvisiona),一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。
▲长按加微信群或投稿,微信号:dddvisiona
3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、激光/视觉SLAM、自动驾驶等)、源码分享、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答等进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,6000+星球成员为创造更好的AI世界共同进步,知识星球入口:
学习3D视觉核心技术,扫描查看,3天内无条件退款
高质量教程资料、答疑解惑、助你高效解决问题
觉得有用,麻烦给个赞和在看~
这篇关于通过场景landmark做定位的新思路(CVPR 2022)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!