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

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

  • 1. RoMe
    • 1.1 Mesh Initialization / Waypoint Sampling
    • 1.2 Optimization
    • 1.3 Experiments
  • 2. EMIE-MAP
    • 2.1 Road Surface Representation based on Explicit mesh and Implicit Encoding
    • 2.2 Optimizing Strategies
    • 2.3 Experiments
  • 3. RoGS
    • 3.1 Road Surface Representation Based on Guassian Surfels
    • 3.2 Optimization
    • 3.3 Experiments

使用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ˉj L sem  = 1 N ∗ sum ⁡ ( Mask  j ) ∑ j = 1 N Mask ⁡ j ∗ C E ( S j , S ˉ j ) L_{\text {sem }}=\frac{1}{N * \operatorname{sum}\left(\text { Mask }_j\right)} \sum_{j=1}^N \operatorname{Mask}_j * C E\left(S_j, \bar{S}_j\right) Lsem =Nsum( Mask j)1j=1NMaskjCE(Sj,Sˉj)

1.3 Experiments

RoMe在效果上做到了SOTA,其的训练速度如下(感觉还是比较慢的):
在这里插入图片描述
此外论文中提到如果光照变化强烈时RoMe的算法效果会变差

2. EMIE-MAP

EMIE-MAP发表于2024年CVPR,原论文为《EMIE-MAP: Large-Scale Road Surface Reconstruction Based on Explicit Mesh and Implicit Encoding》,RoMe在光照变化强烈时效果较差,本文就是旨在解决这个问题,算法流程如下:
在这里插入图片描述

2.1 Road Surface Representation based on Explicit mesh and Implicit Encoding

EMIE-MAP的基本数据结构和RoMe基本上是一致的,通过构建三角形网格,每个顶点上保存着位置信息、颜色和语义信息,下面我们来看下EMIE-MAP和RoME的主要区别,,

对于高度信息,RoMe是直接通过一个MLP输出实际地面高度,EMIE-MAP则是通过轨迹初始化一个地面高度,然后通过MLP输出实际地面高度与初始化地面高度的差值: z r = M L P h r ( P E ( x , y ) ) , z f = z 0 + z r z_r=M L P_{h r}(P E(x, y)), z_f=z_0+z_r zr=MLPhr(PE(x,y)),zf=z0+zr作者认为这样可减小拟合难度。

对于颜色信息,颜色信息EMIE-Map在顶点上记录的不是RGB,而是颜色的编码,然后不同相机使用不同的MLP对颜色编码进行解码才或者最终的RGB: r g b i = M L P r g b − i ( l c ) r g b_i=M L P_{r g b_{-} i}\left(l_c\right) rgbi=MLPrgbi(lc)颜色编码代码场景的物理属性,而MLP解码器则学习了不同相机的属性,因此可以解决不同相机曝光不同而导致渲染效果差的问题。

2.2 Optimizing Strategies

在数据采样策略上,作者使用了基于轨迹的采样策略来提高训练效率,具体来说就是将距离相近的轨迹点放入同一个Batch进行训练,因为训练过程会提取每个轨迹点前后80米的路面进行训练,相近的轨迹点在同一个Batch可以使得每次训练迭代都发生在一个小范围区域从而加收敛;

在渲染策略上,作者没有使用原始NeRF基于Volume的渲染策略,而是根据相机投影矩阵将顶点直接投影回图像进行渲染然后建立监督,这种方式可以进一步减少计算量。

在训练损失上,作者构建了如下训练损失: L total  = λ r g b L r g b + λ sem  L sem  + λ z L z + λ smooth  L smooth  L_{\text {total }}=\lambda_{r g b} L_{r g b}+\lambda_{\text {sem }} L_{\text {sem }}+\lambda_z L_z+\lambda_{\text {smooth }} L_{\text {smooth }} Ltotal =λrgbLrgb+λsem Lsem +λzLz+λsmooth Lsmooth 其中颜色和语义损失如下: L r g b = 1 ∣ M ∣ ∑ M ∣ C − C g t ∣ , L_{r g b}=\frac{1}{|M|} \sum M\left|C-C_{g t}\right|, Lrgb=M1MCCgt, L sem  = 1 ∣ M ∣ ∑ M ⋅ C E ( S , S g t ) ,  L_{\text {sem }}=\frac{1}{|M|} \sum M \cdot C E\left(S, S_{g t}\right) \text {, } Lsem =M1MCE(S,Sgt)如果有激光存在的话可以使用激光监督高度: L z = 1 ∣ M ∣ ∑ M ∣ z − z g t ∣ . L_z=\frac{1}{|M|} \sum M\left|z-z_{g t}\right| . Lz=M1Mzzgt.同时加上一个高度的平滑损失: L smooth  = ∑ i = 1 N ∑ j ∈ N ( i ) ∣ z i − z j ∣ 2 ,  L_{\text {smooth }}=\sum_{i=1}^N \sum_{j \in N(i)}\left|z_i-z_j\right|^2 \text {, } Lsmooth =i=1NjN(i)zizj2

2.3 Experiments

在PSNR上EMIE-MAP要全面超越RoMe:
在这里插入图片描述

从Ablation Study上我们可以看到,RGM MLP和颜色编码骑着至关重要的作用:在这里插入图片描述
从下图可以看到不同相机使用不同MLP训练渲染的地图颜色会不相同:
在这里插入图片描述

3. RoGS

RoGS发表于2024年,原论文名为《RoGS: Large Scale Road Surface Reconstruction based on 2D Gaussian Splatting》,这篇论文主要是受3D Gaussian Splatting的启发,通过2D Gaussian Spaltting的加速了道路重建的渲染效率和质量。算法流程如下:
在这里插入图片描述

3.1 Road Surface Representation Based on Guassian Surfels

在3D Gaussian Spaltting中我们将3D Gassian建模为: G ( p ) = e − 1 2 p T Σ − 1 p G(p)=e^{-\frac{1}{2} p^T \Sigma^{-1} p} G(p)=e21pTΣ1p其中 Σ \Sigma Σ为3D协方差, p p p为中心坐标,为了方便进行优化,将协方差定义为: Σ = R S S T R T \Sigma=R S S^T R^T Σ=RSSTRT其中 S = Diag ⁡ ( s x , s y , s z ) S=\operatorname{Diag}\left(s_x, s_y, s_z\right) S=Diag(sx,sy,sz),当我们将 s z s_z sz设置为 0 0 0时就得到一个2D Gaussian Surfel,每个2D Gaussian Surfel村出的信息包括: Θ = { ( x , y , z ) , ( r , g , b ) , ( s x , s y ) , α , R , Sem  } \Theta=\left\{(x, y, z),(r, g, b),\left(s_x, s_y\right), \alpha, R, \text { Sem }\right\} Θ={(x,y,z),(r,g,b),(sx,sy),α,R, Sem }其中 ( r , g , b ) (r, g, b) (r,g,b)表示颜色, α \alpha α表示透明度,在初始化阶段,高度 z z z和协方差的旋转矩阵 R R R都和轨迹点的高度以及位姿保持一致。

3.2 Optimization

2D Gaussian Surfel的渲染方式和3D Gasussian Splatting保持一致,即通过世界到相机的变换矩阵 W W W以及投影矩阵的仿射近似 J J J对协方差进行投影 Σ ′ = J W Σ W T J T \Sigma^{\prime}=J W \Sigma W^T J^T Σ=JWΣWTJT然后对深度排序进行渲染: c ( p ) = ∑ k = 1 K c k α k g k ( p ) ∏ i = 1 k − 1 ( 1 − α i g i ( p ) ) \mathbf{c}(p)=\sum_{k=1}^K \mathbf{c}_k \alpha_k g_k(p) \prod_{i=1}^{k-1}\left(1-\alpha_i g_i(p)\right) c(p)=k=1Kckαkgk(p)i=1k1(1αigi(p))由于我们有可能通过不同的相机进行渲染,因为还针对不同相机的曝光参数映入了两个可学习参数 α \alpha α b b b做最后的输出: c ′ ( p ) = e a ⋅ c ( p ) + b \mathbf{c}^{\prime}(p)=e^a \cdot \mathbf{c}(p)+b c(p)=eac(p)+b损失函数和EMIE-MAP是保持一致的,即 L total  = λ color  L color  + λ sem  L sem  + λ smooth  L smooth  + λ z L z L_{\text {total }}=\lambda_{\text {color }} L_{\text {color }}+\lambda_{\text {sem }} L_{\text {sem }}+\lambda_{\text {smooth }} L_{\text {smooth }}+\lambda_z L_z Ltotal =λcolor Lcolor +λsem Lsem +λsmooth Lsmooth +λzLz

3.3 Experiments

如下是RoMe和RoGS的结果对比:
在这里插入图片描述
可以看到RoGS有15倍的速度提升,同时在渲染效果上也有变好,如下是结果对比图:
在这里插入图片描述
在论文中作者并没有展示多相机渲染的效果

以上就是最近看的三篇使用NeRF对路面进行重建的算法,在实际的工程应用中,其实用传统算法就能达到一个不错的基本面,NeRF Like的方法或者之后在纯视觉方案或者多相机重建这种更难的任务上能发挥作用吧

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

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

相关文章

Uniapp鸿蒙项目实战

Uniapp鸿蒙项目实战 24.7.6 Dcloud发布了uniapp兼容鸿蒙的文档:Uniapp开发鸿蒙应用 在实际使用中发现一些问题,开贴记录一下 设备准备 windows电脑准备(家庭版不行,教育版、企业版、专业版也可以,不像uniapp说的只有…

Promise 详解(原理篇)

目录 什么是 Promise 实现一个 Promise Promise 的声明 解决基本状态 添加 then 方法 解决异步实现 解决链式调用 完成 resolvePromise 函数 解决其他问题 添加 catch 方法 添加 finally 方法 添加 resolve、reject、race、all 等方法 如何验证我们的 Promise 是否…

分布式搜索之Elasticsearch入门

Elasticsearch 是什么 Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。 Elastic Stack 又是什么呢&a…

企业须善用数字化杠杆经营获取数字化时代红利

​在当今数字化时代,企业面临着新机遇和新挑战。数字化技术的迅速发展正在重塑商业格局,企业若能善用数字化杠杆经营,将能够在激烈的市场竞争中脱颖而出,获取丰厚的时代红利。 数字化杠杆的内涵 数字化杠杆是指企业借助数字化技术…

SAPUI5基础知识16 - 深入理解MVC架构

1. 背景 经过一系列的练习,相信大家对于SAPUI5的应用程序已经有了直观的认识,我们在练习中介绍了视图、控制器、模型的概念和用法。在本篇博客中,让我们回顾总结下这些知识点,更深入地理解SAPUI5的MVC架构。 首先,让…

Android 性能优化之卡顿优化

文章目录 Android 性能优化之卡顿优化卡顿检测TraceView配置缺点 StricktMode配置违规代码 BlockCanary配置问题代码缺点 ANRANR原因ANRWatchDog监测解决方案 Android 性能优化之卡顿优化 卡顿检测 TraceViewStricktModelBlockCanary TraceView 配置 Debug.startMethodTra…

XMl基本操作

引言 使⽤Mybatis的注解⽅式,主要是来完成⼀些简单的增删改查功能. 如果需要实现复杂的SQL功能,建议使⽤XML来配置映射语句,也就是将SQL语句写在XML配置⽂件中. 之前,我们学习了,用注解的方式来实现MyBatis 接下来我们…

【STM32】按键控制LED光敏传感器控制蜂鸣器(江科大)

一、按键控制LED LED.c #include "stm32f10x.h" // Device header/*** 函 数:LED初始化* 参 数:无* 返 回 值:无*/ void LED_Init(void) {/*开启时钟*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENAB…

数据结构(稀疏数组)

简介 稀疏数组是一种数据结构,用于有效地存储和处理那些大多数元素都是零或者重复值的数组。在稀疏数组中,只有非零或非重复的元素会被存储,从而节省内存空间。 案例引入 假如想把下面这张表存入文件,我们会怎么做?…

超简单安装指定版本的clickhouse

超简单安装指定版本的clickhouse 命令执行shell脚本 idea连接 命令执行 参考官网 # 下载脚本 wget https://raw.githubusercontent.com/183461750/doc-record/d988dced891d70b23c153a3bbfecee67902a3757/middleware/data/clickhouse/clickhouse-install.sh # 执行安装脚本(中…

记录些Spring+题集(12)

11种API性能优化方法 一、索引优化 接口性能优化时,大家第一个想到的通常是:优化索引,优化索引的成本是最小的。 你可以通过查看线上日志或监控报告,发现某个接口使用的某条SQL语句耗时较长。 这条SQL语句是否已经加了索引&…

PHP Program to print pyramid pattern (打印金字塔图案的程序)

编写程序打印由星星组成的金字塔图案 例子 : 输入:n 6输出: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 我们强烈建…

基于术语词典干预的机器翻译挑战赛笔记Task2 #Datawhale AI 夏令营

上回: 基于术语词典干预的机器翻译挑战赛笔记Task1 跑通baseline Datawhale AI 夏令营-CSDN博客文章浏览阅读718次,点赞11次,收藏8次。基于术语词典干预的机器翻译挑战赛笔记Task1 跑通baselinehttps://blog.csdn.net/qq_23311271/article/d…

Linux网络:应用层协议HTTP(一)

一、什么是HTTP协议 虽然我们说, 应用层协议是我们程序猿自己定的. 但实际上, 已经有大佬们定义了一些现成的, 又非常好用的应用层协议, 供我们直接参考使用. HTTP(超文本传输协议)就是其中之一。 在互联网世界中,HTTP(HyperText Transfer Protocol&…

【考研数学】线代满分经验分享+备考复盘

我一战二战复习都听了李永乐的线代课,二战的时候只听了一遍强化,个人感觉没有很乱,永乐大帝的课逻辑还是很清晰的。 以下是我听向量这一章后根据听课内容和讲义例题总结的部分思维导图,永乐大帝讲课的时候也会特意点到线代前后联…

基于百度地图API实现地图位置选取的移动端页面开发教程 (JQuery+Html+JavaScript+CSS)

本文详细讲解了如何使用百度地图API实现移动端页面中的地图位置选取功能。文章首先介绍了百度地图API的2.0和3.0版本功能,并重点采用3.0 API。接着,逐步展示了如何构建基本的地图页面,如何通过点击地图获取经纬度和地理信息,以及如…

uniapp vue3 上传视频组件封装

首先创建一个 components 文件在里面进行组件的创建 下面是 vvideo组件的封装 也就是图片上传组件 只是我的命名是随便起的 <template><!-- 上传视频 --><view class"up-page"><!--视频--><view class"show-box" v-for"…

【Android面试八股文】荣耀面试算法题:输入一个N阶方阵(0<N<10),输出此方阵顺时针旋转M(0<=M<=10000)次后的方阵

文章目录 1. 算法题:输入一个N阶方阵(0<N<10),输出此方阵顺时针旋转M(0<=M<=10000)次后的方阵1.1 题目描述1.2 算法实现1.2.1 步骤说明:1.2.2 算法实现1.2.3 代码实现:1.2.4 程序说明:1.2.5 示例详细讲解如何将一个矩阵顺时针旋转90度1. 算法题:输入一个N阶方…

达梦数据库DM8-索引篇

目录 一、前景二、名词三、语法1、命令方式创建索引1.1 创建索引空间1.2.1 创建普通索引并指定索引数据空间1.2.2 另一种没验证&#xff0c;官方写法1.3 复合索引1.4 唯一索引1.5 位图索引1.6 函数索引 2、创建表时候创建索引3、可视化方式创建索引3.1 打开DM管理工具3.2 找到要…

生成式人工智能落地校园与课堂的15个场景

生成式人工智能正在重塑教育行业&#xff0c;为传统教学模式带来了革命性的变化。随着AI的不断演进&#xff0c;更多令人兴奋的应用场景将逐一显现&#xff0c;为学生提供更加丰富和多元的学习体验。 尽管AI在教学中的应用越来越广泛&#xff0c;但教师们也不必担心会被完全替代…