相机定位 | cv paper整理

点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

作者:梦寐mayshine

链接:https://zhuanlan.zhihu.com/p/134490558

本文转载自知乎,作者已授权,未经许可请勿二次转载。

Retrieval Based ——基于检索

1.RelocNet

RelocNet:  Continuous Metric Learning Relocalisation using Neural Nets[2018ECCV] [project page]

NNnet类似,也是先retrieval最相似图像在回归relative pose,最后得到最终的reloc pose;

这篇是加入了视角重合的比例作为一个额外的约束,camera pose retrieval更准.(NNnet基础上)

本文主要的贡献主要是求一个可以衡量camera movement的image descriptor,衡量的不仅是图像的相识度,重要的是衡量图像直接camera pose的相似度;

NNnet里面直接使用一个relative pose的loss去push网络学习,而本文则是计算两帧图像camera的frustum overlap distance,push两帧图像descriptor之间的distance尽可能和该距离相同;

2.NNnet

Camera Relocalization by Computing Pairwise Relative  Poses Using Convolutional Neural Network [2017 ICCV] [code: torch]

用CNN提取图像的描述特征,然后为了push学习到,利用两张图像的特征相减,继续利用CNN学习relative pose;

利用检索的方法在map中查找和query image最相似的图像,求取relative pose;

然后累加上相似图形的pose得到最终的pose;

NNnet, Siamese网络直接计算相对pose

3.CoarseToFine

From Coarse to Fine: Robust Hierarchical Localization at Large Scale [2019 CVPR] [code: tensorflow]

2d-3d的匹配,加入了distillation学习更小的网络,参考文献可以参考,有几篇学习low-level特征的,比sift特征更好。(superpoint)

这篇工作是HierarchicalLoc的延续,基本思路一致,主要不同就是把2d-3d中的SIFT等传统描述符换成了现在比较火的deep feature,具体是SuperPoint;

当然SuperPoint也是训练了一个轻量级mobile版本的,只不过是把NetVLAD一起来train;

4.HierarchicalLoc

Leveraging Deep Visual Descriptors for Hierarchical Efficient Localization [2018 CoRL] [code: tensorflow]

实现了相对pose的一个pipeline,看起来更像一个工程论文. pose聚类+pnp ransac,使用了netvlad层,用的sift特征.

利用image retrieval(轻量级mobile版本的NetVLAD)方式获取query image最相似的kfs;

对获取的top k的kfs做covisibility clustering,其实思路比较简单,就是能观察到相同map中的3d points聚集成一类;

利用上面kfs观察到的loca 3d points(local map)来做2d-3d的matching,这样可以直接做暴力的查找,而且是在相似的局部空间来做,效果比全图2d-3d要好;相当于利用retrieval代替了kd-tree或者BoW等加速方法(虽然这些可以加速,但同时会把inliers过滤掉,损害最后的精度),但是对精度影响不大;

利用蒸馏方法在原有NetVLAD的基础上训练轻量级的;

Semantic Based ——基于语义

1.SIVO

Visual SLAM with Network Uncertainty Informed Feature Selection [2018 arXiv] [code: caffe]

2.DeLS-3D

DeLS-3D: Deep Localization and Segmentation with a 3D Semantic Map [2018 CVPR] [code: only test]

4.SVL

Semantic Visual Localization [2018 CVPR]

5.Semantically Segmented Images

Long-term Visual Localization using Semantically Segmented Images [2018 ICRA]

6.Semantic Match Consistency

Semantic Match Consistency for Long-Term Visual Localization [2018 ECCV]

用语义信息解决季节变化问题。建了一个3d语义地图,query的时候去匹配并计算语义的匹配程度。把这个匹配程度作为ransac的权重。

  • 主要思路:

    本文和Semantic Labellings一个作者,也是利用语义信息去辅助long-term定位问题。这里是在传统2d-3d的基础上利用语义信息的一致性对每个匹配进行打分,分值当做权值进行传统的2d-3d求解。

  • 主要流程:

    2d-3d匹配pose估计值生成阶段:在2d-3d描述符计算matching过程中,对每个2d-3d的匹配关系都生成了一系列的pose估计值;假设query图像局部相机坐标系的重力方向g是已知的,

7.Semantics-aware Visual Localization

Semantics-aware Visual Localization under Challenging Perceptual Conditions [2017 ICRA]

8.Semantic Labellings

Long-term 3D  Localization and Pose from Semantic Labellings [2017 ICCV]

  • 主要思路:

    只利用图像语义分割label信息来进行定位,为了解决不同天气、季节以及光照等变化带来的long-term定位的问题,此时利用local feature的2d-3d方法明显是不可靠的了。输入只有query image的语义label,地图中存储的是3D点、curves和点的语义信息;

  • 主要流程:

    基于每张图像(地图和query) 的语义分割结果上半部分分成2x3的6个区域,每个区域进行label数目直方图统计以及计算building和vegetation二值语义图的梯度直方图,归一化拼接成一个向量当做image的描述符;用该描述符可以进行图像检索,检索出的最近image的pose可以当做优化的初始的pose;(防止随机初始化陷入局部最优解)

    优化pose求解,这个部分就是和之前不同的情况,之前是优化的projection error,现在优化的有两项,一个是地图3D点投影到image上和相同该点label的距离,但因为3d点是稀疏的,只用该项优化得不到精确的pose,另一个优化就是利用不同label之间的contour,建图会存储3d curves,保存的就是不同label之间的边界(不同类型的边界形式不一样),文中提供了三种:poles(其实该label本身就是直线文中构建地图也是拟合的),road的边界以及skyline等;其实最后就是一些线段,计算error方式一样,也是projection到图像上,和图像的语义label的边界距离;在实际计算中,得到query图像的语义分割结果后,为每个label都构建了一个error map(出去动态物体,行人和车辆),其实就是该位置距离最近的对应的label的距离(截断距离),有了这些error map,3d点投影error就是对应label的error map投影位置上的值,3d curves进行积分,简单可以理解为sample一些点,也是取error,对于边界curve,error是对于的两个label的error map的和(这个是我的理解,文中没仔细讲,但是文中提到对于query image的操作只有建立error map)

  • 试验结果:

    同源数据下,效果和2d-3d还是有点差距;(contour这种约束没有2d-3d那边精确)

    但在非同源数据下,也就是map和query数据是在不同条件下采集的,这样本文的效果还是不错的,没有像传统2d-3d退化的那么严重;(此时2d-3d可能很多情况下已经找不到正确的匹配关系了)

该方法有三个问题:

(1)该方法比较依赖分割的精度,不仅仅是IOU还有contour上的精度,适用于各种条件场景下的语义分割本身也是一个比较难解的问题(相对于pose还是好一些);

(2)该方法依赖不同语义间的contour进行精确定位,这个精度感觉有限,所以使用该方法的精度上限不高,但结合传统方法应该比较好;

(3)适用于语义比较丰富的场景,如果场景中语义信息不是特别丰富,假设可能只有两三类,这种情况下不太适用,主要因为单张图像上可能只有一种语义;

9.VLocNet++

VLocNet++: Deep Multitask Learning for Semantic Visual Localization and Odometry [2018 RAL] [project page]

加入语义分割同时训练,结果提升很多,这种加语义的paper去年有好多,因为语义特征更为稳定

10.Semantic Visual Localization

使用语义地图,可以减少由于环境气候光线变化导致的定位不准的问题。用了一个3d网络对语义地图进行补充。3d-3dmatching

11.eccv18 VSO: Visual Semantic Odometry

在传统的VO领域加了语义分割。

12.inLoc: Indoor Visual Localization with Dense Matching and View Synthesis

dense feature extraction and matching.用cnn提pixel-level的特征,先用高级语义特征作粗略匹配,再用低级纹理特征精确匹配,做了一个dense的matching.总体流程 netvlad提特征选取top10,然后dense匹配,ransac计算pose,然后做了一个合成视图用来验证pose准确性,最后根据这十个估计一个pose.需要用到depth,提出了一个inloc数据集.

13.Mask-SLAM: Robust feature-based monocular SLAM by masking using semantic segmentation

加入了segmentation一起学,segmentation提供了一个mask保证slam的特征点不选在天空和动态物体上。

Local Feature Based ——基于本地特征

1.LessMore

Learning Less is More - 6D Camera Localization via 3D Surface Regression [2018 CVPR] [code: torch] [project page]

直接回归学习一个2d-3d的correspondence,把DSAC的网络改成了fcn,把DSAC里学习correspondence和打分的过程放到一个网络里联合学习。精度很高,室外20cm.

2.DSAC

DSAC - Differentiable RANSAC for Camera Localization [2017 CVPR] [code: torch] [project page]

将RANSAC用到camera localization中,是一个迭代优化的过程。网络预测2d到3d的投影,四个点可以确定一个pose,采样很多组,并对每一个估计的pose打分,取打分最高的一组,继续加入新的点并重新打分,直到找到最多点匹配上的一组对应的pose。经典方法RANSAC,每次随机初始化几个点,用这一部分点拟合,然后查看有多少点符合拟合结果。最后选取最多点符合的一次。是一种通过局部匹配得到全局模型的办法,或者说局部预测,全局拟合。不可微的原因是argmax,修改成可微有两种方案,第一种是softmax,第二种是基于概率的选择。作者后来发现基于概率的选择效果比较好。

3.Active Search

Efficient&effective prioritized matching for large-scale image-based localization [2017 TPAMI]

4.CSL

City-Scale Localization for Cameras with Known Vertical Direction [2017 PAMI]

5.SCoRe Forest

Scene coordinate  regression forests for camera relocalization in rgb-d images [2013 CVPR]

解决了less-more(dasc++)为了丢掉3dmodel而需要进行一个depth的大概初始化的问题.将重投影误差改成了角度误差,同时引入了multi-view的损失,也尝试了学光流用的photometric loss,L1范数+0.85SSIM.使用新的loss对初始化不敏感,在没有3dmodel的情况下结果更好.

用神经网络回归3d场景坐标,加了个平滑项.然后通过学习特征点为场景坐标预测权重,最后使用ransac.

6.Camera Pose Voting

Camera Pose Voting for Large-Scale Image-Based Localization [2015 ICCV] [note]

7.Structure-less Rep

Structure from Motion Using Structure-less Rep [2015 ICCV]

  • 问题:

    首先基于2D-3D方法的前提是map中的3D点在2D图上是可见的,这样才能获得匹配关系进一步求解camera pose,但有种情况是由于重建不完全或者其他原因导致map中的3D点在2D图像中并不可见,但2D图像和地图中的2D图像是有overlap的;
    这个很好理解,举个例子,比如三个物体O1,O2,O3在一张桌子上,我们拍了三张图I1,I2,I3,I1图像只包含O1和O2,I2图像只包含O2和O3,I3图像只包含O1和O3。这里利用其中任意两张图去构建map,然后利用另外一张去做2D-3D匹配求camera pose,比如利用I1,I2构建map,三角化得到3D点,因为两张图像只有O2部分由overlap,此时只能构建O2的点,但是I3是看不到O2的,所以此时没法使用2D-3D求解;
    但其实I3和I1,I2都是存在图像的overlap,采用2D-2D方法是能得到camera pose的;
    基于上面的思想当然问题可能不仅仅是像上面的例子一样,3D本身构建过程中就会丢掉一部分信息,而且最全的信息还是来自原始图像,所以本文采用2D-2D的策略;

  • 思路:

    利用2D-2D匹配关系增量式的构建SFM,和原来2D-3D不同的是该论文只利用了图像间的2D-2D的匹配关系来求解camera pose;

    而且这里构建的是多相机之间的2D-2D的匹配关系,目的是为了防止下面这张情况,比如query图像如map中的图像可以完全overlap,但是和每张图像都是部分overlap,可能map中5张(举例)可以覆盖住query图像,暴力方法就是和每一张图像都进行2D-2D的匹配,本文想简化这个过程。

8.Fast image-based localization using direct 2d-to-3d matching ICCV, 2011

9.LCD: Learned Cross-Domain Descriptors for 2D-3D Matching

10.Global visual localization in LiDAR-maps through shared 2D-3D embedding space

11.exploiting points and lines in regression forests for RGB-D camera relocalization

使用回归森林模型,使用lsd提取了线段进行学习,并随机sample点,然后用ransac求定位.做了一个点应该在线段内的约束.

12.are large-scale 3d models really necessary for accurate visual localization?

比较久的文章,但是刚中.讲不需要复杂的3d模型,做了个数据集,用vlad特征,spatial reranking和局部sfm的方法,达到了和3d模型近似的精度.

13.Efficient 2D-3D Matching for Multi-Camera Visual Localization

多相机定位,也是基于ransac的迭代的方法,通过多相机可以过滤掉outlier,然后迭代优化。

14.2018 ACCURATE VISUAL LOCALIZATION IN OUTDOOR AND INDOOR ENVIRONMENTS EXPLOITING 3D IMAGE SPACES AS SPATIAL REFERENCE

比较水,基本是一个已有方法的工程实现。

15.Project AutoVision  Localization and 3D Scene Perception for an Autonomous Vehicle with a      Multi-Camera System

比较水,基本是一个已有方法的工程实现。

16.on-the-fly adaptation of regression forests for online camera relocalization

回归森林模型,2d-3d匹配,改成了online的版本,可以在一个场景finetune,另一个场景finetune

17.uncertainty-driven 6d pose estimation of objects and scenes from a single rgb image

rgbpose.实际上是一篇只用rgb做object pose的文章,但也可以做localization.是先估算了一个大概的3d位置概率模型,然后使用ransac进行优化的方法.但是训练的时候也用到了depth,只是test的时候纯rgb.

18.Atloc: Attention Guided Camera Localization

19.Aggregating local descriptors into a compact image representation

PoseNet Based —— 基于PoseNet

1.Limitations

Understanding the Limitations of  CNN-based Absolute Camera Pose Regression [2019 CVPR] [dataset]

2.VLocNet

Deep Auxiliary Learning for Visual Localization and  Odometry [2018 ICRA] [project page]

这篇同时学习了相对和绝对pose,学习绝对pose的同时也保证其满足相对pose的约束关系,结果比前面两个高的多.

3.MapNet

Geometry-Aware Learning of Maps for Camera Localization [2018 CVPR] [code: pytorch] [project page]

mapnet,李代数学习角度,同时相对和绝对pose, mapnet+ 加入了unlabeled data, mapnet++ 加入了pgo

4.Geometric loss PoseNet

Geometric loss functions for camera pose regression       with deep learning [2017 CVPR]

5.Hourglass Pose

Image-based Localization using Hourglass Networks [2017 ICCV]

6.VidLoc

VidLoc: A Deep Spatio-Temporal Model for 6-DoF Video-Clip Relocalization [2017 CVPR]

7.LSTM PoseNet

Image-based localization using LSTMs for structured feature correlation [2017 ICCV] [code: pytorch]

8.BranchNet

Delving Deeper into Convolutional  Neural Networks for Camera Relocalization [2017 ICRA]

9.Bayesian PoseNet

Modelling Uncertainty in Deep Learning for Camera Relocalization [2016 ICRA]

10.PoseNet

PoseNet: A Convolutional Network for Real-Time 6-DOF Camera Relocalization [2015 ICCV] [code: caffe] [project page]

11.PointNet: Deep learning on point sets for 3D classification and segmentation

12.PointNet++: Deep hierarchical feature learning on point sets in a metric space

13.PointNetVLAD: Deep Point Cloud Based Retrieval for Large-Scale Place Recognition

14.PointLoc: Deep Pose Regressor for LiDAR Point Cloud Localization

15.DeepTIO: A Deep Thermal-Inertial Odometry with Visual Hallucination

16.NetVLAD: CNN Architecture for Weakly Supervised Place Recognition

17.SANet: Scene Agnostic Network for Camera Localization

18.Unsupervised Scale-consistent Depth and Ego-motion Learning from Monocular Video

19.Geometry-Aware Learning of Maps for Camera Localization

其他论文总结:

1.Netvlad

vlad的深度版本

2.2018 Practical Visual Localization for Autonomous Driving: Why Not Filter?

前端还是posenet或者mapnet,提出了一个后处理方案,比mapnet里的pgo结果好,主要就是根据车速有范围,以及时序上的一致性把预测结果平滑了。结果提升很多

3.Benchmarking 6DOF Outdoor Visual Localization in Changing Conditions

白天黑夜 四季数据集 benchmark

4.random forests versus neural networks -- what's best for camera localization?

将回归森林模型转化成了神经网络,并且进行端到端的训练,最后做了一个平均

5.Night-to-Day Image Translation for Retrieval-based Localization

训了一个GAN, 夜晚转白天,然后再定位。

6.Variational End-to-End Navigation and Localization

定位+决策联合学习

7.CVM-Net: Cross-View  Matching Network for Image-Based Ground-to-Aerial Geo-Localization

卫星图定位,先用两个网络把卫星图和相机图投影到一个共同的空间,再去学习其相关性。

8.2018eccv CPlaNet: Enhancing Image Geolocalization by Combinatorial Partitioning of Maps

也不是自动驾驶场景的定位,是在google地图上的那种定位,误差有几KM。思想是把地图分成不同组super pixel,每一块用于分类。结合多次分类的结果选取最可能的位置。

9.real-time rgb-d camera pose estimation in novel scenes using a relocalization cascade

上一篇回归森林模型的扩展,将最后ransac出的一个固定的pose改为概率输出,选择一个分最高的.提出了级联的结构,第一级精度差速度快,之后精度高速度慢,不同阶段做不同的取舍.

10.full-frame scene  coordinate regression for image-based localization

FCN回归场景坐标,然后ransac计算pose.通过微调pose反投影做了数据增强,被less more吊打了.

11.learning to find good correspondences

使用sift提取n个特征点对,然后网络输入n*4进行回归其权重,最后使用八点法进行定位,可微的loss.训练完又用了ransac

12.efficient condition-based representations for long-term visual localization

解决robotcar-seasons不同环境场景的问题,用了多个encoder,根据不同场景选取不同的encoder,用了generalized mean       pooling. retrive但并没有计算相对pose,感觉比较水.

13.Learning to Navigate the Energy Landscape Julien

The proposed method is essentially a discrete optimization technique that uses a hierarchical navigation graph and a retrieval forest. 有点理论,主要是树相关的方法,没看懂

参考:

https://github.com/dingmyu/CV_paper/blob/master/relocalization.md

https://github.com/huayong/dl-vision-papers/tree/master/camera-loc#retrieval-based

推荐阅读

吐血整理|3D视觉系统化学习路线

那些精贵的3D视觉系统学习资源总结(附书籍、网址与视频教程)

超全的3D视觉数据集汇总

大盘点|6D姿态估计算法汇总(上)

大盘点|6D姿态估计算法汇总(下)

机器人抓取汇总|涉及目标检测、分割、姿态识别、抓取点检测、路径规划

汇总|3D点云目标检测算法

汇总|3D人脸重建算法

那些年,我们一起刷过的计算机视觉比赛

总结|深度学习实现缺陷检测

深度学习在3-D环境重建中的应用

汇总|医学图像分析领域论文

大盘点|OCR算法汇总

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会(ICRA/IROS/ROBIO/CVPR/ICCV/ECCV等)、顶刊(IJCV/TPAMI/TIP等)、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近1000+星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

 圈里有高质量教程资料、可答疑解惑、助你高效解决问题

你可能感兴趣的:(相机定位 | cv paper整理)