基于NeRF的路面重建算法——RoME / EMIE-MAP / RoGS

使用NeRF进行路面重建的思路要从Tesla AI Day的下面这页PPT说起:
在这里插入图片描述
地面重建的目的主要用于BEV框架下的道路结构的真值标注或者网络训练,好处主要是可以基于MLP进行颜色、语义等信息的融合并保持光滑,三年过去了有几篇和该方法相关的论文,本文进行一个简单的总结

1. RoMe

RoMe是地平线2023年发布的一篇Paper,原论文为《RoMe: Towards Large Scale Road Surface Reconstruction via Mesh Representation》,该论文将路面分解为三角形网格,通过隐式建模来恢复路面的高程信息以及Pytorch3D来进行颜色和语义渲染,基于Waypoint采样进行分块渲染来实现对大规模场景的重建,算法流程图如下图所示:在这里插入图片描述

1.1 Mesh Initialization / Waypoint Sampling

RoMe算法的基本数据结构是三角形网格,每个三角网格的顶点上存储着位置 ( x , y , z ) (x, y, z) (x,y,z),颜色 ( r , g , b ) (r, g, b) (r,g,b)和语义等信息,三角形网格初始化是在自车位姿附近采样一系列的半稠密点 ( x , y ) (x, y) (x,y)作为顶点,这些顶点的高度 z z z初始化为自车位姿高度减去自车高度,后续优化过程中高度 z z z通过一个Elevation MLP输出,如上图(b)所示,作者在Ablation Study中提到,如果将高度 z z z直接作为一个优化变量会导致地面不够平滑,增加一个Elevation MLP主要是为了保持地面的平滑性,如下图所示:
在这里插入图片描述

为了实现对大规模场景进行渲染,作者使用了Waypoinnt Sampling的策略来提高效率,其核心思想就是分而治之,具体算法流程如下
在这里插入图片描述
简而言之就是先通过随机选取一个位姿点构建一个子区域进行训练优化,该子区域会覆盖一部分位姿,然后迭代贪婪地选取未被覆盖的位姿点中最远的一个构建子区域进行训练优化,直到左右位姿点被覆盖到,如下是示意图:
在这里插入图片描述

1.2 Optimization

RoMe的优化主要分为两部分:

第一部分是相机位姿的优化,相机位姿优化的主要是相机到车体的标定;

第二部分网格的优化,这部分优化的主要是三角形网格节点中存储的RGB、语义以及Elevation MLP,作者使用先Pytorch3D完成渲染,然后再图片上构建损失函数,渲染部分为: [ C j , S j , D j ,  Mask  j ] = MeshRender ⁡ ( π j , M ) \left[C_j, S_j, D_j, \text { Mask }_j\right]=\operatorname{MeshRender}\left(\pi_j, M\right) [Cj,Sj,Dj, Mask j]=MeshRender(πj,M)其中 C j , S j C_j, S_j Cj,Sj D j D_j Dj分别代表第 j j j帧的RGB、语义和深度图,  Mask  j \text { Mask }_j  Mask j指定了图片上需要监督的部分,具体的渲染过程作者也没有在论文里详述,只是介绍了下是如何定义Pytorch3D模型中pixel-to-faces、z-buffers等输入变量,因为笔者对这部分也不是很了解因此不再深入展开,渲染后构建的损失主要包括RGB损失和语义损失两部分: L color  = 1 N ∗ sum ⁡ ( Mask ⁡ j ) ∑ j = 1 N Mask ⁡ j ∗ ∣ C j − C ˉ j ∣ L_{\text {color }}=\frac{1}{N * \operatorname{sum}\left(\operatorname{Mask}_j\right)} \sum_{j=1}^N \operatorname{Mask}_j *\left|C_j-\bar{C}_j\right| Lcolor =Nsum(Maskj)1j=1NMaskj CjC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值