Get Out of My Lab: Large-scale, Real-Time Visual-Inertial Localization文章理解

本文介绍了ETH的研究,其高效全局匹配方法在maplab中得到应用,实现了无需局部匹配的实时定位。文章探讨了滤波器中观测值融合策略,并详细阐述了描述符投影、产品量化和倒排多索引等提高全局匹配效率的技术,同时引入了共视性过滤器以处理压缩描述符带来的匹配误差。

这篇文章是ETH提出的,后面在maplab中也把文章的部分思想集成进去了。这篇文章提出的全局匹配效率和准确之高,甚至不需要local的匹配就能实现实时的定位。

文章一方面提出了滤波器中,定位的观察量和VIO自己的观察量之间的融合方法。另外提出了怎么高效地和地图做全局匹配。这篇文章重点讲后面这部分:

Descriptor Projection

binary的描述符比起float的描述符在计算描述符距离和描述符压缩上面有优势。但是在KD tree的搜索方式中,因为维度太高,却反而是劣势。所以binary的描述符一般都使用暴力匹配。文章提出可以把高维的binary描述符投影到低维的浮点描述符。比如512维的binary描述符可以投影到10维的float描述符空间。

Product Quantization

10维的float描述符对KD tree搜索仍然维度太高。所以作者把10维的向量分为两个5维的向量,这样形式上把10维向量变成了2维向量。新出现的5维的向量,通过k-means聚类成256个类。这样表示一个描述符只需要知道这两个5维向量对应的聚类后的类id。也就是描述符继续压缩成2byte。压缩后的描述符对匹配上也有帮助。因为数据库里面的描述符是存的聚类的id。当我们要计算一个普通描述符和量化后的描述符的距离的时候。只需要计算普通描述符分成的两个5维向量到目标量化后的描述符的类id的距离。我们一共只有256×2个聚类中心,所以当要知道一个普通描述符和数据库中所有的量化描述符的距离的时候。可以提前把普通描述符到这256×2个聚类中心的距离算出来。后面计算距离的时候,就之需要加法运算了。

Inverted Multi-index

高维的描述符对于kd-tree方法维度太高。如果使用但存的Inverted Index方法(先聚类出多个中心,找最近点的时候,先找到离query的描述符最近的那个中心,然后在把属于这个中心的所有描述符和quary描述符做暴力匹配)。这种方法因为聚类中心会很多,所以一开始找最近的聚类中心也会非常费时。所以作者通过类似于Pro

这是目前Unity最完整的本地化系统。 支持 Unity UI,Unity 2D,TextMesh Pro,NGUI,2D ToolKit,SVG导入器,标准组件 本地化 图像,文本,声音,字体,精灵,地图集,预制件,TextMeshes,下拉列表等。 自动翻译 内置支持Google Translator,可自动将所有标签本地化为任何语言。 Google Spreadsheets和CSV文件 链接外部电子表格,即使在游戏发布后,也会自动下载任何更改。 检测并修复错误 解析场景以查找丢失或未使用的翻译以及重复或类似的术语。 子对象翻译 设置辅助术语不仅可以更改文本和图像,还可以更改每种语言使用的字体和地图集。 回调和参数 可以修改翻译以使用语法语法插入分数,名称和游戏变量。 复数 每种语言的内置规则涵盖那些只需要单数/复数形式的规则,直到那些使用6种变体的规则。 从右到左语言 正确呈现RTL语言,支持换行和对齐。 保存内存 仅使用您正在使用的字符创建字体。链接您的AssetBundles以添加更多本地化内容。 简单高效 在一个位置编辑和预览所有翻译,然后在运行时仅加载当前语言。使用快速查找来访问它。 重复使用翻译 设置文本自动显示为大写,小写,上限,标题大小等。 在游戏动态翻译 Easy API在运行时翻译聊天消息和其他动态文本 应用程序名称和商店本地化 翻译游戏名称所有语言,并在Android / IOS商店中显示您的游戏支持哪些语言 简单但功能强大的编辑器 直观的检查员允许您预览,编辑,分类,创建,解析和过滤甚至大型来源。 编译时间检查 将翻译转换为脚本常量,以避免在访问代码时使用Typos。 Playmaker 可以 快速,轻松,强大地访问本地元素和交换语言并与之交互的几种操作?没问题! 立即获取I2本地化,让您的游戏为世界做好准备!
### LIV-GaussMap 实现资源与教程 LIV-GaussMap 是一种融合了激光雷达 (LiDAR)、惯性测量单元 (IMU) 和视觉数据的实时三维辐射场地图渲染技术。该方法的核心在于结合高斯分布模型和多模态传感器输入,从而实现实时高质量的地图构建和渲染[^2]。 以下是关于如何获取或实现 LIV-GaussMap 的一些指导: #### 获取官方代码 港大 ArcLab 已经公开发布了 LVI-GS 系统的相关源码,这可以作为复现 LIV-GaussMap 的重要基础之一。可以通过访问其 GitHub 页面下载完整的代码库以及文档说明。具体链接可以在论文附录或者项目主页找到。 #### 数据集准备 为了测试和验证算法性能,需要准备相应的数据集。推荐使用以下几种常见的开源数据集合: 1. **TUM RGB-D Dataset**: 提供室内环境下的彩色图像与深度图序列。 2. **EuRoC MAV Dataset**: 含有无人机飞行过程中采集到的相机视频流及同步记录下来的 IMU/LiDAR 测量值。 3. 自定义录制的数据包也可以用于特定应用场景下评估系统的鲁棒性和适应能力。 #### 软件依赖安装指南 由于该项目涉及复杂的数值运算操作并采用了 CUDA 加速机制,因此需确保开发环境中已正确配置好如下工具链版本号匹配情况: - Python >= 3.8.x - PyTorch w/CUDA support - OpenCV-Python module - ROS middleware framework (optional but recommended) 此外还需注意某些第三方库可能存在的兼容性问题,在实际部署前应仔细阅读 README 文件内的提示信息完成必要的调整工作。 #### 关键模块解析 针对核心功能部分可重点分析以下几个方面内容: 1. 高斯过程回归(Gaussian Process Regression): 对于不确定区域采用概率密度函数形式表达未知表面特性; 2. 多分辨率网格划分(Multi-resolution Grid Partitioning): 动态分配存储空间降低内存消耗的同时提升查询速度; 3. 并行化处理策略(Parallel Processing Strategy): 利用 GPU 并发优势加快整体流程执行时间; 下面给出一段简单的伪代码展示基本逻辑框架: ```python def liv_gauss_map(frame_data, prev_state): # Step 1: Sensor data preprocessing lidar_points = preprocess_lidar(frame_data['lidar']) visual_features = extract_visual_features(frame_data['image']) # Step 2: State estimation via EKF or UKF fused_pose = estimate_fusion(prev_state, frame_data['imu'], lidar_points, visual_features) # Step 3: Gaussian splatting update updated_model = apply_splatting(fused_pose, lidar_points, visual_features) # Step 4: Radiance field optimization optimized_field = optimize_radiance(updated_model) return {'pose': fused_pose, 'model': optimized_field} ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值