自动驾驶三维重建
大概八成估计是未来的科研方向了
文章目录
- 自动驾驶中的NeRF
- [4]CLONeR:
- Urban Radiance Fields
- [6]S-NERF
- Block-NeRF
- Switch-NeRF
- SceneRF
- Behind the Scenes
- 大规模与自动驾驶场景重建:3D高斯
- VastGaussian
- Periodic Vibration Gaussian(复旦大学)
- DrivingGaussian
自动驾驶中的NeRF
自动驾驶领域的NeRF方法,大部分是在做自动驾驶场景里的环境重建,对大规模无边界场景的重建
自动驾驶和Nerf的交集目前停留在深度估计和环境重建上面
想要做城市级别的场景重建,要用到多个MLP,在重建的过程中可以用雷达作为监督,但实际上雷达能够直接提供空间网格的占用信息,用这一点搭建基于体素的混合隐式场景表达是个很好的思路
未来的思路:要让Nerf和占用网格结合在一起,这样才能真正进入自动驾驶的核心系统中
[2] Plenoxels: Radiance Fields without Neural Networks, CVPR 2022,arXiv:2112.05131
[3] Grid-Centric Traffic Scenario Perception for Autonomous Driving: A Comprehensive Review, 2023, arXiv:2303.01212
[4] CLONeR: Camera-Lidar Fusion for Occupancy Grid-aided Neural Representations, 2022, arxiv 2209.01194
[5] Urban Radiance Fields, CVPR 2022, arXiv:2111.14643
[6] S-NeRF: Neural Radiance Fields for Street, ICLR 2023, arXiv:2303.00749
[7] Block-NeRF: Scalable Large Scene Neural View Synthesis, CVPR 2022, arXiv:2202.05263
[8] Switch-NeRF: Learning Scene Decomposition with Mixture of experts for Large-sacle Neural Radiance Fields, ICLR 2023, https://openreview.net/pdf?id=PQ2zoIZqvm
[9] SceneRF: Self-Supervised Monocular 3D Scene Reconstruction with Radiance Fields, 2023, arXiv:2212.02501
[10] Behind the Scenes: Density Fields for Single View Reconstruction, 2023, arXiv:2301.07668
[4]CLONeR:
使用占用网格,与自动驾驶联系紧密
在室外的无边界场景里面,NeRF的采样射线并不知道自己该在哪儿终止,于是用占用网格来作为辅助,让NeRF在被占据的(存在场景几何的地方采样),这相较于原版NeRF粗糙的均匀采样会更好
缺点:用两个MLP+一个占用网格地图表示一个大场景,NeRF那边已经有体素里储存特征向量,这样的混合场景表达方法来做类似的事情
改进点:让占用网格储存特征向量,这样在保留新视角合成能力的同时,还能实现地图扩展,不受MLP限制
Urban Radiance Fields
实现了对城市级场景的重建
解决:采集的图像里光照条件会不一致,作者对图像的曝光进行隐式的编码,再用神经网络将它转化为一个颜色仿射变换,让图像能够有一致的外观
对于无边界的采样,采用圆拱形结构来建模天空
在训练的时候用了一个语义分割,把天空在图像中的位置给mask出来
对画面里动态的人或者车,也用语义模型mask掉
用一个MLP来存储大型的室外场景,显然MLP容量有限,在一系列的场景数据到来的时候,网络会更倾向于学到后面的数据,或者渲染出这些场景混在一起的样子(遗忘问题)
解决问题:1.用多个MLP 2.不用MLP换成点云体素之类的表达方式
[6]S-NERF
在重建自动驾驶场景的背景同时,也重建了路上移动的车辆
同样是用相机和雷达两种传感器,把背景和车辆分开建模
对于背景,S-NeRF用了一个半径参数来确定地图边界,然后把地图的内容归一化到这个边界里面
对于车辆,为了得到车辆的Nerf模型,S-NeRF先用一个3D目标检测得到车辆的bounding box,然后把和目标车辆相关的视角,变换到以车辆为中心的坐标系下,这样对于一辆车可以得到2到6张照片
为了得到更好的效果,S-NERF先用一个现有方法从这几个视角的图像和雷达点云里去生成粗糙的mesh,从中渲染出一个稠密的深度图来做监督,背景已经用语义分割模型去除掉了
S-NeRF还设计了一些深度补全的方法来从含有噪声的稀疏的雷达点云获得稠密的高质量的深度图
缺点:单个MLP对大型场景的拟合能力
Block-NeRF
把场景分解成多个单独的NeRF分开训练,从而让建模能够扩展到任意大的场景,允许每个场景的Block单独更新
虚线黄圈是每个NeRF的可见半径,针对target view的目标位置,如果它处于某个NeRF的可见半径内,那就去渲染一张RGB图,并根据距离预测一个能见度,如果能见度太低就会被舍弃,最后根据能见度和渲染的RGB,把所有可见的NeRF得到的图像融合成为target view的RGB图
和原本NeRF的区别:左下角加上了曝光和外观编码,这样让MLP去学到输入图像的光照条件,从而让建模过程不受光照变化的影响
缺点:对NeRF本身没有多少改进,仍然会收到NeRF重建缺陷的制约,比如需要很多训练数据,不能实时,还需要手工设置这些MLP的位置,不能自适应调整去扩展
Switch-NeRF
实现了一个端到端的用基于学习的场景分解方法的大规模场景NeRF重建
对于Switch-NeRF来说,MoE是这样实现的:
从左下角生成了一个3d采样点,把这个采样点的位置进行编码得到PE(x),PE(x)的值经过一个门控网络得知它应该被送往专家2去重建
因为专家2是负责这个PE(x)位置重建的,就是一个MLP
专家2的输出结果再接一个head去预测得到RGB和体密度
也就是对于大规模场景的重建,Switch-NeRF把地图划分为很多个MLP来储存,为了把这些MLP组织起来,搭建了这个MoE系统,让每个专家负责一个MLP,通过训练过程学习该怎么给各个专家分配任务,同时也培养了每个专家的重建能力,最终协作实现重建
SceneRF
借助NeRF来实现单目重建的方法,具有新视角合成和新深度合成
从输入图像里面提取特征体积,划定重建范围,然后在这个范围内沿着一条假想的路径去生成多个新视角,对每个新视角合成一个新深度,用这些深度去估计一个三位重建的结果,从而去和ground truth求loss来优化
作者设计了一个概率射线采样策略,把沿着每条射线的连续密度通过MLP转换为一个一维高斯混合,通过学习能够让这些高斯混合的比较大的值接近真实的表面位置,这样就能显著减少采样点
这里的监督就来自NeRF对颜色和深度的预测,作者实现每条线仅用64个点,就能完成100米射线上的采样
NeRF的渲染是被设定在一定体积内的,也就是场景里面的特征体积,为了跳出这个限定的特征体积,作者提出了带有球形解码器的U-Net用来放大视场,生成原图像视场之外的图像和深度
具有一定的泛化能力
Behind the Scenes
从输入的图像里去预测一个隐式密度场来描述当前视角下的平截头体范围内的体密度分布,这个密度场里不储存颜色信息,在渲染新视角时,像素的颜色是从输入图像里变换过来的
这篇论文的工作:在生成隐式密度场的编解码器上
大规模与自动驾驶场景重建:3D高斯
3D高斯工作的辛苦整理 github仓库
近期工作有:
VastGaussian:用来重建大规模场景
Street Gaussian :建模动态的城市场景
DrivingGaussian:重建动态的自动驾驶场景
Periodic Vibration Gaussian:动态城市场景重建和实时渲染
都是基于3D GS的大规模室外场景重建方法,后3篇是针对自动驾驶场景做的重建(动态内容)
VastGaussian
第一个基于3D GS的高质量的,并且能够实时渲染的大规模场景重建方法
对标的是Mega-NeRF和Switch-NeRF,属于NeRF时代的大规模场景重建方法
利用分区域的逐步构建辐射场的方法来减少计算压力
用解耦的外观模型来去除光照对建模的影响
直接在3d gs模型里渲染出来的图,它不考虑光照,所以和GT图像之间是有误差的,即便建模很准确,光照也会造成误差(漂浮的光斑)
解决方法是把模型和光照解耦,模型渲染出来之后的内容用CNN添加光照信息,做外观修正之后就能和GT图像保持一致
这时候求误差就不会受到光照变化的干扰,这样模型就能够专注地去学习几何,以及一个光照比较平均的外观
Periodic Vibration Gaussian(复旦大学)
自动驾驶下的场景重建,但是多了动态物体和视角的限制
主打的是动态的城市街景重建
对于高斯点来说,均值是它所在的位置,PVG这样的建模能偶控制它的移动,建模它在不同时刻出现在不同的位置
不透明度可以看作是它是否可见,也让它与时间建立关联
PVG思路是让时间参与建模,相当于建模每一时刻的场景,但并不是作用在整个场景上的,并不是每个时刻都建一个模型出来,而是精确地作用在每个高斯点上,作用在表示位置的均值和表示可见性的不透明度上
前景的动态物体就可以用短生命周期的PVG来建模
静态的背景物体就可以用长生命周期的PVG来表示
具体流程是这样的:
先查询t-▲t时刻的状态,在这个时刻下去计算一个速度v,蓝色箭头就是v的方向
v乘以▲t就是点该移动的距离,用这个v来预测t时刻下的PVG点的位置,拿这个位置来做渲染
把渲染结果和t时刻的GT数据求误差
并不是直接拿t时刻的PVG点来做渲染,而是用▲t之前的点去预测t时刻的状态,再拿预测的t时刻的点做t时刻下的训练的监督,相当于动态过程参与训练,从而对运动有更好的学习效果
DrivingGaussian
相关文章:

自动驾驶三维重建
大概八成估计是未来的科研方向了 文章目录 自动驾驶中的NeRF[4]CLONeR:Urban Radiance Fields[6]S-NERFBlock-NeRFSwitch-NeRFSceneRFBehind the Scenes 大规模与自动驾驶场景重建:3D高斯VastGaussianPeriodic Vibration Gaussian(复旦大学)…...
30分钟学会css
CSS 基本语法 CSS(Cascading Style Sheets)是一种样式表语言,用于描述 HTML(或 XML)文档的呈现。它可以控制网页元素的颜色、字体、布局等外观样式,实现内容与表现的分离,让网页设计更加灵活和…...

vue路由模式面试题
vue路由模式 1.路由的模式有哪些?有什么区别? history和hash模式 区别: 1.表现的形态不同: 在地址栏url中:hash模式中带有**#**号,history没有 2.请求错误时表现不同: 在hash模式中,对于404地址请求时,不会进行请求 但是在history模式中,对于404请求时,仍然会进行请求…...
Python 开发框架搭建简单博客系统:代码实践与应用
在当今数字化时代,博客作为一种流行的信息分享和交流平台,拥有广泛的受众。Python 以其强大的功能和丰富的库,为构建博客系统提供了理想的技术支持。本文将详细介绍如何利用 Python 开发框架搭建一个简单博客系统,包括功能实现、代…...

如何在 VSCode 中配置 C++ 开发环境:详细教程
如何在 VSCode 中配置 C 开发环境:详细教程 在软件开发的过程中,选择一个合适的开发环境是非常重要的。Visual Studio Code(VSCode)作为一款轻量级的代码编辑器,凭借其强大的扩展性和灵活性,受到许多开发者…...

三甲医院等级评审八维数据分析应用(一)--组织、制度、管理可视化篇
一、引言 1.1 研究背景与意义 在当今医疗领域,三甲医院作为医疗服务的核心载体,肩负着保障民众健康、推动医学进步的重任。随着信息技术的飞速发展,数据已成为医院运营管理、医疗质量提升以及科学决策的关键要素。三甲医院等级评审作为衡量医院综合实力与服务水平的重要标…...

2024 年度总结|勇敢去探索~
写作这件事,果然是一旦中断,就很难再拾起来。但年度总结这么有意义的话题,思来想去,万万不能落下。 工作 得益于同事们的帮衬和认可,年初的时候,我的角色发生了变化:需要开始承担部门内的一些…...

2024年, Milvus 社区的那些事
随着跨年钟声响起,2024 年告一段落。这一年,Milvus GitHub Stars 正式突破 3 万大关,Docker 下载量突破6700w 次,达到一个新的里程碑,在开源向量数据库领域继续引领前行。在这遥遥领先的数据背后,不妨让我们…...

vue代理问题
vue代理问题 场景:前后端分离项目问题,在前端中请求接口,返回数据这个过程,但是在这个过程中,前端会有两个环境,一个是开发环境,一个是生产环境. 在开发环境中请求接口可能会遇到跨域问题,比如请求的端口是3000,当前端口是8080,这时候就会遇到跨域问题,或者ip不同,也会存在跨…...

Git快速入门(三)·远程仓库GitHub以及Gitee的使用
目录 1. 远程仓库GitHub 1.1 登录 1.2 创建库 1.3 创建文件 1.4 修改文件 1.5 创建分支 1.6 删除库 1.7 将远程仓库下载到本地 1.7.1 关联登录 1.7.2 克隆 1.7.3 通过GitHub Desktop更改远程库 2. 远程仓库Gitee 2.1 登录 2.2 创建文件 2.3 关联…...
[开源]C++代码分享
一,声明 被人水平有限,开源只是为了分享。勿喷!!!还请大佬指点。 二,代码 // --------------------------------------------------------- 头文件 ----------------------------------------------- #in…...

CSS3——3. 书写格式二
<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title></head><body><!--css书写:--><!--1. 属性名:属性值--><!--2.属性值是对属性的相关描述--><!--3.属性名必须是…...
PHP语言的计算机基础
计算机基础与PHP语言入门 在当今信息技术高速发展的时代,计算机已经成为我们日常生活中不可或缺的重要工具。学习计算机基础知识,不仅能增强我们对信息技术的理解,还会为我们后续学习编程语言打下良好的基础。本文将以PHP语言为切入点&#…...
第 23 章 JSON
第 23 章 JSON 23.1 语法 JSON 语法支持表示 3 种类型的值。 ❑ 简单值:字符串、数值、布尔值和 null 可以在 JSON 中出现,就像在 JavaScript 中一样。特殊值 undefined 不可以。 ❑ 对象:第一种复杂数据类型,对象表示有序键/值…...
Java 正则表达式入门与应用(详细版)
正则表达式(Regular Expression,简称Regex)是一种文本模式匹配工具,在许多编程语言中都得到了广泛应用。Java 作为一种强大的编程语言,提供了对正则表达式的内建支持,使得在字符串处理、数据验证和文本解析…...
洛谷:P1540 [NOIP2010 提高组] 机器翻译
[NOIP2010 提高组] 机器翻译 题目背景 NOIP2010 提高组 T1 题目描述 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于…...

基于AT89C51单片机的可暂停八路抢答器设计
点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/90196607?spm1001.2014.3001.5503 C15 部分参考设计如下: 摘要 随着社会进步和科技发展,电子设备在各类活动中的应用日益普遍,…...

面试题解,Java中的“对象”剖析
一、说一说JVM中对象的内存布局?new一个对象到底占多大内存? 话不多说,看下图,对象的内存布局图 一个对象的内存布局主要由三部分组成:对象头(Object Header)、实例数据(Instance D…...
行为模式3.迭代器模式
行为型模式 模板方法模式(Template Method Pattern)命令模式(Command Pattern)迭代器模式(Iterator Pattern)观察者模式(Observer Pattern)中介者模式(Mediator Pattern…...

第8章 DMA控制器
DMA的基本概念 DMA是用硬件实现不再通过CPU的,计算机内存储器与I/O设备之间的直接数据传送技术。该硬件称为DMA控制器(简称DMAC),用来控制数据的输入和输出,复杂性堪比CPU。 DMA方式可实现: 数据存储器RAM→I/O端口的DMA读传送I/O…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...

7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...

springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...

java高级——高阶函数、如何定义一个函数式接口类似stream流的filter
java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用(Math::max) 2 函数接口…...

负载均衡器》》LVS、Nginx、HAproxy 区别
虚拟主机 先4,后7...
简单介绍C++中 string与wstring
在C中,string和wstring是两种用于处理不同字符编码的字符串类型,分别基于char和wchar_t字符类型。以下是它们的详细说明和对比: 1. 基础定义 string 类型:std::string 字符类型:char(通常为8位)…...

aurora与pcie的数据高速传输
设备:zynq7100; 开发环境:window; vivado版本:2021.1; 引言 之前在前面两章已经介绍了aurora读写DDR,xdma读写ddr实验。这次我们做一个大工程,pc通过pcie传输给fpga,fpga再通过aur…...