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

干货第一时间送达

编辑丨当SLAM遇见小王同学

声明: 本文只是个人学习记录,侵权可删。论文版权与著作权等全归原作者所有,小王自觉遵守《中华人民共和国著作权法》与《伯尔尼公约》等国内外相关法律,其他个人或者组织等转载请保留此声明!!

摘要

定位是自主机器人的一个关键要素.虽然深度学习在许多计算机视觉任务中取得了较大进步,但它仍然没有较大改进提高度量视觉定位.主要障碍之一是现有的基于卷积神经网络的姿态回归方法不能推广到以前看不到的地方,我们最近推出的CMRNet通过在激光雷达地图中启用地图独立单目定位有效地解决了这一限制.在本文中,我们现在通过引入CMRNet++.

CMRNet++是一个显著更鲁棒的模型,它不仅有效地推广到新的地方,而且独立于相机参数.我们通过将深度学习与几何技术相结合,并将度量推理移出学习过程来实现这一能力.这样网络的权重就不会绑定到特定的摄像头.在三个具有挑战性的自主驾驶数据集(即KITTI、Argoverse和Lyft5)上对CMRNet++进行的广泛评估表明,CMRNet++的性能远远优于CMRNet以及其他系统.更重要的是,我们首次展示了深度学习方法的能力,无需在全新的环境中进行任何再训练或微调,就能准确定位,并且不受摄像机参数的影响.

介绍

自动移动机器人,如自动驾驶汽车,需要精确定位才能安全导航。虽然全球导航卫星系统提供全球定位,但其精度和可靠性不足以用于机器人导航。为了缓解这个问题,利用机器人上的传感器的定位方法被用来提高精度和鲁棒性.

已经提出了多种方法来解决定位任务,使用各种机载传感器。虽然基于激光雷达的方法通常可以实现足够精确的定位,但由于相关的高成本,它们的采用主要受到阻碍。另一方面,基于摄像头的方法更有希望在自主车辆中广泛采用,因为它们非常便宜。虽然从历史上看,基于相机的方法的性能不如基于激光雷达的方法,但计算机视觉和机器学习的最新进展大大缩小了这一差距。其中一些方法使用CNNs和随机森林,虽然这些方法在室内环境中取得了显著的效果,但是它们的性能却有了显著的提高受限于大规模室外环境。此外,他们只能在这些模型之前接受过训练的地方使用。

在过去十年中,地图提供商一直在开发为汽车领域定制的下一代高清地图。这些地图包括点云形式的道路场景的精确几何重建,通常由激光雷达生成。这一因素促使研究人员开发了在激光雷达地图中定位相机的方法。定位通常可以通过从照相机重建场景的三维几何形状,然后将该重建与地图[14]、[15]匹配,或者通过在图像平面中匹配来执行

在本文中,我们提出了一种基于CMRNet++的相机与激光雷达地图配准方法。我们建立在我们以前提出的CMRNet模型的基础上,该模型受到摄像机-激光雷达姿态校准技术[19]的启发。CMRNet独立于地图进行定位,我们现在进一步改进它,使其也独立于摄像机的内部结构。与现有的最先进的基于CNN的姿态回归方法不同,CMRNet不学习地图,而是学习将图像与预先存在的地图进行匹配。因此,CMRNet可以用于任何有激光雷达图的环境。然而,由于CMRNet的输出是公制的(从初始姿态的6自由度刚体变换),网络的权重与用于收集训练数据的摄像机的固有参数相关联。在这项工作中,我们通过解耦定位来缓解这个问题,首先采用像素到3D点匹配步骤,然后是姿态回归步骤。虽然网络独立于摄像机的固有参数,但第二步仍然需要这些参数。我们在KITTI 、Agrocesse和Lyft5 数据集上评估了我们的模型,并在地图和相机参数未知情况下,并证明我们的方法超越了最先进的方法。

实验结果

1   Datasets

为了评估我们的CMRNet++的定位性能并评估其泛化能力,我们使用了三个不同的自主驾驶数据集,涵盖不同的国家、不同的传感器和不同的交通状况

KITTI数据集: 我们使用里程计序列03、05、06、07、08和09的左摄像机图像作为训练集(总共11 426帧),序列00作为验证集(4541帧)。

Argoverse:我们使用了来自中央前置摄像头的图像,该摄像头以30 fps的速度提供1920×1200幅图像。“3D跟踪数据集”的训练1、训练2和训练3分割的图像用作训练集(36,347帧),训练4分割的图像用作验证集(2741帧)。

Lyft5:我们使用从10个选定的城市场景的前置摄像机记录的1224×1024图像作为验证集(1250帧)。我们利用Lyft5数据集来评估我们的方法的泛化能力。我们首先在KITTI和Argoverse上训练我们的CMRNet++,然后在Lyft5数据集上评估它,以评估定位能力,而无需任何再训练。因此,该数据集不包括在训练集中。

2   LiDAR-maps generation

为了生成上述三个数据集的激光雷达图,我们首先在它们各自的地面真实位置聚集单次扫描,这可以由数据集本身(Argoverse和Lyft5)提供,也可以由SLAM系统 (KITTI)生成。然后,我们使用Open3D库以0.1米的分辨率对结果地图进行下采样。此外,因为我们希望地图中只有静态对象(例如,没有行人或汽车),所以我们通过利用Argoverse和Lyft5提供的3D边界框来移除动态对象。不幸的是,KITTI没有为里程计序列提供这样的边界框,因此我们不能为这些序列移除动态对象。在未来,我们将利用语义分割技术或3D对象检测器来移除它们

3   Training on multiple datasets

我们通过组合来自KITTI和Argoverse数据集的训练样本来训练CMRNet++。在多个不同的数据集上训练一个CNN会带来一定的挑战。首先,两个训练数据集的不同基数(分别为11 426和36 347)可能会导致网络在一个数据集上的性能优于另一个数据集。为了克服这个问题,我们在开始时随机采样了一个Argoverse子集,以获得与KITTI相同的样本数量。当子集在每个时期被采样时,网络将最终处理来自实时数据集中的每个样本。

此外,这两个数据集的摄像机具有非常不同的视野和分辨率。为了解决这个问题,我们调整图像大小,使其具有相同的分辨率。实现这一点的一个简单的方法是裁剪暗语图像。然而,这将产生视野非常窄的图像,使得RGB和激光雷达图像之间的匹配变得越来越困难。因此,我们首先将Argoverse图像下采样到原始分辨率的一半(960×600),然后将Argoverse和KITTI图像随机裁剪到960×320像素。我们在训练期间运行时执行这种随机裁剪,以便在不同时期对同一图像进行不同的裁剪位置。我们以原始分辨率生成激光雷达图像D和地面真实位移然后相应地对它们进行下采样和裁剪。此外,我们还在下采样操作期间将像素位移减半

4   Initial pose sampling and data augmentation

我们通过训练CMRNet++的三个实例,采用了第二节中介绍的迭代精化方法。为了模拟初始姿态Hinit,我们向地面真实姿态HGT的所有分量添加均匀随机噪声,对于每个样本都是独立的。对于平移和旋转,我们在第一次迭代中添加的噪声范围分别为[±2m]和[ ±10 °]。第二次和第三次迭代的最大范围分别为[± 1m,±2°]和[±0.6 m,±1°]

为了提高我们方法的泛化能力,我们采用了一种数据扩充方案。首先,我们通过随机改变对比度、饱和度和亮度来对图像应用颜色抖动。随后,我们随机水平镜像图像,并相应地修改相机校准。然后我们在[-5°,5° ]范围内随机旋转图像。最后,在生成激光雷达图像之前,我们转换激光雷达点云以反映这些变化。

总而言之,我们训练CMRNet++的每个实例如下

结果

我们在三个数据集的验证集上评估CMRNet++的性能,此外,由于没有使用Lyft5数据集在培训中,我们评估了我们的方法在完全不同的城市中的性能,以及使用不同传感器收集的数据。表一说明了迭代精化技术三次迭代的中值定位误差。我们还提供了我们提出的CMRNet++与CMRNet的比较,以及表二中[14]的方法.

结果表明,在KITTI数据集的序列00上,CMRNet++优于其他方法.我们的方法的方差可以进一步降低.

与CMRNet相反,CMRNet++可能无法定位图像.这可能特别发生在第一次迭代中,当超过一半的预测匹配是不正确的,因此PnP+RANSAC估计一个不正确的解决方案.我们认为原因在于地面上像素的匹配:由于路面的统一外观,几乎不可能识别出与特定3D点匹配的精确像素.为了识别这种情况,当第一次迭代后,估计的姿态距离Hinit超过4米时,我们将样本标记为失败.失败的样本不会输入第二次和第三次迭代.

结论

本文提出了一种新的基于CNN的激光雷达单目定位方法CMRNet++,我们将CMRNet++设计成独立于地图和相机内部的模块.

据我们所知,CMRNet++是第一个基于深度神经网络(DNN)的姿态回归方法,无需任何再训练即可推广到新环境.

我们在KITTI、Agroverse和Lyft5数据集上展示了我们的方法的性能,其中CMRNet++将单个RGB图像定位在看不见的地方,中值误差低至0.14 m和0.43,优于其他最先进的方法.此外在Lyft5数据集上的结果表明,CMRNet++能够有效地推广到以前未见过的环境。

本文仅做学术分享,如有侵权,请联系删文。

下载1

在「3D视觉工坊」公众号后台回复:3D视觉即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。

下载2

在「3D视觉工坊」公众号后台回复:3D视觉github资源汇总即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计源码汇总等。

下载3

在「3D视觉工坊」公众号后台回复:相机标定即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配即可下载独家立体匹配学习课件与视频网址。

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

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

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

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

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

觉得有用,麻烦给个赞和在看~  

CMRNet++:在激光雷达地图中与地图和相机无关的单目视觉定位相关推荐

  1. 基于先验激光雷达地图的2D-3D线特征单目定位

    论文标题 Monocular Camera Localization in Prior LiDAR Maps with 2D-3D Line Correspondences 1. 摘要 对于视觉导航任 ...

  2. 自动驾驶中基于地图的视觉定位方法

    点云PCL免费知识星球,点云论文速读. 文章:Visual Map-based Localization applied to Autonomous Vehicles 作者:JEAN-ALIX DAV ...

  3. 利用深度摄像头生成仿激光数据并构建地图

    前言 博主本来是想自己将生成的激光数据和ros中的地图构建工具生成地图的,结果搜了一下github发现这项工作已经被大牛们写好并且打包上传了,可以只利用激光数据不需要里程计数据来构建地图,不过还是把过 ...

  4. SLAM | 激光SLAM中开源算法对比

    点击上方"AI算法修炼营",选择加星标或"置顶" 标题以下,全是干货 前面的话 好久没有更新SLAM系列的文章了,前面我们讲到了激光SLAM技术.基于激光雷达的 ...

  5. 关于ASP.NET 中站点地图sitemap 的使用【转xugang】

    关于ASP.NET 中站点地图sitemap 的使用 SiteMapPath 控件简介 SiteMapPath 控件是一种站点导航控件,反映了SiteMap 对象提供的数据.它提供了一种定位站点的方式 ...

  6. 中高德地图只显示某一城市_小O地图 - 城市交通态势数据查询及下载

    小O地图是一款互联网地图数据挖掘.分析.图表软件.具有专业.稳定.高效的特点.提供地图功能多达30余项,并持续更新中. 感兴趣的朋友可以登录官网下载使用 .www.GIS9.com [概述] 本文介绍 ...

  7. 谷歌历史版本_《地图中的历史》,本书中的地图,我们为你找到了高清版本

    <地图中的历史>,是英国畅销书作家约翰·O.E.克拉克2018年出版的地图史著作.本书大16开全彩精装,包含6大主题,共使用了200余张珍贵插图.其中包括了改变世界的58幅地图,遍及天文. ...

  8. 中高德地图只显示某一城市_干货 | 如何快速制作数据地图?让你的可视化逼格再高一级!...

    在数据可视化中,地图可视化是高频应用的一种.我们在一些新闻报道和商业杂志上,会经常看到运用地图来分析展示商业现象,这样的利用地图来反映和分析数据的形式叫数据地图. 数据地图可以最直观的表达出数据之间的 ...

  9. JavaScript中的地图与对象

    JavaScript对象与地图 (JavaScript Objects vs Maps) Objects are super popular in JavaScript so it's not a t ...

最新文章

  1. python爬虫执行js代码_爬虫之python3用execjs执行JS代码
  2. Linux学习之CentOS(十二)--crontab命令的使用方法
  3. 离散数学范式c语言实验报告,离散数学实验报告-利用真值表法求主析取范式及主合取范式的实现...
  4. ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第一篇:准备工作
  5. Hexo+github搭建个人博客-环境搭建篇
  6. PRDICQR and PRD01QR
  7. python条形堆积图_python – 使用DataFrame.plot显示堆积条形图中...
  8. LinQ—高级查询方法
  9. JAVA可以用来开放游戏吗?
  10. C++之priority_queue
  11. D3D游戏关于窗口中如何精确确定鼠标位置的相关讨论
  12. 转速、电流双闭环直流调速系统调节器参数设计
  13. 微信小程序下拉刷新事件无效原因
  14. 新浪微博开放平台注册样例
  15. 2014世界10大DRAM公司
  16. 立秋是中稻收割的日子
  17. 腾讯优图招聘计算机视觉日常实习生
  18. excel单元格斜线_含金量100%的9个Excel函数公式,全部100%掌握的都是超级高手!...
  19. python中if brthon环境安装包_python-模块系列
  20. PCIe Switch高级功能及应用

热门文章

  1. cloudera hbase集群简单思路
  2. thinkJava@第五章@隐藏实施过程
  3. 网络传输数据格式的选择
  4. Struts-Logic 标签库
  5. LINUX上MYSQL优化三板斧
  6. 大厂程序员和北京户口教师女友买房分歧,要求分配产权怕离婚扯皮
  7. Linux网络包接收过程的监控与调优
  8. 苏宁宣布二度涨薪!平均涨幅31%,最高涨幅高达150%!网友:羡慕哭了!苏宁员工:不是全员,跟社招无关!...
  9. 百亿级数据分表后怎么分页查询?
  10. 原来书中说的JVM默认垃圾回收器是错的!