经典文献阅读之--OrienterNet(自动驾驶中基于网格的交通场景感知)

dia

0. 简介

使用神经网络来匹配2D公开地图的做法是一个很有趣的方法,人们可以使用简单的2D地图在3D环境中指明自己所处的位置,而大部分视觉定位算法则依赖于昂贵的、难以构建和维护的3D点云地图。为了弥合这一差距《OrienterNet: Visual Localization in 2D Public Maps with Neural Matching》提出了第一个能够在人类经常使用的语义2D地图中进行分米级单目定位的算法OrienterNet。OrienterNet通过匹配一个图像的神经鸟瞰表示和公开的OpenSreet地图来估计输入图像的位置和朝向。OrienterNet使用相机位姿进行监督训练并以端到段的方式进行语义匹配。相关的代码已经在Github上开源了。

1. 主要贡献

本文介绍了一种全新的方法,可以在使用与人类相同的地图的情况下,以亚米级的精度定位单个图像和图像序列。这些平面地图仅编码了少数重要对象的位置和粗略的二维形状,而不包括它们的外观和高度。这种地图非常紧凑,尺寸比三维地图小104倍,因此可以存储在移动设备上,并用于大范围内的设备定位。我们使用开放街道地图(OSM)[46]展示了这些功能,这是一张公开可访问且由社区维护的世界地图,使任何人都可以免费定位任何地方。这种解决方案不需要建立和维护昂贵的三维地图,也不需要收集可能敏感的地图数据

表1. 视觉定位的地图类型。来自OpenStreetMap的平面地图由带有元数据的多边形和线条组成。它们是免费公开的,不存储敏感的外观信息,与卫星图像和使用SfM构建的3D地图相比。它们还很紧凑:可以下载并存储大面积地图到移动设备上。我们展示了它们编码了足够的几何信息以实现准确的3自由度定位。

OrienterNet学习以端到端的方式比较视觉和语义数据,仅通过相机姿态进行监督。这通过利用OSM所暴露的高多样性语义类别,从道路和建筑物到长椅和垃圾桶等对象,得出准确的姿态估计。OrienterNet还具有快速和高度可解释性。我们训练了一个单一模型,能够很好地推广到以前未见过的城市,并跨越由不同视角拍摄的各种相机图像,如车载、自行车载或头戴式、专业或消费级相机。

2. 在2D地图中定位单个图像

问题表述:在典型的定位场景中,我们的目标是估计图像在世界中的绝对6自由度姿态。在现实假设下,我们将这个问题简化为估计一个由位置(𝑥,𝑦)∈𝑅2(x,y)∈R2 和朝向角𝜃∈(−𝜋,𝜋]θ∈(−π,π]组成的3自由度姿态𝜉=(𝑥,𝑦,𝜃)ξ=(x,y,θ)。 这里我们考虑一个以东-北-垂直方向对应于x-y-z轴的地心坐标系。

首先,我们可以很容易地假设我们知道重力的方向,这是人类通过内耳自然获得的信息,并且可以通过大多数设备中嵌入的惯性单元进行估计。我们还观察到我们的世界大部分是平面的,并且人和物体在室外空间中的运动大多限制在2D表面上。相机的精确高度总是可以通过局部SLAM重建中与地面的距离来估计。

输入:我们考虑一个具有已知针孔相机标定的图像𝐼I。通过使用已知重力计算的单应性矩阵对图像进行校正,使其滚动和倾斜为零,即其主轴是水平的。我们还给出了一个粗略的位置先验𝜉𝑝𝑟𝑖𝑜𝑟ξprior​。这可以是一个噪声较大的GPS位置或先前的定位估计,并且可能偏离20米以上。这对于像城市峡谷这样的多路径环境中的消费级传感器来说是一个现实的假设。 地图数据是从OSM查询的,以𝜉𝑝𝑟𝑖𝑜𝑟ξprior​为中心的正方形区域,其大小取决于先验的噪声程度。数据由一系列多边形、线和点组成,每个都有给定的语义类别,并且其坐标以相同的局部参考框架给出。

概述 - 图2:OrienterNet由三个模块组成:1)图像CNN从图像中提取语义特征,并通过推断场景的3D结构将其转换为正交鸟瞰图(BEV)表示𝑇T。2)地图CNN将OSM地图编码为嵌入语义和几何信息的神经地图𝐹F。3)我们通过将BEV与地图进行穷举匹配来估计相机姿态𝜉ξ 的概率分布

点击经典文献阅读之--OrienterNet(自动驾驶中基于网格的交通场景感知)——古月居可查看全文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/29722.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cesium按照参数绘制不同形状的船舶

俺们公司之前有个自创的所谓前端GIS框架,是用Cesium搞的。我对该框架不熟悉,用它在地图上作画,画船舶符号,看以前的代码,感觉十分艰深晦涩,什么材质、纹理,令人头大如斗。我4年前用过一阵Cesium…

Vue3学习日记(day4)

响应式状态(Vue3) methods 对于DOM的更新详解 防抖函数 少量,单组件 多组件 计算属性 可写计算属性 我们继续来对后续的文档进行探究。 响应式状态(Vue3) 响应式状态在vue3进行了修改。 在选项式API中仍然为在…

ClickHouse 高性能的列式数据库管理系统

ClickHouse是一个高性能的列式数据库管理系统(DBMS),主要用于在线分析处理查询(OLAP)。以下是对ClickHouse的详细介绍: 基本信息: 来源:由俄罗斯的Yandex公司于2016年开源。全称&…

Ubuntu18.04操作系统使用pip3安装open cv

在Ubuntu18.04操作系统环境下使用pip3安装opencv。安装方法如下: #pip3安装 sudo apt-get install python3-pip # 依赖包安装 sudo apt-get install libsm6 libxrender1 libxext6 #opencv安装;版本号自行填写 pip3 install opencv-python4.1.1.26 具体步骤 1、确认…

成都晨持绪科技:2024年抖音网店做起来难吗

随着抖音平台的日益火爆,越来越多的商家和个人开始关注并尝试开设自己的抖音网店。然而,面对激烈的市场竞争和不断变化的平台规则,许多人都在问:2024年抖音网店做起来难吗? 要回答这个问题,我们首先需要了解抖音网店的…

C# 判定字符串是否为数字的方法

方法一、使用decimal的TryParse方法 该方法只有当字符串是数字的时候,才能将字符串转换为数字并且返回结果true,否则将字符串转换为0并且返回结果false。 此方法特别适用于字符串不是数字,防止转换过程中出现异常的情况,如果字符…

【机器学习】第3章 K-近邻算法

一、概念 1.K-近邻算法:也叫KNN 分类 算法,其中的N是 邻近邻居NearestNeighbor的首字母。 (1)其中K是特征值,就是选择离某个预测的值(例如预测的是苹果,就找个苹果)最近的几个值&am…

代码随想录算法训练营第四十一天 | 01背包理论基础、416. 分割等和子集

01背包理论基础 题目链接:https://kamacoder.com/problempage.php?pid1046 文档讲解:01背包理论基础(一)、01背包理论基础(二) 视频讲解:01背包理论基础(一)、01背包理论…

Javaweb07-JavaBean技术和Jsp开发模式

JavaBean技术和Jsp开发模式 一.JavaBean技术 1.JavaBean的基本概念 **JavaBean组件:**与html分离且使用Java代码封装类 **JavaBean分类:**可视化JavaBean:swing 非可视化JavaBean:用于封装实体和业务逻辑 JavaBean特点&#x…

把Vue文件转至树莓派上遇到的问题和解决方案

把整个文件夹复制进树莓派后,运行 npm run dev ,报错sh: 1: vite: Permission denied 解决方案:删除项目里的 node_modules 重新 npm install 再运行即可 rm -rf node_modules/ npm install 在安装过程中,遇到下图问题,vulnerabi…

【热门开源项目推荐】满足不同程序员的需求与关注点

目录 前言一、热门开源项目介绍二、使用开源热门项目的优势(一)经济方面(二)技术方面(三)社区支持及协作方面 三、程序员选择项目模型建议(一)关键步骤(二)示…

掌握rpc、grpc并探究内在本质

文章目录 rpc是什么?又如何实现服务通信?理解rpcRPC的通信过程通信协议的选择小结RPC VS Restful net_rpc实践案例net/rpc包介绍创建服务端创建client 看看net_rpc的通信调度实现的内部原理明确目标基于自己实现的角度分析我会怎么做代码分析 grpc介绍与…

使用微信小程序制作画布

在这个技术飞速发展的时代,微信小程序已经成为了人们生活中不可或缺的一部分。它们可以为用户提供各种各样的功能和娱乐,其中之一就是制作画布。在本文中,我们将介绍如何使用微信小程序创建一个简单的画布应用,并为你展示如何实现…

c++实现二叉搜索树(下)

好久不见啊,baby们,小吉我又回归了,发完这一篇小吉将会有两周时间不会更新blog了(sorry),在小吉没有发blog的日子里大家也要好好学习数据结构与算法哦,还有就是别忘了小吉我❤️  这篇博客是二…

充电学习—7、BC1.2 PD协议

BC1.2(battery charging)充电端口识别机制: SDP、CDP、DCP 1、VBUS detect:vbus检测 PD(portable device,便携式设备)中有个检测VBUS是否有效的电路,电路有个参考值,高…

NumPy 双曲函数与集合操作详解

NumPy 双曲函数 NumPy 提供了 sinh()、cosh() 和 tanh() 等 ufunc,它们接受弧度值并生成相应的双曲正弦、双曲余弦和双曲正切值。 示例: import numpy as npx np.sinh(np.pi/2)print(x)示例 找到数组 arr 中所有值的双曲余弦值: import…

基于CNN的掩码自编码器微调用于分类任务

开源仓库 JJLi0427/CNN_Masked_Autoencoder: Design a patches masked autoencoder by CNN (github.com)https://github.com/JJLi0427/CNN_Masked_Autoencoder CNN自编码器 前面的文章中我们模仿MAE的思路用CNN做了一个掩码自编码器 动手小实验,用CNN来构建Mase…

python学习笔记-07

python内置函数 内置函数就是python自带的函数,不需要我们再去定义的,如print等直接使用即可,内置函数官方文档:官链。 1.数学运算 #数学运算: print(------abs()是绝对值函数------) a-1.1 print({}的绝对值是{}.fo…

MongoDB 正则表达式

MongoDB 正则表达式 MongoDB 是一个流行的 NoSQL 数据库,它提供了强大的查询功能,包括对正则表达式的支持。正则表达式是一种强大的文本搜索工具,它允许用户根据特定的模式匹配和搜索字符串。在 MongoDB 中,正则表达式可以用于查…

异常处理总结

自定义异常 ​ 系统中的异常可以分为我们能预知的异常和未知的系统异常,对于我们能预知的异常如空值判断,用户名错误,密码错误等异常我们需要返回客户端,对于系统内部异常如SQL语法错误,参数格式转换错误等需要统一包…