ROME学习笔记

相关文档

Introduction

  • 提出 waypioint 采样方法,每个只渲染局部的区域,然后再合并到一起
  • 同时可以估计外参
  • 作者提到道路表面的重建可以辅助 BEV 模型的训练和验证,目前主要分为两种方法:传统的方法和基于 NeRF 的方法
    • 传统方法包括 MVS,可以生成稠密点云,但要求有清晰的纹理特征。在处理均匀纹理时可能出现噪点或者不完整的结果(空洞?),并且计算量很大
    • NeRF-based 的方法,使用 MLP 做隐式表达,输入一组带 pose 的图像,可以生成对应的高质量纹理,但需要大量的 GPU 资源,不太好适应大尺度的场景。
  • 因此 RoME 的方法是:
    • 提出了一个 2D 的隐式路面表达方法,来实现道路表面的重建
    • 使用 waypoint 采样的方法,来降低内存和时间复杂度

Approaches

  • 主要分成三个部分,Mesh 初始化、waypoints 采样、和优化

Mesh Initialization

  • 文章使用ORB-SLAM2的pose来初始化mesh。文章使用ORB-SLAM得到相机的每一帧位姿,同时使用Mask2Former来分割语义信息。
  • Mesh初始化的方法主要参考:StreetSurf
    • 水平延伸自车位姿来得到半稠密的点云,然后把些点放到一个MLP网络中,输入xy的坐标,输出z值(用MLP来拟合一个地面表示)。并对xy的值做位置编码,用MLP是为了通过调整PE的评率来控制路面的平滑度

z=MLP(PE(x,y))z = MLP(PE(x, y))

Waypoint Sampling

  • 这里使用最远点采样的方法对输入的相机pose做了一次采样,每次选取部分采样点后,就只用这几个图片训练当前epoch就行了,而不需要全部图片。

  • 个人认为,这里的采样除了可以加速以外,还有一个原因是因为用的ORB-SLAM的位姿,这个位姿会有误差,如果全部图片都用上的话,模型不太能把位置误差估计出来,导致有重影。而经过位置采样后,每个epoch中,每个范围只由一张image来训练,其他的误差不会引入进来,最后渲染的mesh就会更清晰。

Optimization

  • 优化了两个部分,外参优化和RGB+语义的Mesh优化

外参优化

  • 旋转矩阵用轴和轴角表示。在优化中同时估计旋转和平移,来实现外参优化。
  • 使用Rodrigues公式,将轴角表示的旋转矩阵转换为旋转向量

R=I+sin(α)αϕ^+1cos(α)α2(ϕ^)2R = I + \frac{\sin(\alpha)}{\alpha} \phi^{\hat{}} + \frac{1 - \cos(\alpha)}{\alpha^2} (\phi^{\hat{}})^2

其中()^(*)^{\hat{}}表示向量转成反对称矩阵

Mesh优化

  • 使用当前mesh来渲染waypoint的图像,然后RGB使用L1 Loss,语义信息使用交叉熵Loss

Result


ROME学习笔记
https://fansaorz.github.io/2024/04/14/ROME详解/
作者
Jiashi Zhang
发布于
2024年4月14日
许可协议